Окт
7

Подключаем шаблонизатор Twig к WordPress. Часть 1.

twig1 Подключаем шаблонизатор 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.”

  • Макс 07.10.2011 в 2:06 дп

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

Оставить комментарий

О блоге


Добро пожаловать на IT блог, созданный простым вебмастером для таких же вебмастеров. В котором я постараюсь делиться своим опытом, знакомить Вас со своими разработками, делиться полезными доками и статьями.

Быть всегда в курсе последних событий и получать свежую информацию, Вы всегда сможете подписавшись на ленту блога:

Add to Google

Категории

Новое на сайте

Популярное

Архив

Блогеры пишут

  • Роман Чернышов: Про ошибку отписал выше, а вот этот кусок кода(запрос в БД) совершенно не верен 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, я считаю что все эти зна [...]

Портфолио Все работы



www.detskiy-mir.net
www.detskydoctor.ru
www.betelit.ru
www.all-alliance.ru
www.etalon-dv.ru
www.a-n-exclusive.ru/
www.studiostuning.com
www.videogonok.ru
www.karona.org
www.algor-realty.ru
www.carpfishing.by
www.nkengu.ru
www.vrn-expert.ru
www.property-greek.com
www.timbodanja.ru
www.romyk.ru
www.betcompany.ru
www.domcons.ru

и многие другие...