Язык разметки темплейтов
В движке используются темпрлейты: шаблоны редакторов, комментариев и прочие служебные вещи выводятся темпелейтами, которые хранятся в файлах. При обработке темплейта движдок имеет некий набор переменных, которые может туда подставлять.
В темплейтах используется свой язык разметки. Он не очень умный, но простой, и так уж сложилось исторически. Вот его команды:
<?php
{ИМЯ} — подставить вместо этого имя переменной{#ИМЯ} — подставить имя переменной, экранируя HTML-сущности{КОМАНДА:ИМЯ ИЛИ СТРОКА}{
#:ИМЯ} — то же, что {#ИМЯ} {#:<жопа>} --> <жопа> PHP:h();
{njs:ИМЯ} — экранировать кавычки JS PHP:njs();
{url:ИМЯ} — экранировать url PHP:urlencode();
{wurl:ИМЯ} — экранировать url и перекодировать из cp1251 в UTF-8 PHP:urlencode(wu());
{njsn:ИМЯ} — экранировать кавычки JS и убрать \n PHP:njsn();
{#njs:ИМЯ} — экранировать кавычки JS и экранировать PHP:h(njs());
{#njsn:ИМЯ} — экранировать кавычки JS, убрать \n и экранировать PHP:h(njsn());
{#njs#:ИМЯ} — экранировать кавычки JS и экранировать PHP:ekr(h(njs()));
{#njsn#:ИМЯ} — экранировать кавычки JS, убрать \n и экранировать PHP:ekr(h(njsn()));
{c:ИМЯ} — убрать справа и слева пробелы и кавычки PHP:c();
{length:ИМЯ} — вывести число символов в переменной PHP:strlen();
{nl2br:ИМЯ} — переделать \n в <BR/> PHP:nl2br();
{#nl2br:ИМЯ} — переделать \n в <BR/> и экранировать HTML PHP:nl2br(h());
{date:ИМЯ} — перевести число UnixTime в дату вида 2021-10-01 12:01:23 PHP:date('Y-m-d H:i:s',N);
{0XXX:ИМЯ} — если первый символ 0, печатать число с этим количеством знаков {06:id} 000012 PHP:sprintf('%'.XXX.'d',N);{
chr:СТРОКА} — создать символ из кода, например: {chr:160}{chr:169}{chr:151}{chr:171}{chr:187}
PHP: chr(intval());
{LL:СТРОКА} — вывести переменную словаря движка для установленного языка например {LL@Editor:fidopost} {LL@Editor:fidopost|arg1|arg2|...|argXX}
{print:ПОФИГ} — то же, что {help}, но с неудобным форматированием
{div:ЧИСЛО-ЧИСЛО} — результат деления двух чисел, пример: {divm:{unic}-100}
{divm:ЧИСЛО-ЧИСЛО} — остаток от деления двух чисел, пример: {divm:{unic}-100}
?>
Также темплейты поддерживают условия. Хотя не очень сложные, всего один уровень вложенности. Формат например такой:
<?php
{ИМЯ:
ABC:вывести этот текст, если переменная равна 'ABC'
Иван:вывести этот текст, если переменная равна 'Иван'
:вывести этот текст, если переменная равна пустому значению
*:вывести этот текст, если переменная равна любому значению
}
?>
Другая форма записи условия — в одну строку. Просто везде, где был бы перевод строки, ставим знак |, выглядит так:
<?php
{ИМЯ:|ABC:Значение равно ABC|:Пустое значение|*:Любое значение}
?>
Эти две формы записи можно комбинировать — в качестве строк первой формы вставлять вторую форму:
<?php
{ИМЯ:
значение1:{unic:0|вы не залогинены!|*:вы залогинены!}
...
}
?>