Теги шаблонов, перезагрузка
Некоторое время назад, я уже описывал нашу новую систему шаблонных тегов, которая будет в 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"}
Конечно же реальная мощь данной шаблонной системы состоит в том, что вы сами можете создавать собственные обработчики тегов, скидывать их в директорию шаблонных тегов и незамедлительно начать пользоваться созданными тегами в шаблонах.