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

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

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

Перейти к: навигация, поиск
(Циклы)
 
(не показаны 5 промежуточные версии 1 участника)
Строка 1: Строка 1:
 +
[[Category:Интернет-магазин SaaS]]
 
За основу был взят простой в использовании, но очень функциональный обработчик шаблонов от [http://webew.ru/articles/3609.webew Михаила Серова]. Данный обработчик поддерживает условные конструкции, циклы, подключение вложенных шаблонов и запуск сторонних модулей (функций)
 
За основу был взят простой в использовании, но очень функциональный обработчик шаблонов от [http://webew.ru/articles/3609.webew Михаила Серова]. Данный обработчик поддерживает условные конструкции, циклы, подключение вложенных шаблонов и запуск сторонних модулей (функций)
 
== Основы синтаксиса ==
 
== Основы синтаксиса ==
<source lang="html4strict">
+
<source lang="php">
 
<html>
 
<html>
 
<head>
 
<head>
Строка 33: Строка 34:
 
</html>
 
</html>
 
</source>
 
</source>
 
  
 
== Условные конструкции ==
 
== Условные конструкции ==
<source lang="html4strict">
+
<source lang="php">
 
  {?*a=1*} a равно 1 {*a=1*?}
 
  {?*a=1*} a равно 1 {*a=1*?}
  
Строка 52: Строка 52:
  
 
С помощью | можно также объединять в OR несколько условий:
 
С помощью | можно также объединять в OR несколько условий:
<source lang="html4strict">
+
<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"
Строка 60: Строка 60:
  
 
А с помощью & - в AND:
 
А с помощью & - в AND:
<source lang="text">
+
<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"
 
  {* var_1="one" & var_2="two" *?}
 
  {* var_1="one" & var_2="two" *?}
 
</source>
 
</source>
 
  
 
== Циклы ==
 
== Циклы ==
 
В цикле ключи массива указываются через двоеточие — {*menu:title*}, а вне цикла через точку — {*logo.image*}.
 
В цикле ключи массива указываются через двоеточие — {*menu:title*}, а вне цикла через точку — {*logo.image*}.
<source lang="html4strict">
+
<source lang="php">
 
<div id="menu">
 
<div id="menu">
 
     {%*menu*}  
 
     {%*menu*}  
 
         <a href="{*menu:url*}">{*menu:title*}</a>
 
         <a href="{*menu:url*}">{*menu:title*}</a>
 +
        /* предопределенные переменные */
 +
        /* {*menu:^KEY*} - вернет ключ элемента массива */
 +
        /* {*menu:^COUNTER*} - переменная "счетчик". Переменная счетчик будет увеличиваться на единицу каждый раз при выполнении тела цикла */
 +
        /* {*menu:^EVEN*} - вернет 1 в случае четного прохождения теля цикла и 0 в противном случае */
 
     {*menu*%}
 
     {*menu*%}
 
</div>
 
</div>
 
</source>
 
</source>
 
  
 
== Вложенные шаблоны ==
 
== Вложенные шаблоны ==
<source lang="html4strict">
+
<source lang="php">
 
...
 
...
 
<div id="logo">
 
<div id="logo">
Строка 93: Строка 95:
  
 
== Передача во вложенный шаблон части массива данных ==
 
== Передача во вложенный шаблон части массива данных ==
<source lang="html4strict">
+
<source lang="php">
 
...
 
...
 
<div id="logo">
 
<div id="logo">
Строка 106: Строка 108:
  
 
Файл '''menu.html'''
 
Файл '''menu.html'''
<source lang="html4strict">
+
<source lang="php">
 
<div id="menu">
 
<div id="menu">
 
     {%**}
 
     {%**}
Строка 118: Строка 120:
 
== Вызов модулей ==
 
== Вызов модулей ==
 
Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.
 
Есть возможность вызывать специально подготовленные функции-модули прямо из шаблона.
<source lang="html4strict">
+
<source lang="php">
    {* @date(Y-m-d) *} /* отобразит текущую дату в формате YYYY-MM-DD */
+
  {* @date(Y-m-d) *} /* отобразит текущую дату в формате YYYY-MM-DD */
 
</source>
 
</source>

Текущая версия на 23:36, 29 ноября 2015

За основу был взят простой в использовании, но очень функциональный обработчик шаблонов от Михаила Серова. Данный обработчик поддерживает условные конструкции, циклы, подключение вложенных шаблонов и запуск сторонних модулей (функций)

Основы синтаксиса

<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:^KEY*} - вернет ключ элемента массива */
         /* {*menu:^COUNTER*} - переменная "счетчик". Переменная счетчик будет увеличиваться на единицу каждый раз при выполнении тела цикла */
         /* {*menu:^EVEN*} - вернет 1 в случае четного прохождения теля цикла и 0 в противном случае */
     {*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 */