Есть ли способ изменить стандартный вывод поля?

#1 20 апреля 2022 в 07:11

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

Добавлено спустя 10 минут

Надо внимательней смотреть документацию (:

https://docs.instantcms.ru/dev/templates/helpers

#2 20 апреля 2022 в 18:56

 Bersi82, есть еще ряд способов. Мне нравится вносить такие правки через шаблон списка или записи типа контента.

Например, делаем для типа контента news копию файла templates/ваш_шаблон/content/default_item.tpl.php и называем его news_item.tpl.php

В этом файле есть примерно такая конструкция

  1. <?php foreach ($fieldset['fields'] as $field) {

и дальше идет перебор полей, которые надо показать. Мы можем вмешаться в этот перебор, например, так

  1. <?php //фото
  2. if($field['name'] == 'photo'){//если системное имя поля photo
  3. $src = html_image_src($item['photo'], $fields['photo']['options']['size_full'], true); //получим ссылку на фото, воспользовавшись исходными данными из базы, которые находятся в массиве $item
  4. //и выведем кроме фото, это же фото фоном, с размытием
  5. ?>
  6. <div class="content_item_photo mb-3" style="background-image: url(<?php echo $src; ?>)"><?php echo $field['html']; ?></div>
  7. <?php continue; } ?>

Просто как пример. Такой файл почти не нуждается в обновлении при выходе новых версий icms. А измененный helper придется актуализировать.

Изображение
Добавлено спустя 1 минуту

После закрытия тикета github.com/instantsoft/icms2/issues/1306 на гите использовать данный способ для нескольких типов контента станет еще удобнее.

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