# Шаблонизатор TPL

В CMS MMOWEB используется шаблонизатор [Fenom](https://github.com/fenom-template/fenom) он легок быстр и имеет хорошую [документацию](https://github.com/fenom-template/fenom/blob/master/docs/ru/readme.md).

## Документация Fenom

**Внимание! Документация в режиме беты, тексты могут содержать опечатки**

#### Fenom

* [Быстрый старт](https://github.com/fenom-template/fenom/blob/master/docs/ru/start.md)
* [Разработка Fenom](https://github.com/fenom-template/fenom/blob/master/docs/ru/dev/readme.md)
* [Настройки](https://github.com/fenom-template/fenom/blob/master/docs/ru/configuration.md)
* [Синтаксис](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md)
  * [Переменные](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5)
  * [Значения](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F)
  * [Массивы](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B)
  * [Операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md)
  * [Модификаторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%9C%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B)
  * [Теги](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%A2%D0%B5%D0%B3%D0%B8)
  * [Параметры тегов](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2)

#### Теги

[Использование](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#%D0%A2%D0%B5%D0%B3%D0%B8) тегов.

* [set](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/set.md), [add](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/set.md#add) и [var](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/set.md#var) — определение значения переменной
* [if](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/if.md), [elseif](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/if.md#elseif) и [else](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/if.md#else) — условный оператор
* [foreach](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md), [foreachelse](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md#foreachelse), [break](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md#break) и [continue](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md#continue) — перебор элементов массива или объекта
* [switch](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/switch.md) и [case](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/switch.md#case) — групповой условный оператор
* [cycle](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/cycle.md) — циклический перебор массива значений
* [include](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/include.md), [insert](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/include.md#insert) — вставляет и исполняет указанный шаблон
* [extends](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/extends.md), [use](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/extends.md#use), [block](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/extends.md#block), [parent](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/extends.md#parent) и [paste](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/extends.md#paste) — [наследование](https://github.com/fenom-template/fenom/blob/master/docs/ru/inheritance.md) шаблонов
* [filter](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/filter.md) — применение модификаторов к фрагменту шаблона
* [ignore](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/ignore.md) — игнорирование тегов Fenom
* [macro](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/macro.md) и [import](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/macro.md#macro) — пользовательские функции шаблонов
* [autoescape](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/autoescape.md) — экранирует фрагмент шаблона
* [raw](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/raw.md) — отключает экранирование фрагмента шаблона
* [unset](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/unset.md) — удаляет переменные
* или [добавьте](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2) свои

Устаревшие теги

* [for](https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/for.md), `forelse`, `break` and `continue` — цикл

#### Модификаторы

[Использование](https://github.com/fenom-template/fenom/blob/master/docs/ru/syntax.md#modifiers) модификаторов.

* [upper](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/upper.md) aka `up` — конвертирование строки в верхний регистр
* [lower](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/lower.md) aka `low` — конвертирование строки в нижний регистр
* [date\_format](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/date_format.md) - форматирует дату, штамп времени через strftime() функцию
* [date](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/date.md) - форматирует дату, штамп времени через date() функцию
* [truncate](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/truncate.md) — обрезает текст до указанной длины
* [escape](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/escape.md) aka `e` — экранирует строку
* [unescape](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/unescape.md) — убирает экранирование строки
* [strip](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/strip.md) — удаляет лишние пробелы
* [length](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/length.md) — подсчитывает длину строки, массива, объекта
* [in](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/in.md) — проверяет наличие значения в массиве
* [match](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/match.md) — проверяет соответствие паттерну
* [ematch](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/ematch.md) — проверяет соответствие регулярному выражению
* [replace](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/replace.md) — заменяет все вхождения подстроки на строку замену
* [ereplace](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/ereplace.md) — заменяет все соответствия регулярному выражению на строку замену.
* [split](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/split.md) — разбивает строку по подстроке
* [esplit](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/esplit.md) — разбивает строку по регулярному выражению
* [join](https://github.com/fenom-template/fenom/blob/master/docs/ru/mods/join.md) — объединяет массив в строку
* так же разрешены функции: `json_encode`, `json_decode`, `count`, `is_string`, `is_array`, `is_numeric`, `is_int`, `is_object`, `strtotime`, `gettype`, `is_double`, `ip2long`, `long2ip`, `strip_tags`, `nl2br`
* или [добавьте](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2) свои

#### Операторы

* [Арифметические операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B) — `+`, `-`, `*`, `/`, `%`
* [Логические операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B) — `||`, `&&`, `!$var`, `and`, `or`, `xor`
* [Операторы сравнения](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F) — `>`, `>=`, `<`, `<=`, `==`, `!=`, `!==`, `<>`
* [Битовые операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B) — `|`, `&`, `^`, `~$var`, `>>`, `<<`
* [Операторы присвоения](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D0%BF%D1%80%D0%B8%D1%81%D0%B2%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F) — `=`, `+=`, `-=`, `*=`, `/=`, `%=`, `&=`, `|=`, `^=`, `>>=`, `<<=`
* [Строковые операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B) — `$str1 ~ $str2`, `$str1 ~~ $str2`, `$str1 ~= $str2`
* [Тернарные операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%A2%D0%B5%D1%80%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B) — `$a ? $b : $c`, `$a ! $b : $c`, `$a ?: $c`, `$a !: $c`
* [Проверяющие операторы](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D1%8E%D1%89%D0%B8%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B) — `$var?`, `$var!`
* [Оператор тестирования](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) — `is`, `is not`
* [Оператор содержания](https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80-%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D1%8F) — `in`, `not in`

#### Расширение

* [Источники шаблонов](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2)
* [Добавление модификаторов](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2)
* [Добавление тегов](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D0%B3%D0%BE%D0%B2)
* [Расширение тестового оператора](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0)
* [Расширение глобальной переменной](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md#%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B3%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9)
* [Расширение Fenom](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extend.md)
* [Add-ons](https://github.com/fenom-template/fenom/blob/master/docs/ru/ext/extensions.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mmoweb.biz/ru/razrabotchikam/adaptaciya-shablona/shablonizator-tpl.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
