- Регистрация
- 21 Фев 2017
- Сообщения
- 2.168
- Реакции
- 1.556
- Баллы
- 113
Как вставить PHP код в шаблон или создание плагинов для MSE-Script
Шаблоны (файлы шаблонов) предназначены для вывода информации в удобном виде. Любая логика в шаблоне, является плохой практикой. Простейшую логику, можно реализовать стандартным функционалом Smarty. Данный шаблонизатор прекрасно работает с логическими условиями, циклами, математическими функциями и многим другим. Большую часть потребностей, можно реализовать именно таким способом. Однако, если вам необходимо более серьезные решения, тогда потребуется создать собственный плагин.
Плагин - это некий программный код, способный расширять возможности шаблона и CMS в целом без правок ядра. Такой подход обеспечивает независимость от обновлений скрипта, удобство переноса, установки и использования. Плагин никогда "не затрется" при обновлении скрипта, а его установка заключается в простейшем "копировать - вставить".
Плагины можно разделить на несколько групп, я выделю основные 2 - это функции (function) и модификаторы (modifier). Функции служат для выполнения каких-либо логический операций, обработки данных т.д.. Модификаторы служат для модификации данных внутри переменных, которым они присваиваются. Функция вставляется в шаблон тегом {pluginName}, где pluginName - название плагина. Модификатор нужно использовать вместе с разделителем "|" и самой переменной - {$varName|pluginName}. Простейшим примером плагина-модификатора, является используемый многими пользователями lower, который конвертирует все символы переменной в нижний регистр. Например конструкция {$track.artistNames.0|lower} возвратит название исполнителя трека в нижнем регистре. В качестве примера плагина-функции, можно привести плагин {getTrackList list="xxxxxx"}, который интегрирует указанный плейлист на нужную страницу.
Теперь, можно перейти к созданию простейшего плагина. Создадим плагин, который будет выводить текущую дату, назовем его getThisDate. Для корректной работы плагинов, они должны соответствовать некоторым правилам. Первое правило - правильное имя файла:
Второе правило - функция. Все логические операции происходят внутри функций, чтобы smarty мог правильно вызвать функцию внутри плагина, она так же должна иметь специальное имя -
Вы, наверное, заметили парамеры $params, &$smarty, которые передаются в функцию. Это обязательные параметры, которые необходимы для корректного работы программного кода. Собственно, это и будет третьим правилом.
Теперь, перейдем к самой "начинке". Так как мы должны вывести текущую дату, воспользуемся стандартной php функцией date(), и функцией return, которая вернет результат работы нашего суперплагина в шаблон.
Плагин готов, остается вставить тег {getThisDate} в нужно место шаблона, получаем:
Несколько абзацев назад, я говорил о обязательном параметре $params, в него мы можем передавать любые данные из шаблона! Усложним наш плагин, добавив пользовательскую настройку формата даты:
В самом шаблоне:
Плагины очень просты в использовании и разработке, но тем не менее могут существенно расширить возможности CMS.
Шаблоны (файлы шаблонов) предназначены для вывода информации в удобном виде. Любая логика в шаблоне, является плохой практикой. Простейшую логику, можно реализовать стандартным функционалом Smarty. Данный шаблонизатор прекрасно работает с логическими условиями, циклами, математическими функциями и многим другим. Большую часть потребностей, можно реализовать именно таким способом. Однако, если вам необходимо более серьезные решения, тогда потребуется создать собственный плагин.
Плагин - это некий программный код, способный расширять возможности шаблона и CMS в целом без правок ядра. Такой подход обеспечивает независимость от обновлений скрипта, удобство переноса, установки и использования. Плагин никогда "не затрется" при обновлении скрипта, а его установка заключается в простейшем "копировать - вставить".
Плагины можно разделить на несколько групп, я выделю основные 2 - это функции (function) и модификаторы (modifier). Функции служат для выполнения каких-либо логический операций, обработки данных т.д.. Модификаторы служат для модификации данных внутри переменных, которым они присваиваются. Функция вставляется в шаблон тегом {pluginName}, где pluginName - название плагина. Модификатор нужно использовать вместе с разделителем "|" и самой переменной - {$varName|pluginName}. Простейшим примером плагина-модификатора, является используемый многими пользователями lower, который конвертирует все символы переменной в нижний регистр. Например конструкция {$track.artistNames.0|lower} возвратит название исполнителя трека в нижнем регистре. В качестве примера плагина-функции, можно привести плагин {getTrackList list="xxxxxx"}, который интегрирует указанный плейлист на нужную страницу.
Теперь, можно перейти к созданию простейшего плагина. Создадим плагин, который будет выводить текущую дату, назовем его getThisDate. Для корректной работы плагинов, они должны соответствовать некоторым правилам. Первое правило - правильное имя файла:
Следовательно, файл нашего плагина будет называться function.getThisDate.php. Создадим его и добавим в папку с плагинами: /vendor/smarty/smarty/libs/plugins/.[PLUGIN_TYPE].[PLUGIN_NAME].php
Второе правило - функция. Все логические операции происходят внутри функций, чтобы smarty мог правильно вызвать функцию внутри плагина, она так же должна иметь специальное имя -
. Наш плагин будет иметь вид:smarty_[PLUGIN_TYPE]_[PLUGIN_NAME]
PHP:
<?php
function smarty_function_getThisDate($params, &$smarty)
{
# Eeee... This is plugin!
}
Теперь, перейдем к самой "начинке". Так как мы должны вывести текущую дату, воспользуемся стандартной php функцией date(), и функцией return, которая вернет результат работы нашего суперплагина в шаблон.
PHP:
<?php
function smarty_function_getThisDate($params, &$smarty)
{
return(date("m.d.y"));
}
Несколько абзацев назад, я говорил о обязательном параметре $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"}
Плагины очень просты в использовании и разработке, но тем не менее могут существенно расширить возможности CMS.
Вложения
-
652 байт Просмотры: 0