Всем привет. Я Денис Мельский.
Я работаю PHP-разработчиком в DataArt. Мои профессиональные интересы — веб-разработка и Linux. Сегодня мне бы хотелось поговорить с вами о «скрещивании ежа со змеей».
вступление
На первый взгляд может показаться, что это безумие и в каком-то смысле архитектурный костыль.Но, если посмотреть на это с другой стороны, это один из вариантов выхода из часто встречающейся тупиковой ситуации: заказчик хочет WordPress и ничего другого не принимает. Скорее всего, он услышал что-то подобное, погуглил, увидел, и ему сосед посоветовал гуру кодера Джона (или Васи).
А программисты наотрез отказываются ставить на движок блога, у которого, мягко говоря, не лучшая архитектура, функционал, скажем, интернет-магазина, форума, а вдобавок - REST API для партнеров этого магазина, и сверху — еще пачка крон с бизнес-логикой.
Поставим задачу найти выход, который удовлетворит всех участников проблемы, и чтобы наш продукт нормально запускался и работал.
Один из вариантов, который я нашел, исследуя эту тему, — это скрещивание WordPress и Yii.
Да начнется вечеринка
Что ж, давайте попробуем освоить кое-что из этого в коде.Начнем с загрузки фреймворка Yii. Думаю, композитор для подобных экспериментов перебор - за счет настройки путей и архитектуры всей сборки у нас будет больше возможностей для экспериментов без композитора, в т.ч.
мы можем легко скачать с помощью домашний сайт .
Такую же простую манипуляцию проделываем с В.
П.
.
Далее вооружаемся вспомогательными мануалами: Один раз Два Пройдемся по первому мануалу, к которому я хочу добавить несколько примечаний и комментариев.
Устанавливаем WP и размещаем всё в следующей архитектуре:
Во-первых, давайте посмотрим на ключевые строки нашего index.php.
Здесь мы видим начало включения WP в общую картину происходящего.define(‘WP_USE_THEMES’, true); $wp_did_header = true; require_once(‘wordpress/wp-load.php’);
Создаем класс Exception Handler, суть которого на основе yii-фреймворка 404-исключения заключается в передаче полномочий WP. Мы создаем .
htaccess по умолчанию для Yii, что позволяет создавать красивые URL-адреса.
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule .
index.php
В конфигурации Yii пишем «showScriptName» => false и раскомментируем правила доставки товара по умолчанию.
Далее согласно приведенному выше мануалу создаем WpController и View для него.
Еще один интересный момент, который нельзя обойти вниманием: в конфигах wordpress на уровне БД есть настройка во вкладке `wp_options` — «siteurl», ее нужно изменить на вашдомен/wordpress .
Вы также можете изменить это в администраторе WP. Настройки -> Общие -> Адрес WordPress (URL).
Не могу не упомянуть интересный момент: в основной макет Yii мы помещаем структуру интерьера нашей темы из WP.
Мы уже близки к победе: подключаем гии (кто не знает, можете прочитать здесь ).
В gii мы можем создать CRUD-модель и получить в результате именно то, что хотели — скрестить код Yii и WP.
Оно живое!
На этом скриншоте мы видим красивый CRUD от Yii с использованием CGridView.
Для авторизации везде попробуем что-то вроде этого метод .
Создаем в корне папку wordpress и переносим туда внутренности самого WP. По результатам моего исследования по теме, мы делаем следующие выводы:
- Очень возможно пропустить Frontend WP через Yii с настройкой темы, и в итоге мы сможем получить в Yii кастомные модули, которые будут гармонично жить с WP. Кроме того, есть возможность синхронизировать пользователей из WP в Yii.
- Гармонично связать Backend WP с Yii мне не удалось, т.е.
общая админка для стандартных модулей WP и пользовательских модулей Yii — не лучший вариант реализации.
Это связано с тем, что бэкенд WP имеет очень нестандартную архитектуру, не очень подходящую для интеграции.
Но это результаты моих исследований, которые не претендуют на истину в последней инстанции.
- В результате мы можем разработать приложение, которое будет гармонично сочетать фронтенд WP с пользовательскими модулями Yii. В бэкенде WP мы можем разрабатывать собственные плагины и загружать Yii в качестве одного из вариантов реализации.
И даже, меня не пугает этот вариант, рендерить некоторые модули Yii через iframe внутри плагина WP.
П.
П.
С.
Несколько ссылок по теме: Примеры подобных подходов к реализации идей; некоторые также используют немного другие настройки yii. www.yiiframework.com/wiki/382/integrating-wordpress-and-yii-working-out-the-details www.yiiframework.com/wiki/322/integrating-wordpress-and-yii-still-another-approach-using-yii-as-the-router-controller www.yiiframework.com/wiki/213/integrating-wordpress-and-yii-yet-another-approach www.yiiframework.com/wiki/202/integrating-yii-with-wordpress www.yiiframework.com/wiki/144/run-an-yii-application-inside-an-wordpress-page Теги: #php #wordpress #yii-framework #Yii #учебник #Эксперименты #wordpress #php
-
Вебинары По Qml И Qtquick: Анимация
19 Oct, 24 -
Релиз Midnight Commander 4.7.3
19 Oct, 24 -
Радио-Т №38. Бобук И Умпутун
19 Oct, 24