Какие есть приемы вывода кода в полях ? На подобии виджетов .

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#1 21 февраля 2023 в 17:01

Спасибо всем кто помогает, чем больше изучаю безграничные возможности  движка тем больше вопросов и идей )

Вопрос :

Например виджетами можно выводить что угодно создавая новые шаблоны в файлах и просто выбирая их по вкусу .

Как быть с полями? Какие есть приемы, что бы можно было создать поле, там выбрать поле свой заготовленный файл ( шаблон) и вывести его в нужной последовательности как все поля. 

В шаблоне я могу вывести либо вверху либо в низу, но не между полей. ( опытные скажут что можно и между прописывая условия. Но мне интересен такой прием что описал ) 

#2 21 февраля 2023 в 17:25

В полях почти никаких приемов нет. Шаблон для поля не выбрать, но можно создавать (писать код) свои поля в любом количестве и качестве. Вам надо создать поле — нечто среднее между полем «Файл» и «Сквозной HTML», тогда сможете выбирать файл и и выводить в нем данные своего поля.

#3 21 февраля 2023 в 17:47

Скачайте в каталоге поле «Навигация», там можно подсмотреть пример подключения отдельного шаблона в полях.

Поле навигации
Поле

Поле навигации

от Fuze
Скачать 4 409 загрузок

#4 21 февраля 2023 в 18:09

Скачайте в каталоге поле «Навигация», там можно подсмотреть пример подключения отдельного шаблона в полях.

Поле навигации
Поле

Поле навигации

от Fuze
Скачать 4 409 загрузок

Нифигаccе о-го-гошеньки

Подсмотреть, это для тех кто понимает )

Мне бы создать несколько файлов в систем и темплет  и показать где что править в последующих шаблонах и куда вставлять то что хочу вывести . 

Если есть желание пишите в личку. Поработаем 

#5 21 февраля 2023 в 19:15

Мне бы создать несколько файлов в систем и темплет  и показать где что править в последующих шаблонах и куда вставлять то что хочу вывести

Happy

Да простит меня Fuze)) Вырезка из поля навигации. Создаем в папке system/fields файл mtfield.php с таким содержимым:

  1. <?php class fieldMtfield extends cmsFormField {
  2.  
  3. public $title = 'Поле с разными шаблонами';
  4. public $sql = 'TINYINT(1) UNSIGNED NULL DEFAULT 1';
  5. public $is_virtual = true;
  6. public $allow_index = false;
  7.  
  8. public function getOptions() {
  9.  
  10. return [
  11. new fieldList('template', [
  12. 'title' => 'Шаблон для вывода',
  13. 'hint' => 'Файл из директории assets/fields/ шаблона, название которого начинается на mtfield',
  14. 'generator' => function () {
  15. $current_tpls = cmsCore::getFilesList('templates/' . cmsConfig::get('template') . '/assets/fields/', 'mtfield*.tpl.php');
  16. $default_tpls = cmsCore::getFilesList('templates/default/assets/fields/', 'mtfield*.tpl.php');
  17. $tpls = array_unique(array_merge($current_tpls, $default_tpls));
  18. $items = [];
  19. if ($tpls) {
  20. foreach ($tpls as $tpl) {
  21. $items[str_replace('.tpl.php', '', $tpl)] = str_replace('.tpl.php', '', $tpl);
  22. }
  23. asort($items);
  24. }
  25. return $items;
  26. }
  27. ])
  28. ];
  29.  
  30. }
  31.  
  32. public function parse($value) {
  33. $current_date = date('d.m.Y H:i:s');
  34. $template = cmsTemplate::getInstance();
  35. return $template->renderFormField($this->getOption('template'), [
  36. 'value' => $value, // здесь передаем в шаблон любые значения, их можно получить выше перед $template
  37. 'date' => $current_date // в шаблоне будет использоваться переменная $date
  38. ]);
  39. }
  40.  
  41. public function getInput($value) {
  42. return '';
  43. }
  44.  
  45. public function store($value, $is_submitted, $old_value = null) {
  46. return 1;
  47. }
  48.  
  49. }
  50.  

Теперь в папке templates/default/assets/fields создайте файл mtfield.tpl.php — в нем уже любой html-php код, mtfield_date.tpl.php, mtfield_abrakadabra.tpl.php и т.д. Вот пример содержимого в файле mtfield_date.tpl.php:

  1. содержимое шаблона date<br><?php echo $date;

Вот и все дела. Вот тут пример: nifigasse.ru/board/10-mustang.html

Изображение

#6 21 февраля 2023 в 20:14

Все, разобрался. нашел поле. Вообще супер приём. спасибо большое. напишите реквизиты для Доната 

#7 21 февраля 2023 в 21:56

реквизиты для Доната 

Happy

Это код Fuze, его и благодарите: instantcms.ru/donate.html

#8 22 февраля 2023 в 00:38

Почему то не хотят выводится коды которые выводятся в шаблоне, даже элементарное <?php html($item['title']); ?>

#9 22 февраля 2023 в 00:46

Почему то не хотят выводится коды которые выводятся в шаблоне, даже элементарное <?php html($item['title']); ?>

Happy

Изображение

Вы не передавали в шаблон $item, поэтому и не выводится. Попробуйте так:

  1. return $template->renderFormField($this->getOption('template'), [
  2. 'item' => $this->item
  3. ]);
  1. содержимое шаблона date: <?php echo $date; ?><br>и здесь же заголовок: <?php html($item['title']);

nifigasse.ru/board/10-mustang.html

Изображение

#10 22 февраля 2023 в 01:03

 Нифигаccе о-го-гошеньки, все!!! теперь все четко!!! Человечище! 

#11 3 мая 2023 в 20:13

Подскажите как этим методом вывести настроенный виджет по Id или ещё как. 

#12 3 мая 2023 в 21:08

 awanport, скорее всего никак. В движке сперва идет формирование содержимого контента, потом — виджетов.

Есть ухищрения, но не стоит их использовать. Лучше пересмотреть необходимость вывода виджета полем и найти другое решение.

#13 3 мая 2023 в 21:41

Мне нужно вывести связанный контент и поле с фотографиями. Через виджет получается вывести но мне нужно сделать как-то этим способом 

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.