Врезки — это «куски» шаблона (partials), которые можно использовать для повторного использования в различных подмакетах. В них может быть определены элементы навигации (хлебные крошки, вспомогательное меню) или другие элементы интерфейса (колонка, блок в колонке и т.д.) которые используются в разных местах макета дизайна.
До версии 5.8 врезки назывались в интерфейсе системы «дополнительными шаблонами».
В версии 5.8 появилась возможность отложенной загрузки врезок (асинхронные врезки).
Врезок можно внедрить неограниченное количество.
Управление врезками находится там же, где и макетами дизайна (пункт «Разработка» — «Макеты дизайна»).
В правой части будут отображены поля, которые необходимо заполнить: ключевое слово макета и шаблон. Название врезки (появилось в версии 5.8) является опциональным, здесь можно, например, кратко описать назначение врезки.
Поле «разрешить асинхронную загрузку» включает возможность загрузки врезки отдельным запросом.
Для добавления врезки в макет дизайна используется метод $this->partial
. Например, следующий вызов метода выводит врезку из файла /netcat_template/template/{id}/partials/breadcrumbs.html
(где {id} - ключевое слово или идентификатор текущего (корневого) макета дизайна):
<?= $this->partial('breadcrumbs') ?>
Создайте новый шаблон.
Ключевое слово: breadcrumbs
Шаблон врезки:
<? foreach ($nc_core->nav->get_path() as $sub): ?> <? if ($sub->current): ?> <?=$sub->name ?> <? else: ?> <a href='<?=$sub->url ?>'><?=$sub->name ?></a> / <? endif ?> <? endforeach ?>
Сохраните результат. Данный шаблон осуществит вывод хлебных крошек в макете дизайна.
<?=$this->partial('breadcrumbs') ?>
<?=$this->partial('breadcrumbs', array('data'=>$nc_core->nav->get_path())) ?> <?=$this->partial('breadcrumbs')->with('data', $nc_core->nav->get_path()) ?>
<?php $breadcrumbs = $this->partial('breadcrumbs'); $breadcrumbs->data = $nc_core->nav->get_path(); echo $breadcrumbs->make(); ?>
<?=$this->partial('sidebar_block', array( 'header' => 'Новости за сегодня', 'content' => $today_news ))?> <?=$this->partial('sidebar_block', array('content' => $information)) ?>
Содержимое шаблона partials/sidebar_block.html:
<div class='sidebar-block'> <h3><?= $this->value('header', 'Информация') ?></h3> <div class='block-content'> <?= $this->value('content', 'Нет записей') ?> </div> </div>
Для формирования навигации во врезке воспользуйтесь классом навигации.
Методы для загрузки врезки отдельно от страницы описаны на странице «Асинхронные врезки».
<? // Ключевое слово родительского корневого макета дизайна $template_keyword = 'my_template'; // Имя врезки $partial_keyword = 'test'; // Данные для передачи в шаблон врезки $data = array('example' => 'string'); // Выводим результат выполнения дополнительного шаблона с указанным именем echo $nc_core->template->get_partial($template_keyword, $partial_keyword, $data);
<? // ID родительского корневого шаблона $template_id = 1; // Имя дополнительного шаблона $partial_template_name = 'Test'; // Данные для передачи в дополнительный шаблон $data = array('example' => 'string'); // Путь к папке с шаблонами на сервере $root_template_path = $nc_core->TEMPLATE_FOLDER; // Путь к папке родительского корневого шаблона $template_path = $nc_core->db->get_var('SELECT File_Path FROM Template WHERE Template_ID = ' . +$template_id); // Инициализируем базовый класс для шаблонов $template_view = new nc_tpl_template_view($root_template_path, $nc_core->db); // Загружаем искомый родительский шаблон $template_view->load_template($template_id, $template_path); // Ищем внутри искомого родительского шаблона дополнительный шаблон с указанным именем $partial_template_view = $template_view->partial($partial_template_name, $data); // Выводим результат выполнения дополнительного шаблона с указанным именем echo $partial_template_view->make(); ?>