Форум IP.Board

Теги шаблонов, перезагрузка

Некоторое время назад, я уже описывал нашу новую систему шаблонных тегов, которая будет в IP.Board 3.0.0. После некоторых замечаний по поводу синтаксиса и дальнейшей разработки самой системы, я почувствовал, что необходимо повторно осветить эту тему в блоге.

Система шаблонных тегов все так же основана на классах (расширять и реализовывать), которые работают как плагины. Плагины запускаются только в случае если шаблоны закешированы, что делает систему очень быстрой и очень эффективной. Новый синтаксис тегов очень прост в использовании и для запоминания:

{parse plugin="название" option="значение" option2="значение2"}

Теперь собственно к тегам, которые уже используются в Invison Power Board 3.0

Expression / Выражение

Данный тег служит для исполнения in-line PHP выражений, которые возвращают какое-то значение. Это может быть любая встроенная PHP функция или любая функция реализованная в IP.Board.

{parse expression="intval($data['count'])"}
{parse expression="IPSText::alphanumerical_clean( $data['value'] )"}

Данный тег позволяет достаточно легко оформлять данные на лету и избавляет от навязчивого intval в коде, для гарантии правильного вывода значения, такого как 0, а не пустота!

Template / Шаблон

Данный тег используется для вставки любого другого шаблона IP.Board в текущий шаблон.

{parse template="pageLinks" group="skin_global" params="$data['start'], $data['end']"}

Польза от такого тега совершенно очевидна. Вам больше не надо изменять PHP код для повторного использования шаблона в каком-то месте.

Variable / Переменная

Тег для создания переменной и изменения ее значения.

Создаем переменную с именем ‘className’:

{parse variable="className" default="tdRow1" oncondition="$data['foo'] == 'bar'" value="tdRow2"}

Изменяем значение переменной:

{parse variable="className" oncondition="$data['foo'] == 'foo'" value="tdRow3"}

Используем переменную:

{parse variable="className"}

А теперь все тоже, но на практике:

{parse variable="className" default="row1" oncondition="$data['banned'] === TRUE" value="rowBanned"}

Striping / Переключатель классов

Когда Rikki работал над новым стилем IP.Board, он упомянул что было бы не плохо иметь такой тег, при помощи которого можно делать полоски, как у зебры (альтернативные цвета рядов при выводе списка форумов, тем и т.п.). И мы сделали тег striping.

Для установки тега:

{parse striping="someKey" classes="tdrow1, tdrow2, tdrow3"}

Для использования:

{parse striping="someKey"}

При преобразовании данного тега в код, он преобразуется в цикл по классам, с возможностью повторения цикла если это необходимо.

Ну и практический пример:

{parse striping="rows" classes="row1, row2"}

$key = $value

AddToHead / Добавить в Head

Может быть трудно придерживаться строгих стандартов, имея дело с шаблонами разбитыми на куски. Часто вы ставите под угрозу исполнение стандартов, распределяя javascript и CSS по всему телу документа.

Данный тег в IP.Board позволит вам добавит контент в документа быстро и просто:

{parse addtohead="/js/someScript.js" type="javascript"}
{parse addtohead="/css/someCSS.css" type="css"}
{parse addtohead="" type="raw"}

Date / Дата

В предыдущих версиях Invison Power Board вся работа с датой осуществлялась внутри PHP кода, что делало формат дат в IPB трудно изменяемыми, кроме тех случаев, которые были разрешены в АЦП.

Теперь IP.Board позволяет вам оформлять даты используя тег date в шаблонах.

Примеры:

{parse date="now"}
{parse date="1765346750" relative="1" format="long"}
{parse date="-1 hour" format="manual{d, m, Y}"}

URL / Ссылки

IP.Board 3 позволяет легко оформлять URL без использования специальных PHP переменных.

Примеры:

{parse url="showtopic=1" base="public"}
{parse url="showforum=5" base="publicWithApp"}
{parse url="photo1.jpg" base="upload"}

Format Number / Оформление чисел

IP.Board 3 позволяет легко и просто иметь доступ к встроенной функции format_number.

Пример:

{parse format_number="123456"}

Replacement / Замена

Для развития нашей новой идеи тегов, мы решили отказаться от старого тега ‘macro’ (< {MACRO_HERE}>) и заменить его новым тегом ‘replacements’:

{parse replacement="macroKey"}

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

Back to top button