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

InstantCMS 2.X
#1 12 октября 2018 в 06:41
Есть ньюанс, сейчас вывод переменных созданных через Типы контента возможен только в очереди предусмотренной в шаблоне default_item.tpl

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

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

Как можно вывести именно форматированные переменные конкретные которые нужны?
#2 12 октября 2018 в 06:58
В шаблонах ..._item.tpl.php можно так
  1. $fields['title']['html']
#3 12 октября 2018 в 07:11


В шаблонах ..._item.tpl.php можно так

  1. $fields['title']['html']

Loadырь

не совсем

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

  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 это очередность в группе полей поля.

Только таким образом получил название поля и вывод в обработке.
#4 12 октября 2018 в 07:24
Если вам нужно управлять группировкой полей из админки, тогда надо прогонять через $fields_fieldsets = cmsForm::mapFieldsToFieldsets, а если не надо, и вы выводите сами поля в нужном месте, то все значения есть в $fields.
#5 12 октября 2018 в 09:57
Loadырь, Спасибо!

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

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

  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'] — это прямое значение поля в базе.

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