Искать  
 
   
 
Обёртываем шаблоны в макеты
Отправлено: 26 Март 2014 03:34 P.M.   [ Игнорировать ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  645
Зарегистрирован  2009-04-11

Основное использование

Помимо встраивания шаблонов друг в друга, Вы также можете создать общий макет для ваших шаблонов. Макет можно рассматривать как шаблон который обёртывает другой шаблон или как обратное встраивание. Для использования шаблона Вы должны использовать тег {layout=”“} вверху вашего шаблона:

{layout="template_group/template"

Где “template_group” это имя группы а “template” это имя шаблона. Вы должны включить оба названия, имя группы и шаблона в тег макета. Например:

{layout="site/wrapper"

Таким образом будет использован шаблон “wrapper” группы “site” как макет для вашего текущего шаблона. В макете Вы должны указать место где будет выводиться контент шаблона. Для указания места используется тег “layout:contents”:

{layout:contents} 

Заметка: Тег макеты **должен** быть указан до тегов любых модулей или плагинов.

Простой пример

Самый распространенный макет представления скелета вашего сайта.  Используя встраивание, в шаблон вставляются шапка и футер сайта как на примере ниже:

{embed="site/.header"}

    {exp
:channel:entries channel="news"}
      
<h2>{title}<h2>
      
{summary}
    {
/exp:channel:entries}
    
    {embed
="site/.footer"

 

В шаблоне “site/.header”:

<html>
  <
head>
    <
title>News Site</title>
  </
head>
  <
body

И в шаблоне “site/.footer”:

</body>
    </
html


По мере добавления больше кода в вашу шапку и футер, будет выглядеть не красиво. С макетами мы может объединить шапку сайта и футер в один шаблон назвав его для примера “site/.html-layout”:

<html>
  <
head>
    <
title>News Site</title>
  </
head>
  <
body>
    
{layout:contents}
  
</body>
    </
html

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

{layout="site/.html-layout"}

    {exp
:channel:entries channel="news"}
      
<h2>{title}<h2>
      
{summary}
    {
/exp:channel:entries} 

Напомним что макеты надо делать скрытыми шаблоны. Это не даст удалённого доступа к макетам шаблонов.

Переменные макетов

- Переменные параметров
- Динамические переменные

Переменные параметров

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

{layout="site/.html-layout" color="blue"

В вашем макете вам будет доступен тег {layout:color}:

I drive a {layout:color} car

Важно: Имя contents занято для данных шаблона.

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 26 Март 2014 03:35 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  645
Зарегистрирован  2009-04-11

Динамические переменные

Тег макета должен быть размещён сверху шаблона и должен быть использован перед любыми модулями или плагинами с тегом ({exp: }). Это может вызвать некоторые проблемы если вы хотите передать данные какого нибудь модуля в ваш макет.

Для того чтобы обойти эту проблему, переменные макета можно указать также в самом шаблоне используя тег:

{layout:set name="color" value="red"

Параметр name указывает на имя переменной и параметр value содержит данные которые надо передать в макет. Используя этот тег вы также можете переписать любые значения имена которых были использованы как параметры в основном теге {layout=”“}.

Вы также можете указать переменную используя парный тег; это полезно для вывода данных из тега плагина или модуля. С парным тегом вам не нужно указывать параметр value, данные содержатся внутри парного тега. Параметр name должен быть указан: 

{layout="site/.html-layout"}

{exp
:channel:entries channel="colors" limit="1"}
  {title}
  {layout
:set name="color"}{title}{/layout:set}
{
/exp:channel:entries} 

The {layout:set} tag will always be fully removed from your template
so you must show the data you are saving separately.

ЗАМЕЧАНИЕ
Используя {layout:set} в цикле парного тега данные будут заменяться, в переменной макета будет значение последнего цикла в парном теге.

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль