САЙТОСТРОЙ.РУ
Построй свой сайт!

Пишем плагин-модификатор для Smarty

опубликовано 21.09.2014

У шаблонизаторы Smarty встроены прекрасные возможности по фильтрации выводимой информации и написания собственных плагинов в виде модификаторов, функций и т.п. Их имена и параметры и указываюится в шаблоне и позволяют удобно и гибко преобразовывать содержание к нужному виду. Мы рассмотрим создание плагина на примере модификатора, позволяющего превратить текстовые ссылки в гиперссылки. 

Для того, чтобы расширить функционал Smarty, нужно создать файл в папке libs/plugins/. Пусть наш файл называется modifier.activate_href.php (это принятое обозначение для файлов плагинов). Содержание его будет таким:

function smarty_modifier_activate_href($string)
{
    $string = preg_replace("/([^w/])((www|ftp).[^ ,"tnr<]*)/is", "$1http://$2", $string);
    $string = preg_replace("/([^w"'])((ht|f)tp(s)?://[w]+[^ ,"nrt<]*)/is", "$1$2", $string);
    return($string);
}
?>

Мы описываем функцию smarty_modifier_activate_href, где activate_href - выбранное нами имя модификатора. Эта функция получает себе в качестве параметра отображаемое содержание в виде строки. Теперь мы можем провести над этой строкой операции и вернуть её при помощи return.

Разберёмся с логикой работы нашего конкретного плагина. Мы преобразуем строку в 2 прохода. В первый мы ищем подстроки, начинающиеся с "/www" или "/ftp" для того, чтобы подставить для них префикс "http://". Вторым выражением мы непосредственно активизируем ссылки, заключив их в тег A.

Обращу внимание, что ссылки заменяются не "в лоб", а при нахождении либо после пробельных символов (шаблон w), либо после кавычки или апострофа. Это сделано для того, чтобы застраховаться от замен внутри какой-то большей строки.

Посмотрим, что у нас получилось. Вставим в нашей CMS ссылку в текстовом виде:

ссылка в текстовом виде

А в шаблоне вывода добавим наш модификатор через вертикальную черту:

 

{$data.content|activate_href}

 

В результате наша ссылка стала активной:

ссылка стала активной

Благодаря модификаторам Smarty можно задавать цепочки из фильтров вывода, моментально изменяю логику отображения. А плагины-функции позволяют использовать так же и параметры фильтрации, что на порядок расширяет возможности плагинов.

теги: php, smarty

Комментарии и вопросы

Статью никто не комментировал.


Задать вопрос или оставить комментарий

Ваше имя:
Комментарий:
Код с картинки справа:=


Просим с уважением относиться к труду автора сайта и при копировании документов указывать ссылки на http://saytostroy.ru.