> For the complete documentation index, see [llms.txt](https://docs.mmoweb.biz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mmoweb.biz/gaidy/adaptaciya-shablona/osnova-shablonizatora.md).

# Основа шаблонизатора

В CMS MMOWEB упрощена шаблонизация сайта на сколько это было возможно, добавлены теги отвечающие за рендеринг виджетов и основных элементов движка.

## &#x20;**Список основных тегов.**

```markup
<html lang="{$_LANG}">
  <head>
    {$_SEO_HEAD}
  </head>
  <body class="body">
    {$_SEO_BODY}
      .....
    {$_SEO_FOOTER}
  </body>
</html>
```

## SEO теги и подключение js и css файлов.

| ТЕГ              | Описание                                                                                        |
| ---------------- | ----------------------------------------------------------------------------------------------- |
| {$\_LANG}        | Тег языка распростряняется на все шаблоны содержить ru,en итд в зависимости от выбранного языка |
| {$\_SEO\_HEAD}   | Этот тег парсится из файлов Headers.php и IncludeJsCss.php                                      |
| {$\_SEO\_BODY}   | Этот тег парсится из файла IncludeJsCss.php                                                     |
| {$\_SEO\_FOOTER} | Этот тег парсится из файла IncludeJsCss.php                                                     |

Рекомендовано для сайтов использующие переключения языков все заголовки содержанию информацию на нескольких языках к примеру такие как title description и тому подобные выносить в файл Headers.php формат:

```php
return array(
    'ru' => array(
        //Общий конфиг для лк
        'init' => array(
            'head' => array(
                ['idx' => 'title',      'typex' => 'title',                                         'content' => '%site_name% Сайт сервера %server_name%.'],
                ['idx' => 'og_title',   'typex' => 'meta', 'property' => 'og:title',                'content' => '%site_name% Сайт сервера %server_name%.'],
                ['idx' => 'og_s_name',  'typex' => 'meta', 'property' => 'og:site_name',            'content' => '%site_name%'],
                ['idx' => 'og_type',    'typex' => 'meta', 'property' => 'og:type',                 'content' => 'website'],
                ['idx' => 'og_url',     'typex' => 'meta', 'property' => 'og:url',                  'content' => '%url%'],
                ['idx' => 'desc',       'typex' => 'meta', 'name' => 'description',                 'content' => '%site_name% Сайт сервера %server_name%!'],
                ['idx' => 'og_desc',    'typex' => 'meta', 'property' => 'og:description',          'content' => '%site_name% Сайт сервера %server_name%!'],
                ['idx' => 'tw_desc',    'typex' => 'meta', 'property' => 'twitter:description',     'content' => '%site_name% Сайт сервера %server_name%!'],
                ['idx' => 'keywords',   'typex' => 'meta', 'name' => 'keywords',                    'content' => 'mmoweb, mmoweb4'],

            ),
        ),
    ),
    'en' => array(),
);
```

Для создания источника тега необходимо создать по примеру запись в массиве `head` обязательные поля `idx` - ключ тега для замены из файла IncludeJsCss.php в случаях когда сайт содержит больше 1 страницы и необходимо заменить тег на другой `typex` - ключ указывающий, что за тип тега может иметь следующие значения title, meta, link, script, html

**Значения поля `typex`**

| Ключ   | Описание                                                                     |
| ------ | ---------------------------------------------------------------------------- |
| title  | Принемаемый параметр **content**                                             |
| meta   | Может принемать любые ключи                                                  |
| link   | Может принемать любые ключи                                                  |
| script | Может принемать любые ключ. Доп.ключ на выполнения javascript кода ключ `js` |
| html   | Принемает параметр `html`                                                    |

### Пример создания тега:

```php
['idx' => 'favicons', 'typex' => 'link', 'rel' => 'shortcut icon', 'href' => TEMPLATE_DIR.'/images/favicon.ico'],
```

### Результат:&#x20;

```markup
<link rel="shortcut icon" href="/template/site/multiworld/images/favicon.ico">
```

Тут наглядно видно, что объявленный параметр rel передался в html со значением из ключа, и так можно передать любой ключ со значением.

### Параметры автозамены в тегах

В CMS MMOWEB есть дополнительная возможность передавать определенные вложения которые будут на выходе замениться в зависимости от настроек и выбранных параметров пользователя, к примеру %site\_name% заменится на название проекта которое вы указали в админ панели mmoweb.biz.

### Доступные значения.

| Значение                 | Описание                                     |
| ------------------------ | -------------------------------------------- |
| %site\_name%             | Имя проекта                                  |
| %server\_name%           | Имя текушего сервера                         |
| %platform\_server\_name% | Платформа и имя сервера                      |
| %url%                    | Ссылка на сайт пример: <https://mmoweb.biz/> |

Для более продвинутых можно самостоятельно добавить значения Class/SeoX.php method initReplaceTeg()

## Редактирование IncludeJsCss.php &#x20;

IncludeJsCss.php по сравнению с Headers.php имеет массив с body и footer вставляя теги в эти поля они будут отрисовываться в одноименных шаблонных тегах {$\_SEO\_HEAD} и {$\_SEO\_FOOTER}  принцип добавления такой же, как и Headers.php.

## &#x20;**Добавление тега из шаблона**

Бывают задачи добавить JS или CSS только в определенном шаблоне, для этого есть конструкция

```markup
{$.site._SEO->addTegHTML('head', 'telInput_css', 'link', ['rel'=>'stylesheet', 'href'=> $.const.VIEWPATH~'/panel/assets/css/intl-telInput/intlTelInput.css?ver=0.1'])}
{$.site._SEO->addTegHTML('footer', 'telInput', 'script', ['src'=> $.const.VIEWPATH~'/panel/assets/js/plugins/intl-telInput/intlTelInput.js?ver=0.1'])}
```

И при вызове шаблона, где объявлены эти методы будет произведена вставка перед отрисовкой.

## Теги виджетов на сайте

Су шествует набор тегов шаблонизатора, для вставки модулей к примеру: статус серверов переключение языка и прочего.

### Список доступных тегов для сайта

| Тег                                       | Описание                                                                                                                                                                                                                                                                           |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| {language tpl='language.tpl'}             | <p>Тег выбора языка шаблон language.tpl</p><p>аргумент tpl необязательный, сделан для подмены дефолтного шаблона на кастомный </p>                                                                                                                                                 |
| {include 'site:is\_login.tpl'}            | Это не совсем тег это конструкция сразу подключает нужный фрагмент в шаблон в нашем случаи is\_login.tpl                                                                                                                                                                           |
| {server count=3 tpl='server\_status.tpl'} | <p>Виджет серверов онлайн шаблон server\_status.tpl доп поля настраиваются из админки. Можно передать сколько вывести элементов count=3. </p><p>2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный </p>                                                 |
| {forum count=5 tpl='forum.tpl'}           | <p>Последние темы с форума настройка источник из админки шаблон forum.tpl. Можно передать сколько вывести элементов count=5</p><p>2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный </p>                                                               |
| {rating count=10 tpl='rating.tpl'}        | <p>Сложный виджет, у него есть иерархия платформа тип статистики главный шаблон rating.tpl под категории /rating/lineage2/top\_clan.tpl. Можно передать сколько вывести элементов count=5</p><p>2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный </p> |
| {news count=3 page=1}                     | Новостной блок, принимает параметры кол-во новостей и страницу, передача их не обязательна есть дефолтные параметры 10,1 шаблон news.tpl                                                                                                                                           |
| {iblock ikey='event' count=3}             | Виджет инфо блока - блоки создаются в админ панели и наполняются контентом                                                                                                                                                                                                         |
| {streams count=3 tpl='streams.tpl'}       | <p>Виджет стимов - блоки создаются в админ панели и наполняются контентом</p><p>2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный </p>                                                                                                                 |
| {$.site.dir\_site}                        | Путь к выбронному шаблону пример: src="/template/site/default"                                                                                                                                                                                                                     |
| *{$L\_MENU\_BTN\_HOME}*                   | *Тег языковой, настраивается либо из /Lang/ru.php в шаблоне либо через админку*                                                                                                                                                                                                    |
