В типах контент выводить переменные в своем оформлении 2.X

 
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1356
Есть ньюанс, сейчас вывод переменных созданных через Типы контента возможен только в очереди предусмотренной в шаблоне default_item.tpl

как известно для того, чтоб для своего типа контента сделать шаблон достаточно вместо default указать название в латинице типа контента, например
doska_item.tpl
Но встает иногда потребность формировать вывод в записи со своим оформлением и нужно вывести отдельно переменную пропарсенную шаблонизатором (например вывод скачать файл или выпадающий список и т.п.)

Тупой вывод переменных возможен через $item. например $item['title'] или $item['nazvsnie_polya_na_latinice']
Но это позволяет выводить без форматирования, запись как есть.

Как можно вывести именно форматированные переменные конкретные которые нужны?
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3512
В шаблонах ..._item.tpl.php можно так
Код PHP:
  1. $fields['title']['html']
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1356
Loadырь:

В шаблонах ..._item.tpl.php можно так
Код PHP:
  1. $fields['title']['html']

не совсем

title передается просто, а вот поля созданные своими получаем вот такую котовасию:

Код PHP:
  1.  
  2. $fields_fieldsets = cmsForm::mapFieldsToFieldsets($fields, function($field, $user) use ($item) {
  3. if (!$field['is_in_item'] || $field['is_system']) { return false; }
  4. if ((empty($item[$field['name']]) || empty($field['html'])) && $item[$field['name']] !== '0') { return false; }
  5. if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { return false; }
  6. return true;
  7. } );
  8.  
  9. echo $fields_fieldsets[3]['fields'][1]['title'];
  10. echo $fields_fieldsets[3]['fields'][1]['html'];
  11.  
$fields_fieldsets[3]['fields'][1]['title'];
где 3 это группировка полей (Группа в типах контента)

1 это очередность в группе полей поля.

Только таким образом получил название поля и вывод в обработке.
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3512
Если вам нужно управлять группировкой полей из админки, тогда надо прогонять через $fields_fieldsets = cmsForm::mapFieldsToFieldsets, а если не надо, и вы выводите сами поля в нужном месте, то все значения есть в $fields.
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1356
Loadырь, Спасибо!

Да есть проще вариант echo $fields[file][html]; это если нужно поле а группировка не нужна для вывода.

В догонку чтоб не забыть:
вывод поля с предустановленными значениями в виджетах.
Если требуется вывести с установленными значениями из которых потом выбирается значение, то

Код PHP:
  1.  
  2. $item['imya_peremennoi']=$item['imya_peremennoi']-1; // массив надо начинать с 0, а он идет с 1.
  3. $r = explode("\n", $fields[imya_peremennoi][values]); echo $r[$item['imya_peremennoi']];
imya_peremennoi это название вашего поля.
$item['imya_peremennoi'] - это прямое значение поля в базе.

В скрипте мы делаем массив из предустановленных значений разбитых Ентером, и ассоциируем с значением из базы.
Редактировалось: 2 раз (Последний: 12 октября 2018 в 11:16)
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.