Онлайн-руководство разработчика NetCat
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API

Дополнительные шаблоны

Дополнительные шаблоны — это «куски» шаблона (partials), которые можно использовать для повторного использования в различных подмакетах. В них может быть определены элементы навигации (хлебные крошки, вспомогательное меню) или другие элементы интерфейса (колонка, блок в колонке и т.д.) которые используются в разных местах макета дизайна.

Дополнительных шаблонов можно внедрить неограниченное количество.

Управление дополнительными шаблонами находится там же, где и обычными шаблонами. Откройте пункт «Разработка» — «Макеты дизайна».

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

Работа со вспомогательными шаблонами в макетах дизайна

Вывод вспомогательных шаблонов возможен только в макете дизайна. Например:

<?=$this->partial('breadcrumbs') ?>

выводит вспомогательный шаблон:

/netcat_template/template/{$id}/partials/breadcrumbs.html

Где {$id} - идентификатор текущего (корневого) макета дизайна

Примеры использования

Создайте новый шаблон.

Имя шаблона: 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)) ?>

Содержимое шаблона parials/sidebar_block.html:

<div class='sidebar-block'>
    <h3><?= $this->value('header', 'Информация') ?></h3>
    <div class='block-content'>
        <?= $this->value('content', 'Нет записей') ?>
    </div>
</div>

Для формирования навигации в дополнительных шаблонах воспользуйтесь классом навигации.

Пример использования дополнительного шаблона в компоненте:

<?
// Имя дополнительного шаблона
$partial_template_name = 'Test';
// Данные для передачи в дополнительный шаблон
$data = array('example' => 'string');
// ID родительского корневого шаблона
$template_id = 1;

// Путь к папке с шаблонами на сервере
$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();
?>

Комментарии 11

Redox 02 июля 2014, 13:50:04
чёто ничего не понятно... Что куда вставлять?
Вот вы пишите:
[QUOTE]
"Доступ к объекту:"
[/QUOTE]
а куда этот код вставлять то??
Потом: "Пример использования"... А этот код куда вставлять и как??

[QUOTE]"Модификаторы"
[CODE]ignore_check($ignore = true)[/CODE]
Игнорирование вывода только включённых разделов, если $ignore_check равен 1, то выведутся все разделы[/QUOTE]
Это что и куда вставлять? и где надо сделать $ignore_check равен 1 чтобы он действительно был равен 1?
Хорошо бы на конкретных примерах... Нужно сделать тото... берём этот код и вставляем туда то, а этот код тудато, тогда получаем это. Если хотим чтобы было ещё и так и так, то добавляем здесь это и это...
А так получается просто куски кода, как использовать которые, наверное, понятно только очень опытному php-программисту.
   
amigo 04 июля 2014, 17:21:27
Описание [URL='http://netcat.ru/developers/docs/navigation/class/']перенесено и добавлены примеры[/URL]
   
Redox 02 июля 2014, 14:26:35
Во многих местах не хватает закрывающих скобок....
вы сами то пробовали использовать этот код на разработке "с нуля"?
   
Nexwich  Панасин Александр 28 июля 2014, 16:53:35
Не могу даже представить зачем нужен код из примера. Он ведь явно не совпадает с версткой которую использует разработчик. Пример да и только.
   
Redox 02 июля 2014, 15:11:34
Не хватает способа определения первого и последнего пунктов меню, чтобы можно было присвоить им свои классы.
Или это можно реализовать как то по другому?
   
Nexwich  Панасин Александр 28 июля 2014, 16:52:31
CSS
Это уже обсуждалось не раз и не два. Это индивидуальный случай так что добавлять это не кто не станет так как есть массы других способов (CSS2, CSS3, JS)
   
Свердлов Борис 27 февраля 2015, 18:47:48
Так это что, еще и языки программирования учить надо? Не получится купить версию Стандарт или бизнес и просто использовать как конструктор? Мне обычный сайт сделать, может несколько, как дело пойдет. Заказы уже есть, даже оплата собрана. А пробовал я только на wix и umi собирать шаблоны... Что редактор у этого движка не визуальный?
   
Корзун Евгений Никитович 15 июня 2015, 13:00:13
Не хватает возможности использования этой функции внутри компонента (полного вывода, хотя бы)
   
VenZell  i-Vi 17 октября 2016, 12:06:02
Здравствуйте, Евгений. Извините за долгое ожидание ответа. Соответствующий пример был добавлен в документацию.
   
reaper 15 сентября 2015, 11:26:10
В примерах допущена ошибка:
у partial нет метода render(), есть метод make().
   
VenZell  i-Vi 17 октября 2016, 11:56:31
Извините за долгое ожидание ответа. Ваша правка внесена в документацию. Спасибо за ваше уточнение!
   
Описание проекта