Как записать вывод поля?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 31 января 2019 в 16:19
Друзья, нужна помощь. Пытаюсь в списке контента вывести значение дополнительного поля записи. Дело в том, что для записей из разных категорий — необходимо вывести разные дополнительные поля.

Собственно в файле mycontent_list.tpl.php я в цикле получаю ID категории:

  1.  
  2. <?php
  3. $cat_id = $item['category_id'];
  4. ?>
  5.  
Далее в нужном месте файла, с помощью условий пытаюсь вывести значения полей:

  1.  
  2. <?php
  3. if ($cat_id >= 2 && $cat_id <= 12) {
  4. echo html($item['dop_pole_1']);
  5. } elseif ($cat_id >= 13 && $cat_id <= 17) {
  6. echo html($item['dop_pole_2']);
  7. } else {
  8. echo html($item[$field['name']]);;
  9. }
  10. ?>
  11.  
В принципе, условия работают отлично, но вот конструкция: echo html($item['dop_pole_1']); не выводит значение поля (вместо него выводит единицу (1)).
Пробовал так echo $item['dop_pole_1']; тоже самое. Если так: $item['dop_pole_1']['html']; — ошибка Warning: Illegal string offset 'html'

Как получить значение поля в шаблоне?
#2 31 января 2019 в 20:24
@Kerncraft1,
А тип этих дополнительных полей какой?
#3 31 января 2019 в 21:25


@Kerncraft1,
А тип этих дополнительных полей какой?

Ris

Поле SEO текст от dwd
#4 31 января 2019 в 23:23

Поле SEO текст от dwd

@Kerncraft1
Ну так напишите самому DWD.
Обычное текстовое поле выводится нормально. Посмотрите в базе, в конце концов, что там содержится в этом поле.
#5 31 января 2019 в 23:43

Поле SEO текст от dwd

@Kerncraft1
Если результат кешируется, то выведется нормально, но у Вас, видимо галочка эта не стоит, и выводится в другом формате, вроде yaml, но могу ошибаться, в этом не разбираюсь. Выхода два: 1 — поставить галочку в настройках поля, чтобы результат кешировался, и пересохранить все записи; 2 — спросить у dwd, как вывести результат в шаблоне без кеширования.
#6 1 февраля 2019 в 10:09
DWD помог разобраться с вопросом. Действительно, если кеширование результатов поля включено, то выводится вся информация нормально.
Если вдруг решили отключить кеширование, то вывести можно так — echo $field['handler']->setItem($item)->parse($item['dop_pole_1']);
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.