Как вставить PHP код в шаблон или создание плагинов для MSE-Script

Seopirat

Admin
Команда форума
Приватовец
VIP
Прошёл марафон
Регистрация
21 Фев 2017
Сообщения
2.169
Реакции
1.556
Баллы
113
Как вставить PHP код в шаблон или создание плагинов для MSE-Script

Шаблоны (файлы шаблонов) предназначены для вывода информации в удобном виде. Любая логика в шаблоне, является плохой практикой. Простейшую логику, можно реализовать стандартным функционалом Smarty. Данный шаблонизатор прекрасно работает с логическими условиями, циклами, математическими функциями и многим другим. Большую часть потребностей, можно реализовать именно таким способом. Однако, если вам необходимо более серьезные решения, тогда потребуется создать собственный плагин.

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

Плагины можно разделить на несколько групп, я выделю основные 2 - это функции (function) и модификаторы (modifier). Функции служат для выполнения каких-либо логический операций, обработки данных т.д.. Модификаторы служат для модификации данных внутри переменных, которым они присваиваются. Функция вставляется в шаблон тегом {pluginName}, где pluginName - название плагина. Модификатор нужно использовать вместе с разделителем "|" и самой переменной - {$varName|pluginName}. Простейшим примером плагина-модификатора, является используемый многими пользователями lower, который конвертирует все символы переменной в нижний регистр. Например конструкция {$track.artistNames.0|lower} возвратит название исполнителя трека в нижнем регистре. В качестве примера плагина-функции, можно привести плагин {getTrackList list="xxxxxx"}, который интегрирует указанный плейлист на нужную страницу.

Теперь, можно перейти к созданию простейшего плагина. Создадим плагин, который будет выводить текущую дату, назовем его getThisDate. Для корректной работы плагинов, они должны соответствовать некоторым правилам. Первое правило - правильное имя файла:
[PLUGIN_TYPE].[PLUGIN_NAME].php
Следовательно, файл нашего плагина будет называться function.getThisDate.php. Создадим его и добавим в папку с плагинами: /vendor/smarty/smarty/libs/plugins/.

Второе правило - функция. Все логические операции происходят внутри функций, чтобы smarty мог правильно вызвать функцию внутри плагина, она так же должна иметь специальное имя -
smarty_[PLUGIN_TYPE]_[PLUGIN_NAME]
. Наш плагин будет иметь вид:
PHP:
<?php
function smarty_function_getThisDate($params, &$smarty)
{
    # Eeee... This is plugin!
}
Вы, наверное, заметили парамеры $params, &$smarty, которые передаются в функцию. Это обязательные параметры, которые необходимы для корректного работы программного кода. Собственно, это и будет третьим правилом.

Теперь, перейдем к самой "начинке". Так как мы должны вывести текущую дату, воспользуемся стандартной php функцией date(), и функцией return, которая вернет результат работы нашего суперплагина в шаблон.
PHP:
<?php
function smarty_function_getThisDate($params, &$smarty)
{
    return(date("m.d.y"));
}
Плагин готов, остается вставить тег {getThisDate} в нужно место шаблона, получаем:

1523805953073.png

Несколько абзацев назад, я говорил о обязательном параметре $params, в него мы можем передавать любые данные из шаблона! Усложним наш плагин, добавив пользовательскую настройку формата даты:
PHP:
<?php
function smarty_function_getThisDate($params, &$smarty)
{
   # Проверка на наличие пользовательского формата внутри переданных параметрров.
   # Если пользователь не передал нужный формат, выведем дату в стандатном (m.d.y)
   $dateFormat = isset($params['format']) ? $params['format'] : "m.d.y";
   return(date($dateFormat));
}
В самом шаблоне:
{getThisDate format="H:i:s"}
Результат:

1523806400135.png

Плагины очень просты в использовании и разработке, но тем не менее могут существенно расширить возможности CMS.
 

Вложения

anudalov

Новичок
Регистрация
2 Ноя 2018
Сообщения
5
Реакции
0
Баллы
1
ну в принице можно вставить
 
Сверху Снизу