forked from XanderBass/quadbraces
-
Notifications
You must be signed in to change notification settings - Fork 0
Serg28/quadbraces
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
1. Что это?
Парсер QuadBraces - это реализация парсера-шаблонизатора MODX / Etomite.
Реализация отдельная, что позволяет использовать синтаксис MODX без установки
этого движка на проект. Также следует отметить, что синтаксис расширенный.
ОБРАТИТЕ ВНИМАНИЕ! Парсер QuadBraces подерживается теперь в рамках пакета xbParser библиотеки xbLib.
2. Поддерживаемые элементы
[+ +] - локальные плейсхолдеры
{{ }} - чанки
{[ ]} - однострочные чанки из библиотек
{( )} - многострочные чанки из библиотек
{* *} - константы PHP
[( )] - "настройки"
[* *] - плейсхолдеры
[^ ^] - отладочные данные
[% %] - языковые элементы
[! !] - сниппеты
[: :] - кастомные обработчики
Общий синтаксис элемента внутри управляющих скобок:
ключ_элемента:расширение1=`значение`:расширение2 &арг1=`знач` &арг2=`знач`
Иными словами сначала идёт ключ элемента. Затем используемые расширения,
если таковые используются. Затем ряд аргументов, если таковые используются.
ОБРАТИТЕ ВНИМАНИЕ:
- Точка в названиях чанков, сниппетов и шаблонов заменяется при поиске файла
на системный разделитель каталогов. Это позволяет создавать шаблонные
структуры любого уровня вложенности. Притом последний элемент однострочных
и многострочных библиотечных чанков означает уже порядковый номер чанка
в библиотеке. Точка в названии переменных и "настроек" интерпретируется,
как разделитель уровня вложенности (см. CHANGE.LOG). Точка в названиях
остальных элементов интерпретируется, как точка.
- У некоторых расширений есть дополнительные "расширения". Например, у
базовой логики есть расширения "then" и "else".
- При обработке внутренних плейсхолдеров расширений обрабатываются только
базовые расширения логики оных
3. Поддерживаемые расширения
is, eq - равенство (сравниваемое значение, then, else)
isnot, neq - неравенство (сравниваемое значение, then, else)
lt - меньше, чем (сравниваемое значение, then, else)
lte - меньше, чем, или равно (сравниваемое значение, then, else)
gt - больше, чем (сравниваемое значение, then, else)
gte - больше, чем или равно (сравниваемое значение, then, else)
even - признак чётности (сравниваемое значение, then, else)
odd - признак нечётности (сравниваемое значение, then, else)
empty - признак пустого значения (значение "тогда", else)
notempty - признак непустого значения (значение "тогда", else)
null, isnull - является ли значение NULL (значение "тогда", else)
notnull - является ли значение не NULL (значение "тогда", else)
isarray - является ли значение массивом (значение "тогда", else)
for - целочисленный итератор (количество итераций, start, splitter)
foreach - индексный итератор (список индексов через запятую, splitter)
js-link - превращает значение в ссылку на скрипт
css-link - превращает значение в ссылку на таблицу стилей
import - превращает значение в ссылку на таблицу стилей (@import для CSS)
link - превращает значение в ссылку (заголовок)
link-external - превращает значение во внешнюю ссылку (заголовок)
links - преобразует все URL-ы в значении в ссылки (атрибуты ссылок)
ul, ol - превращает многострочное значение в список (шаблон элемента списка) *
* - имеет два внутренних плейсхолдера:
[+classes+] - классы элемента (first, last)
[+item+] - собственно строка
- Для расширения for доступен внутренний плейсхолдер [+iterator+],
содержащий номер текущей итерации
- Для расширения foreach доступны внутренние плейсхолдеры:
[+iterator.index+] - номер позиции текущей итерации
[+iterator+] - текущий индекс
4. Использование
<?php
require 'parser.php';
$parser = new QuadBracesParser();
// Назначаем путь к шаблонным данным
$parser->paths = $_SERVER['DOCUMENT_ROOT'].'content'.DIRECTORY_SEPARATOR.'tpl';
// Шаблон должен находиться в %tplpath%/templates/mytemplate.html
$parser->template = 'mytemplate';
// Устанавливаем данные. Массив, содержащий какие угодно данные. По плейсхолдерам - выше
$parser->data = array(
'title' => 'Заголовок страницы'
'content' => 'Лорем ипсум... =)'
);
echo $parser->parse();
?>
5. Примеры синтаксиса
{{my_chunk}}
Выведет содержимое файла "my_chunk.html" из папки с шаблонами
{{my.chunk}}
Выведет содержимое файла "my/chunk.html" из папки с шаблонами
{{my.chunk &foo=`bar`}}
Выведет содержимое файла "my/chunk.html" из папки с шаблонами, заменив
внутри плейсхолдер "[+foo+]" на значение "bar"
{*MY_CONSTANT*}
Выведет значение константы "MY_CONSTANT", если таковая определена
{*MY_CONSTANT:empty=`foobar`*}
Выведет значение константы "MY_CONSTANT", если таковая определена,
иначе (или если константа пуста) выведет "foobar"
[(my_setting)]
Выведет значение элемента "my_setting" из массива settings парсера
[*my_placeholder*]
Выведет значение элемента "my_placeholder" из массива data парсера
[^totalmem.kb^]
Выведет значение потребляемого ОЗУ в килобайтах с округлением в два знака
[!my.snippet &arg1=`foo` &arg2=`bar`!]
Выполнит код из файла "my/snippet.php" из папки с шаблонами,
передав в переменную arguments внутри обёртки массив:
array('arg1' => 'foo','arg2' => 'bar')
[%my_lang_string%]
Выведет CAPTION языкового элемента "my_lang_string" текущего языка
[%my_lang_string.hint%]
Выведет HINT языкового элемента "my_lang_string" текущего языка
[:data@my_data:]
Выведет элементы списка элемента "my_data" массива data парсера.
Выводимый код каждой итерации будет примерно таким:
[:data:my_data &langKeys=`1`:]
Выведет элементы списка элемента "my_data" массива data парсера
с подстановкой в качестве ключа языкового плейсхолдера.
Выводимый код каждой итерации будет примерно таким:
<li>
<span class="key">[%ключ_элемента%]</span>
<span class="value">значение_элемента</span>
</li>
[:data@my_data &langKeys=`1` &langPrefix=`myprefix`:]
Выведет элементы списка элемента "my_data" массива data парсера
с подстановкой в качестве ключа языкового плейсхолдера.
Выводимый код каждой итерации будет примерно таким:
<li>
<span class="key">[%myprefix.ключ_элемента%]</span>
<span class="value">значение_элемента</span>
</li>
[:data@my_data &chunk=`my.chunk`:]
Выведет элементы списка элемента "my_data" массива data парсера.
Выводимый код каждой итерации будет примерно таким:
{{my.chunk ... }}
На месте троеточия будет строка аргументов, передаваемых в чанк, ключом
каждого из которых будет ключ под-элемента, а значением - значение оного.
Очень востребовано для вывода значений, являющихся двухмерными массивами.
About
QuadBraces (MODX / Etomite) syntax parser
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- PHP 100.0%