Подключаем шаблонизатор Twig к WordPress. Часть 1.
Добавляем шаблонизатор Twig как плагин для WordPress.
Возможно, многие из вас сейчас крутят у веска пальцем и задаются вопросом – «Зачем это нужно?», и возможно вполне правы, наверняка это весьма сумасшедшая идея, но я все же скажу – «а почему бы и нет?».
Для начала познакомимся с Twig. Что это такое? – Twig это PHP шаблонизатор нового поколения, написанный Fabien Potencier, создателем фреймворка Symfony, в последней версии которого он как раз используется.
Как говорится на официальном сайте, данного чуда:
Быстрый – Twig компилирует шаблоны и при желании складывает их в Кеш, при этом скомпилированный PHP код полностью соответствует ООП, оптимизирован и скорость его последующей работы равна скорости работы обычного PHP кода.
Безопасный – Twig имеет изоляционный режим (режим песочницы), для работы с ненадежным кодом шаблона. Пользователь, имеющий доступ к шаблону, и возможность его редактировать не сможет воспроизвести произвольный код, или получить доступ к данным не касающихся непосредственно его, и нанести ущерб системе в целом.
Гибкий – Twig оснащен гибким лексическим и синтаксическим анализатором кода, это позволяет разработчику определять собственные пользовательские теги и фильтры.
И множество прочих достоинств, таких как: краткость, ориентированный на шаблоны синтаксис, полнофункциональный, легок в изучении, сообщения об ошибках и т.д.
Думаю предельно понятно почему я решил использовать именно твиг в качестве шаблонизатора для CMS WordPress, кроме всего это будет способствовать организации кода в шаблоне. Но главной причиной можно считать любопытство и интерес к данной задумке, удовлетворение не преодолимого желания привинтить твиг к своему блогу.
Я не очень люблю смешивать HTML и PHP теги, по этому в самописных проектах я предпочитаю использовать паттерн MVC, но в данном случаи такой возможности нет. Поэтому, после долгих размышлений, о том как реализовать мою идею, было принято решение написать плагин, который будет обеспечивать все необходимые задачи и позволит использовать twig.
Сначала я создал папку с именем плагина wp_twig_engine, затем в неё копируем папку Lib шаблозатора, скачать шаблонизатор с офф. сайта, таким образом, мы превратили весь набор скриптов твига в плагин для WP.
Затем создаем главный файл плагина: WP-twig.php, с содержимым
<?php /* Plugin Name: WordPress Twig templating engine Version: 1.0 Plugin URI: http://rche.ru */ //Main twig library autoloader file require_once dirname(__FILE__) . '/lib/Twig/Autoloader.php'; //My custom class made, I also want it to be autoloaded require_once dirname(__FILE__) . '/Wp_TwigEngine.php'; function twigAutoLoad() { Twig_Autoloader::register(); Wp_TwigEngine_Autoloader::register(); } add_action('init', 'twigAutoLoad'); ?> |
Далее добавляем автозагрузку пользовательского класса, создаем файл в директории плагина: Wp_TwigEngine.php
<? class Wp_TwigEngine_Autoloader { static public function register() { ini_set('unserialize_callback_func', 'spl_autoload_call'); spl_autoload_register(array(new self, 'autoload')); } static public function autoload($class) { if (0 !== strpos($class, 'Wp_TwigEngine')) { return; } if (file_exists ( $file = dirname(__FILE__) . '/../' . str_replace(array('_', "\0"), array('/', ''), $class) . '.php')) { echo($file); exit; require $file; } } } |
Таким образом получаем плагин обрабатывающий шаблоны Twig, но для этого его еще предстоит немного настроить, для работы с основной папкой шаблона WP. Об этом в следующей статье.
Похожие записи
1 Comment to “Подключаем шаблонизатор Twig к WordPress. Часть 1.”
Оставить комментарий
О блоге
Категории
Новое на сайте
- Парсер курсов валют на PHP
- Разбираемся с mySQL JOIN, визуальное представление.
- Ширина, высота и позиция элемента. Примеры javaScript VS jQuery.
- 5 вариантов добавления watermark (водяной знак) на изображение, средствами PHP
- Определение координат расположения объекта, с помощью PHP (gMaps, Я.Карты)
- Как стать вебмастером, с чего начать?
- PHP PDO, Краткая инструкция.
- Скрипт постраничной навигации (расширенная версия)
- Скрипт управления баннерами на сайте, подсчет CTR, графики
- Изменить стиль Select с помощью jQuery
Блогеры пишут
-
Роман Чернышов: Про ошибку отписал выше, а вот этот кусок кода(запрос в БД) совершенно не верен SELECT COUNT(*) FRO [...]
-
Роман Чернышов: Данная ошибка означает, что вы пытаеттесь делить на ноль, чего делать нельзя. Очевидно, что переменн [...]
-
Илья: Ребят смотрите вот код, при запуске страници колличество страниц высвечивается, но кооличество замет [...]
-
Илья: <?php $result77 = mysql_query("SELECT str FROM options", $db); $myrow77 = mysq [...]
-
Илья: Скрипт копирую один в один только подключение свое и меняю таблицу базы данных
-
Илья: к этомой строке $total = intval(($posts - 1) / $num) + 1; выдается вот такая ошибка Warning: Divi [...]
-
Александр: все понятно и просто, отличная тсатья спасибо))
-
Роман Чернышов: Да, вообще конечно реально. Возможно подобный расширенный поиск будет реализован в рамках CMS osReal [...]
-
тим: Добрый день! А реально сделать что то подобное http://www.arendatordom.ru/zayavkasnyat/ ? желательно [...]
-
Brovarchanin89: Большая благодарность автору. Хотя из написанного понято мною процентов 20, я считаю что все эти зна [...]
Портфолио Все работы


и многие другие...
Ждем продолжения статьи, идея хоть и кажется безумной, но интересно) в одно время думал о подключении смарти, но так и не реализовал это на деле…