Откройте форму редактирования шаблона.
Первые три поля отвечают за вывод списка элементов (объектов) компонента на странице, куда этот блок добавлен. Сначала выводится префикс, затем все предназначенные для вывода объекты в шаблоне объекта в списке, затем суффикс. Если объектов для отображения нет, выводятся только префикс и суффикс.
Пусть нужно вывести объекты в таком шаблоне:
<div class="goods_list"> <div class="header">Все товары в наличии на нашем складе.</div> <div class="content"> <div class=”item”> <h3><a href="#">Первый товар</a></h3> <p>Описание первого товара</p> <p>Производитель: Россия</p> </div> <div class=”item”> <h3><a href="#">Второй товар</a></h3> <p>Описание второго товара.</p> <p>Производитель: Россия</p> </div> </div> </div>
В префикс списка помещаем код:
<div class="goods_list"> <div class="header">Все товары в наличии на нашем складе.</div> <div class="content">
В поле объекта:
<div class=”item”> <h3><a href="#">Первый товар</a></h3> <p>Описание первого товара</p> <p>Производитель: Россия</p> </div>
В суффикс:
</div> </div>
В префиксе добавляем переменную $f_AdminCommon, которая в режиме редактирования выводит панель управления блоком, а в режиме просмотра пуста:
<?= $f_AdminCommon; ?> <div class="goods_list"> <div class="header">Все товары в наличии на нашем складе.</div> <div class="content">
В шаблоне объекта в списке заменяем конкретные значения на переменные:
<?= $f_AdminButtons; ?> <div class=”item”> <h3><a href="<?= $fullLink; ?>"><?= $f_Name; ?></a></h3> <p><?= $f_Description; ?></p> <p>Производитель: <?= $f_Producer; ?></p> </div>
Здесь мы подразумеваем, что в компоненте мы добавили поля Name, Description и Producer. Для обращения к ним используются переменные вида $f_ИМЯПОЛЯ. Переменная $f_AdminButtons в режиме редактирования выводит панель управления объектом, а в режиме просмотра пуста. А переменная $fullLink содержит ссылку на страницу с полным выводом объекта. Также есть переменная $fullDateLink, она тоже выводит ссылку на страницу полного вывода, но добавляет в url дату добавления записи в формате /2024/03/24/.
А в поле суффикса добавим вывод пагинации (кликабельные ссылки на следующую/предыдущую страницу списка, если в инфоблоке содержится больше объектов, чем разрешено выводить на одной странице):
</div> <?= browse_messages( $cc_env, $range, $user_template = false ); ?> </div>
Читайте подробнее о пагинации.
В нашем примере в префиксе выводится надпись, подразумевающая наличие товаров ниже. Но если товаров в списке нет, логично вывести другую надпись. Для проверки наличия объектов в инфоблоке можно использовать переменные $rowCount (реальное количество выведенных на страницу объектов) или $totRows (общее количество объектов данного инфоблока).
Префикс списка:
<?= $f_AdminCommon; ?> <div class="goods_list"> <div class="header"> <?= $totRows>0 ? “Все товары в наличии на нашем складе.” : “Товаров в этой категории в наличии временно нет.”; ?> </div> <div class="content">
Если поле производителя не обязательно, то в объекте не стоит выводить всю строку о нем:
<?= $f_AdminButtons; ?> <div class=”item”> <h3><a href="<?= $fullLink; ?>"><?= $f_Name; ?></a></h3> <p><?= $f_Description; ?></p> <?= $f_Producer ? “<p>Производитель: <?= $f_Producer; ?></p>” : NULL; ?> </div>
Наверху страницы компонента отображается адрес папки (каталога), где хранятся файлы компонента, в т.ч. шаблон списка - файл Class.html. Вы можете редактировать его в любом редакторе, только не вносите изменения в структуру файла - комментарии, разделяющие части шаблона:
<!-- FormPrefix -->Содержимое префикса<!-- /FormPrefix -->
<!-- RecordTemplate -->Содержимое шаблона объекта<!-- /RecordTemplate -->
<!-- FormSuffix -->Содержимое суффикса<!-- /FormSuffix -->
В нашем примере содержимое этого шаблона будет выглядеть так:
<!-- FormPrefix --> <?= $f_AdminCommon; ?> <div class="goods_list"> <div class="header"> <?= $totRows>0 ? “Все товары в наличии на нашем складе.” : “Товаров в этой категории в наличии временно нет.”; ?> </div> <div class="content"> <!-- /FormPrefix --> <!-- RecordTemplate --> <?= $f_AdminButtons; ?> <div class=”item”> <h3><a href="<?= $fullLink; ?>"><?= $f_Name; ?></a></h3> <p><?= $f_Description; ?></p> <?= $f_Producer ? “<p>Производитель: <?= $f_Producer; ?></p>” : NULL; ?> </div> <!-- /RecordTemplate --> <!-- FormSuffix --> </div> <?= browse_messages( $cc_env, $range, $user_template = false ); ?> </div> <!-- /FormSuffix -->
Устанавливает максимальное количество объектов в блоке, для вывода остальных можно будет использовать пагинацию или кнопку отображения следующей порции или другие решения.
Если количество объектов в блоке равно минимальному, система не позволит удалять из блока объекты, а если максимальному - добавлять.
Фрагмент SQL-запроса выборки объектов для отображения в блоке. По умолчанию содержит “a.`Priority` ASC, a.`Message_ID` ASC”: первичный признак сортировки поле приоритета, вторичный - номер объекта, т.е. при неиспользовании приоритета сначала будут выводиться более старые записи. Сюда можно вносить любые поля компонента, например, “a.Price” (сортировка по возрастанию цены) или “a.Date desc” - сортировка по убыванию поля даты - главное, чтобы эти поля были в таблице компонента. Это значение можно переопределить как на уровне настройки инфоблока, так и программно.
Результат выполнения этого шаблона посетитель увидит, нажав на ссылку на отдельную страницу (новость, товар, проект) в списке объектов. В этой секции два поля.
Результат выполнения этого шаблона вернет метод $nc_core->page->get_h1() (если макет вашего сайта сверстан традиционным образом), а также его выведет блок “Заголовок страницы” (если ваш сайт собран на конструкторе). Если ниже поля установлена галочка “Использовать в теге title”, то его результат выполнения шаблона будет отображен и в теге title (метод $nc_core->page->get_title()). Если поле пустое, выводиться будет название раздела.
Примеры заполнения поля:
По функциональности шаблон аналогичен шаблону вывода объекта в списке с поправкой на то, что объект будет выведен один. В нашем примере текст шаблона может быть таким:
<?= $f_AdminButtons ?> <div class="object-item-full"> <p><?= $f_Description; ?></p> <?= $f_Producer ? “<p>Производитель: <?= $f_Producer; ?></p>” : NULL; ?> <?= $f_Image->as_img(array("alt" => $f_Name)); ?> <p><?= $f_Text; ?></p> <div class="price">Цена: <?= $f_Price; ?> руб. </div>
Файл шаблона в каталоге компонента: RecordTemplateFull.html.
В шаблонах можно использовать все поля компонента (с префиксом $f_), а также некоторые служебные поля и переменные. Обратите внимание, что для получения значения поля простого типа (“Строка”, “Целое число”, “Число с плавающей запятой”, “Текст”) достаточно обратиться к переменной вида $f_ИМЯПОЛЯ, тогда как для типов “Файл”, “Дата и время”, “Связь с другими объектами”, “Множественный выбор”, “Множественная загрузка файлов” результат может храниться в наборе переменных, массиве, а также возвращаться методом. Подробнее об этом в разделе Поля компонента.
Список основных свойств и переменных, использующихся в шаблонах компонентов: