Плагины Kohana-for-Wordpress и Wordpress-for-Kohana – быстрый взгляд

Просмотров: 13321Комментарии: 3
Web frameworks

По просьбе читателя краткий обзор.

Страница плагинов на форуме 

Дистрибутив Kohana-for-Wordpress

Дистрибутив Wordpress-for-Kohana

Kohana-for-Wordpress

Плагин предназначен для интеграции фреймворка Kohana 3 в WordPress-систему. Интеграция заключается в возможности вызова контроллеров Kohana из структур WP (шаблонов, виджетов, постов/страниц), а также в возможности обращения к контроллерам Kohana из строки запроса.

Устанавливаем плагин согласно инструкции (я тестировал на инсталлированном Wordpress 2.8.4 Lecactus edition, XAMPP, Windows, PHP 5.2.8):

1.    Устанавливаем Kohana3. Под установкой здесь понимается простое копирование папок application/, modules/, system/ куда вы решили (у меня – в DocumentRoot)

2.    Закачиваем распакованный плагин в папку wp-content/plugins/

3.    Логинимся в админку Вордпресса и активируем плагин

4.    Настраиваем плагин. На странице настройки нас встречает прятное разнообразие.

Таб Kohana Options:

система показывает нам адрес Kohana Front Loader — что это такое см. ниже.

- Kohana Application Path — полный абсолютный путь к папке application/ (у меня D:\xampp\htdocs\wp284.loc\www\application\)

- Kohana Module Path — полный абсолютный путь к папке modules/ (у меня D:\xampp\htdocs\wp284.loc\www\modules\)

- Kohana System Path — полный абсолютный путь к папке systems\ (у меня D:\xampp\htdocs\wp284.loc\www\systems\)

- Custom Bootstrap Path — если вы хотите использовать свой собственный загрузчик вместо данного нам в плагине kohana_bootstrap.php, то здесь нужно прописать путь к нему (образцом для вашего загрузчика все равно должен быть kohana_bootstrap.php, поскольку там есть нужные для работы плагина модификации — опции устанавливаются WP-функциями и отсутствует вывод Request::instance()->execute()->send_headers()->response). Я оставил поле пустым.

- Kohana File Extension — расширение файлов Коханы, по умолчанию .php

- Default Placement — здесь нужно определить, как поступит плагин с ответом Кохановского контроллера на запрос: поместит его перед содержимым страницы (Before…), после содержимого страницы (After…) или вместо содержимого страницы (Replace…).

- Kohana Modules — через запятую вписываем используемые модули

- Kohana Default Controller / Action / ID — обязательно должны быть заданы контроллер и метод по умолчанию, иначе система не заработает. ID опционален.

- Include Kohana Front Loader in Wordpress Navigation — включите, если хотите внести Кохановский фронтэнд в навигацию блога

- Process all URIs — если выключите опцию, то плагин будет обрабатывать запросы в URI только со страницы фронтэнда (например, http://wp284.loc/kohana?kr=controller/method/ID); если включите, то Кохана будет пытаться «разглядеть» запросы к себе на любых страницах

Следующий таб — Page Routing

С ним мы должны иметь дело, если хотим «автоматически» включить результаты работы контроллера в существующую страницу Wordpress

- Kohana Controller — вписываем контроллер/метод/параметр

- Wordpress Page — выбираем страницу, куда включить

- Placement — куда будет помещен вывод: перед содержимым страницы (Before…), после содержимого страницы (After…) или вместо содержимого страницы (Replace…)

После добавления роут появляется в строке таблицы, и можно добавлять другой роут. Уже имеющийся роут можно только удалить из таблицы, редактирование не предусмотрено. Еще одно маленькое неудобство — показывается только id страницы, а хотелось бы что-нибудь более читабельное (название или slug).

Работа с вызовами контроллеров Ko3 из WP:

из шаблона Вордпресса:

Для вызова 'controller/action/id' прописываем

[code lang="php"]

kohana('controller/action/id')

[/code]

Результат – то, что присваивается в методе свойству $this->request->response. Можно вызывать, например, заранее созданный view, и вообще, делать почти все, что вы привыкли делать у себя дома в Кохане (вроде были какие-то проблемы с сессиями, но я не проверял).

- из виджета Вордпресса:

Перетаскиваем виджет Kohana (он создается автоматически при активации плагина) на сайдбар, задаем заголовок виджета и 'controller/action/id' запроса, который делаем. Все.

- из статической страницы или поста:

В редакторе WP в нужном месте страницы пишем

[code lang="text"]

[request контроллер/метод/параметр]

[/code]

К стандартному обработчику запросов WP подключен фильтр плагина, который на каждом URI-запросе срабатывает по следующей схеме:

- Если запрашиваемая страница WP не существует и включена опция Process all URIs, то выясняется, идет ли запрос на существующий Кохановский контроллер. Для этого проверяется GET-строка запроса на наличие переменной 'kr', содержащей уже привычный 'controller/action/id' (например, http://wp284.loc/index.php?kr= welcome/index/1). Если ничего не найдено, парсится _SERVER['REQUEST_URI'] с целью найти запрос в стандартном формате «контроллер/метод/параметр» (да-да, можно написать http://wp284.loc/welcome/index и все будет работать!).

Заметьте, что результаты работы контроллера выводятся на странице front loader. То бишь, если вы не включили страницу в Page Routing, все дороги ведут на front loader.

- если запрос идет к странице загрузчика (front loader), то он парсится по той же схеме, причем если строка запроса пустая  — берутся дефолтные контроллер/метод/параметр из настроек плагина.

- во всех остальных случаях проверяется, включен ли на вордпресс-странице кохановский роутинг (задается в табе Page Routing) и если да, то соответствующий запрос выполняется с определенными там же опциями вывода результата (перед обычным содержимым, после или вместо).

Детали запроса добавляются в глобальный объект $wp->kohana, содержащий служебную информацию плагина.

Замеченные особенности:

- При апдэйте настроек после изменения состояний некоторых опций (например, Process all URIs, Include Kohana Front Loader in Wordpress Navigation), у меня убирались все слеши в путях к папкам Коханы. Приходилось прописывать их снова. Так что будьте внимательны и проверяйте пути после апдэйтов настроек.

- Если включена опция Process all URIs, то некоторые страницы в админке (например, /wp-admin/edit-pages.php, /wp-admin/edit.php, /wp-admin/upload.php), очевидно, неправомерно обрабатываются Коханой, которая не находит контроллера wp-admin и выкидывает исключение + дебаг-панель (естественно, в продакшне вывод дебаг-панели нужно отключить, но проблему это не решает).

+++++

Что такое Wordpress-for-Kohana? Это плагин для Kohana3 для Kohana-for-Wordpress smile, который предоставляет WP-style views для Ko3, а также некоторые WP-style функции. Файлы плагина копируются в application/ установленного дистрибутива Коханы, после чего вы можете делать, например, так:

В шаблоне страницы вордпресса (page.php) заменяем get_footer() на kohana('wordpress/footer’) – футером станет кохановский view ‘footer’ из папки views/wp/

Вам мало шаблонов? Добавляйте методы в Controller_Wordpress (там все очевидно), добавляйте шаблоны во views/wp/.

Для удобства в шаблонах можно пользовать статические методы класса Wordpress, имена которых говорят сами за себя: slug(), get_id_from_name(), get_post_by_name(), recent_posts(), postid().

+++++

В целом эти плагины оставили приятное впечатление, хотя с WP я сейчас и не работаю. Было любопытно увидеть пример интеграции Kohana3 в уже сложившуюся CMS. Думаю, еще несколько подобных плагинов для Joomla и Drupal – и популярность Фреймворку обеспечена.

Наше быстрое знакомство закончено, если будут вопросы – постараюсь ответить.

+++++

Кстати, если вы пробуете Kohana3, то вас могут заинтересовать новые и, как всегда, очень обстоятельные статьи Ивана Броткина о мультиязычности и роутинге.

Комментариев: 3 RSS

1 Satisfaction 04-10-2009 06:33

Шикарная статья ! Спасибо большое.

Этот плагин как раз то что мне было нужно, мощный блоговый функционал вордпресса + гибкость и мощь коханы = отличный движок !

2 Вадим 10-11-2009 19:14

Создал в WP страничку http://blog/about/

Привязал туда контроллер welcome/index

Всё работает, но страница http://blog/about/ выбрасывает ошибку в этой функции:

wp-includes\l10n.php [ 408 ]

function &get_translations_for_domain( $domain ) {

}

Что я не так делаю?

P.s. за статю спасибо.

3 Александр Купреев 11-11-2009 12:46

Вадим, к сожалению, я не являюсь WP-гуру, поэтому быстрого ответа на ваш вопрос дать не могу. При моих экспериментах проблем с функциями локализации не всплывало.

Как минимум, нужно более обстоятельное сообщение об ошибке, включающее вашу версию вордпресса (возможно, какая-то сборка), конфигурацию системы (как ВП, так и плагина), условия возникновения ошибки -- чтобы можно было ее воспроизвести.

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


Используйте нормальные имена.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

MaxSiteAuth. Войти через loginza

(обязательно)