Персональные инструменты

Обработчик шаблонов (Основы) — различия между версиями

Материал из wiki.2fox.org

Перейти к: навигация, поиск
Строка 119: Строка 119:
 
Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.
 
Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.
 
<source lang="html4strict">
 
<source lang="html4strict">
     {* @date(Y-m-d) *} /* выведет текущую дату в формате YYYY-MM-DD */
+
     {* @date(Y-m-d) *} /* отобразит текущую дату в формате YYYY-MM-DD */
 
</source>
 
</source>

Версия 14:27, 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 &copy; {* @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 */