Обработчик шаблонов (Основы) — различия между версиями
Материал из wiki.2fox.org
2fox  (обсуждение | вклад)  (→Условные конструкции)  | 
				2fox  (обсуждение | вклад)   | 
				||
| Строка 51: | Строка 51: | ||
С помощью | можно также объединять в OR несколько условий:  | С помощью | можно также объединять в OR несколько условий:  | ||
| − | <source lang="  | + | <source lang="php">  | 
  {?* var_1="one" | var_2="two" *}    |   {?* var_1="one" | var_2="two" *}    | ||
      var_1 равно "one" или var_2 равно "two"  |       var_1 равно "one" или var_2 равно "two"  | ||
| Строка 59: | Строка 59: | ||
А с помощью & - в AND:  | А с помощью & - в AND:  | ||
| − | <source lang="  | + | <source lang="php">  | 
  {? *var_1="one" & var_2="two" *}    |   {? *var_1="one" & var_2="two" *}    | ||
      var_1 равно "one" и при этом var_2 равно "two"  |       var_1 равно "one" и при этом var_2 равно "two"  | ||
| Строка 67: | Строка 67: | ||
== Циклы ==  | == Циклы ==  | ||
В цикле ключи массива указываются через двоеточие — {*menu:title*}, а вне цикла через точку — {*logo.image*}.  | В цикле ключи массива указываются через двоеточие — {*menu:title*}, а вне цикла через точку — {*logo.image*}.  | ||
| − | <source lang="  | + | <source lang="php">  | 
<div id="menu">  | <div id="menu">  | ||
      {%*menu*}    |       {%*menu*}    | ||
| Строка 77: | Строка 77: | ||
== Вложенные шаблоны ==  | == Вложенные шаблоны ==  | ||
| − | <source lang="  | + | <source lang="php">  | 
...  | ...  | ||
<div id="logo">  | <div id="logo">  | ||
| Строка 91: | Строка 91: | ||
== Передача во вложенный шаблон части массива данных ==  | == Передача во вложенный шаблон части массива данных ==  | ||
| − | <source lang="  | + | <source lang="php">  | 
...  | ...  | ||
<div id="logo">  | <div id="logo">  | ||
| Строка 104: | Строка 104: | ||
Файл '''menu.html'''  | Файл '''menu.html'''  | ||
| − | <source lang="  | + | <source lang="php">  | 
<div id="menu">  | <div id="menu">  | ||
      {%**}  |       {%**}  | ||
| Строка 116: | Строка 116: | ||
== Вызов модулей ==  | == Вызов модулей ==  | ||
Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.  | Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.  | ||
| − | <source lang="  | + | <source lang="php">  | 
   {* @date(Y-m-d) *} /* отобразит текущую дату в формате YYYY-MM-DD */  |    {* @date(Y-m-d) *} /* отобразит текущую дату в формате YYYY-MM-DD */  | ||
</source>  | </source>  | ||
Версия 15:21, 5 ноября 2014
За основу был взят простой в использовании, но очень функциональный обработчик шаблонов от Михаила Серова. Данный обработчик поддерживает условные конструкции, циклы, подключение вложенных шаблонов и запуск сторонних модулей (функций)
Содержание
Основы синтаксиса
<html> <head> /* Многострочные комментарии - как в C или PHP */ <title>{*title*}</title> /* условные конструкции: */ /* если keywords существует */ {?*keywords*}<meta name="keywords" content="{*keywords*}">{*keywords*?} {?*description*}<meta name="description" content="{*description*}">{*description*?} </head> <body> <div id="logo"> <a href="/"><img src="{*logo.image*}" alt="{*logo.alt*}"></a> </div> <div id="menu"> /* цикл: */ {%*menu*}<a href="{*menu:url*}">{*menu:title*}</a>{*menu*%} </div> <div id="content"> {*content*} </div> <div id="footer"> 2fox.org © {* @date(Y) *} /* модуль даты как PHP */ </div> </body> </html>
Условные конструкции
{?*a=1*} a равно 1 {*a=1*?} {?!*a=1*} a не равно 1 {*a=1*?!} {?*a>1*} a больше 1 {*a>1*?} {?!*a>1*} a не больше (т.е. меньше или равно) 1 {*a>1*?!} {?*a=b*} а равно b {*a=b*?} {?*a="раз"*} a - это "раз" {*a="раз"*?}
С помощью | можно также объединять в OR несколько условий:
{?* var_1="one" | var_2="two" *} var_1 равно "one" или var_2 равно "two" {* var_1="one" | var_2="two" *?}
А с помощью & - в AND:
{? *var_1="one" & var_2="two" *} var_1 равно "one" и при этом var_2 равно "two" {* var_1="one" & var_2="two" *?}
Циклы
В цикле ключи массива указываются через двоеточие — {*menu:title*}, а вне цикла через точку — {*logo.image*}.
<div id="menu"> {%*menu*} <a href="{*menu:url*}">{*menu:title*}</a> {*menu*%} </div>
Вложенные шаблоны
... <div id="logo"> <a href="/"><img src="{*logo.image*}" alt="{*logo.alt*}"></a> </div> {* +menu.html *} /* Подключаем шаблон меню. Файл должен иметь расширение html, путь указывается относительно директории шаблона */ <div id="content"> ...
Передача во вложенный шаблон части массива данных
... <div id="logo"> <a href="/"><img src="{*logo.image*}" alt="{*logo.alt*}"></a> </div> {* + *menu* | menu.html *} /* путь к шаблону в таком случае указываем через вертикальную черту */ <div id="content"> ...
Файл menu.html
<div id="menu"> {%**} <a href="{*:url*}">{*:title*}</a> {**%} </div>
Конструкции вида {**}, {%**} и {?**} означают обращение к корневой переменной, переданной в шаблон. А запись вида {* + шаблон *} есть укороченная форма конструкции {* + ** | шаблон *} (** — в подключаемый шаблон передается вся корневая переменная).
Вызов модулей
Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.
{* @date(Y-m-d) *} /* отобразит текущую дату в формате YYYY-MM-DD */