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

Вводная часть

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

Список основных тегов.

<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 формат:

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

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

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

Результат:

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

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

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

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

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

Значение

Описание

%site_name%

Имя проекта

%server_name%

Имя текушего сервера

%platform_server_name%

Платформа и имя сервера пример: Lineage2 > Gracia Final

%url%

Ссылка на сайт пример: https://mw4.mmoweb.ru/

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

Редактирование IncludeJsCss.php

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

Добавление тега из шаблона

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

{$.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'}

Тег выбора языка шаблон language.tpl

аргумент tpl необязательный, сделан для подмены дефолтного шаблона на кастомный

{include 'site:is_login.tpl'}

Это не совсем тег это конструкция сразу подключает нужный фрагмент в шаблон в нашем случаи is_login.tpl

{server count=3 tpl='server_status.tpl'}

Виджет серверов онлайн шаблон server_status.tpl доп поля настраиваются из админки. Можно передать сколько вывести элементов count=3.

2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный

{forum count=5 tpl='forum.tpl'}

Последние темы с форума настройка источник из админки шаблон forum.tpl. Можно передать сколько вывести элементов count=5

2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный

{rating count=10 tpl='rating.tpl'}

Сложный виджет, у него есть иерархия платформа тип статистики главный шаблон rating.tpl под категории /rating/lineage2/top_clan.tpl. Можно передать сколько вывести элементов count=5

2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный

{news count=3 page=1}

Новостной блок, принимает параметры кол-во новостей и страницу, передача их не обязательна есть дефолтные параметры 10,1 шаблон news.tpl

{iblock ikey='event' count=3}

Виджет инфо блока - блоки создаются в админ панели и наполняются контентом

{streams count=3 tpl='streams.tpl'}

Виджет стимов - блоки создаются в админ панели и наполняются контентом

2 аргумент необязательный, сделан для подмены дефолтного шаблона на кастомный

{$.site.dir_site}

Путь к выбронному шаблону пример: src="/template/site/default"

{$L_MENU_BTN_HOME}

Тег языковой, настраивается либо из /Lang/ru.php в шаблоне либо через админку

Last updated