Язык разметки темплейтов

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

В темплейтах используется свой язык разметки. Он не очень умный, но простой, и так уж сложилось исторически. Вот его команды:

{ИМЯ— подставить вместо этого имя переменной

{#ИМЯ} — подставить имя переменной, экранируя HTML-сущности

{КОМАНДА:ИМЯ ИЛИ СТРОКА}

{
#:ИМЯ} — то же, что {#ИМЯ} {#:<жопа>} --> &lt;жопа&gt; 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:id000012 PHP:sprintf('%'.XXX.'d',N);

{
chr:СТРОКА— создать символ из коданапример: {chr:160}{chr:169}{chr:151}{chr:171}{chr:187}
PHPchr(intval());
{
LL:СТРОКА— вывести переменную словаря движка для установленного языка например {LL@Editor:fidopost} {LL@Editor:fidopost|arg1|arg2|...|argXX}
{print:
ПОФИГ— то жечто {help}, но с неудобным форматированием
{div:ЧИСЛО-ЧИСЛО— результат деления двух чиселпример: {divm:{unic}-100}
{
divm:ЧИСЛО-ЧИСЛО— остаток от деления двух чиселпример: {divm:{unic}-100}

Также темплейты поддерживают условия. Хотя не очень сложные, всего один уровень вложенности. Формат например такой:

{ИМЯ:
ABC:вывести этот текстесли переменная равна 'ABC'
Иван:вывести этот текстесли переменная равна 'Иван'
:вывести этот текстесли переменная равна пустому значению
*:вывести этот текстесли переменная равна любому значению
}

Другая форма записи условия — в одну строку. Просто везде, где был бы перевод строки, ставим знак |, выглядит так:

{ИМЯ:|ABC:Значение равно ABC|:Пустое значение|*:Любое значение}

Эти две формы записи можно комбинировать — в качестве строк первой формы вставлять вторую форму:

{ИМЯ:
значение1:{unic:0|вы не залогинены!|*:вы залогинены!}
...
}

 


    посещений 2