Наверх

Шаблонные функции и теги

Шаблонные функции – это функции для вывода всевозможного контента в пользовательской части сайта. Шаблонная функция неразрывна с шаблонным тегом, который является инструментом для вызова функции в шаблонах сайта при подключении дизайна к DIAFAN.CMS.

Шаблонные теги

Шаблонные теги служат для запуска шаблонных функций, которые выводят различный контент в шаблонах сайта. Шаблонный тег представляет собой тег вида:

<insert [name=""] [module=""] [value=""] [attribute_1=""] [attribute_2=""]>

Используются шаблонные теги в шаблонах сайта при подключении дизайна к DIAFAN.CMS.

Тег включает ряд обязательных и необязательных атрибутов, делящихся на определенные и неопределенные атрибуты.

Определенные атрибуты:

В шаблонном теге обязательно должен быть один из атрибутов: name или value.

Пример:

<insert name="show_body">

Выведет основной контент сайта: заголовок Н1, текст и содержимое модуля, если он подключен к странице.

Пример:

<insert name="show_block" module="site" id="1">

Выведет содержимое блока ID=1 из модуля «Страницы сайта».

Пример:

<insert name="show_login" module="registration">

Выведет форму авторизации для пользователей сайта

Пример:

<insert name="show_block" module="menu" id="2" template="leftmenu">

Выведет меню ID=2. Шаблон оформления – файл modules/menu/views/menu.view.show_block_leftmenu.php

Шаблонный тег также можно вызвать из шаблонов модулей. Для этого его нужно обработать функцией htmleditor().

Пример:

echo $this->htmleditor('<insert name="show_block" module="shop" sort="sale">');

При использовании в шаблоне /modules/news/views/news.view.id.php выведет на странице с отдельной новостью три товара, лидеров продаж.

Все допустимые значения определенных атрибутов name и module собраны в справочник шаблоных тегов.

Определенный атрибут value служит для автоматического перевода текстов в мультиязычных сайтах (value="значение");

Пример:

<insert value="Привет, мир!">

Выведет просто фразу «Привет, мир!» в основной языковой версии сайта.

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

Если в административной части существует перевод для фразы «Привет, мир!» – «Hello, world!», то в пользовательской части сайта этот же тег выведет «Hello, world!» при переключении на английскую версию.

Неопределенные атрибуты – это все остальные атрибуты, которые могут быть использованы в шаблонном теге. Они передаются функции в качестве массива в формате:

array(название => значение, );

Значения неопределенных атрибутов зависят от модуля, к которому они относятся. Согласно систаксису значения неопределенных атрибутов должны быть заключены в кавычки и не должны содержать символы >, <, ", '. Эти символы должны быть заменены HTML-мнемониками или специальными символами:

  • < надо заменить на &lt; или [
  • > надо заменить на &gt; или ]
  • & надо заменить на &amp;
  • " надо заменить на &quot; или `

Пример:

<insert name="show_block" module="menu" id="3" tag_start_1="[li class=&quot;bottom&quot;]" tag_start_2="[/li]">

Выведет меню ID=3, в котором каждый пункт меню будет оформлен в конструкцию <li class="bottom">пункт меню</li>.

Справочник шаблонных тегов

Ваши комментарии и дополнения

Не помешает добавить пример по использованию неопределённых атрибутов. Они обсуждались в этой теме. Наглядный пример оттуда:
Цитата
пишете - <insert name="show_block" module="site" id="158" taram="param">
потом в контроллере у вас в атрибутах есть эти значения.
Про получение значений атрибутов сказано в справке каждого шаблонного тега
Цитата
В шаблоне тега можно получить значение любого атрибута через переменную
$result["attributes"]["название атрибута"]
Исходя из примера выше
Код
$result["attributes"]["taram"]
вернёт "param".
По какому принципу шаблонный тег подхватывает шаблон? Как именовать и куда класть? В каталоге с модулем создал модуль.view.item_id, в шаблонном теге module="модуль" template="item_id" - не работает
В названии нужно указать шаблон по умолчанию, а затем добавить постфиксом то, что указали в теге template. То есть в Вашем случае нужно было modules/shop/views/shop.view.show_block_item_id.php. Это если речь идет про модуль "Магазин" и про блок товаров. Путь к файлу я указала в примере. То есть он должен находиться в папке шаблонов модуля. Можно по основному пути, можно сразу в тему (она находиться в папке custom).
Ребята, зачем было придумывать новый велосипед с этими шаблонными тегами? Уже и так в мире есть куча шаблонизаторов (twig, blade и т.п.).
Ладно уж шаблонизаторы, чем не нравилось выводить
Код
<?php custom_func(); ?>

Максим, а Вы темку создайте на форуме и послушайте тех, кто с этим велосипедом работает.
Если вкратце, то теги как html удобны для верстальщиков, и не нужно иметь отдельного интегратора программиста
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.