Pull to refresh

Comments 14

У WP вполне сносное API. Зачем собаке пятая нога?
Тут, исходя из формулировки задачи, скорее «YII вполне неплохо работает как CMS, зачем, ну зачем заказчик хочет видеть WP...»
Затем что единственное в чем WP нету равных — это админка. За годы ее очень неплохо вылизали. То что там внутри боль и слезы, никого не волнует.
Да там и с плагинами полный порядок, не могу представить для чего такое может пригодиться :)
Жуть. Зря я на ночь это прочитал.

Мое имхо, если заказчик хочет WP и его ну никак не отговорить то уж лучше:
1) Нанять Wordpress гуру, который бы вел остальных разработчиков.
или
2) нанять 2-х wordpress гуру которые бы просто сделали отлично проект.

И еще, я думаю у Вас проблема с менеджером, если он хороший менеджер, то он бы убедил что Yii лучше подходит для решения его задачи и что вы по Yii супер профессионалы, а вместо этого он Вас заставил заниматься анонизмом.

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

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

Ну и напоследок. Когда Вы будете сдавать проект, скорее всего заказчик будет ожидать Wordpress админку, под все задачи, он очень удивится.

Получается Вы заказчика просто обманули)
Я немного сгоряча написал коммент, а может и нет. Но надеюсь Вы серьезно так делать не будете.
Я просто забыл что пятница и время развлекаться
Тут скорее пятнично-теоритическая задачка =) Таких заказчиков, к счастью, встретишь не часто.
я прям таки рад что не попал вам на wp.
Вообще не понимаю суть задачи.
Да, повторю вопрос — а нахера такое вообще делать?
Если кастомер хочет только Вордпресс — тогда нужно реализовывать логику в рамках вордпресса.
Многие считают что правило — «Клиент всегда прав, так как платит деньги».
Вот от такого и появляются вот такие мысли докручивать непонятно что непонятно куда.

Я уже в ожидании новой статьи как к этому всему можно прикрутить бандлы от Симфони.
Заказчик хочет вордпресс, потому что потом придут программисты работающие с вордпрессом (и не знающие yii) и будут ставить плагины работающие с вордпрессом (кэширующие допустим) или пытаться работать через его апи (неплохое кстати), или не дай бог напрямую с БД или xml-rpc (что тоже иногда бывает)

Как думаете, что заказчик скажет, когда в разработанной Вами под него части «вордпресса» и в помине не окажется?

С тем же успехом можно было ограничить «скрещивание» размещением логотипа вордпресса:)
Недавно любопытства ради интересовался вопросом возможности интеграции Wordpress с Symfony2 (благо что на основной работе собаку уже съел на интеграции legacy-кода с Symfony2). Нагуглил такую штуку: github.com/ekino/EkinoWordpressBundle — вроде бы большинство задач решает вполне грамотно. Впрочем, сам я никогда с Wordpress серьезно не работал.
Простите, но это какая-то попа-боль.
У меня тоже был проект сделать корп сайт с конкурсом на WP.
Да, я люблю писать на Yii и WP вызывает аллергию по всему телу.
Я тоже нашел эти статьи по скрещиванию.
Но не смотря на всю мою ненависть к WP, проще было изучить API WP.
Ибо как уже выше писали, если заказчик прыгнет куда-то в сторону, голова болеть будет у вас, а не у заказчика :)
У меня аналогичный опыт, но полностью скрещивать Wordpress и Yii я отказался.

Нужный функционал сделали довольно быстро как независимый проект на фреймворке Yii в виде клиента на javascript и RESTfull API (кэширование, сфинкс, куча крон-задач, утилиты по конвертированию и сжатию изображений), а не в виде плагина к Wordpress. Запустить хотели на том же домене, где раньше был блог на Wordpress ( проект icons8 — иконки в стиле windows8, iOS7, Android ).

Но на Wordpress было огромное количество статей, хорошо проиндексированных в гугле и яндексе. Нужно было сохранить весь контент с его прежними URL. Переносить большой функционал CMS в небольшое приложение на Yii было неразумным решением с точки зрения трудоёмкости. Делать общую авторизацию пользователей не предполагалось.

В итоге сайт на wordpress оставили «в тени», а доступ к нему обеспечен средствами nginx.
Позаботились о сохранении всех прежних ссылок для гугля и о других специальных ссылках: файлы тем, загруженные картинки, RSS, sitemap.

Кусок конфига для проксирования через nginx выглядит так:
# конфиг верхнего уровня для перенаправления запросов на приложение Yii или блог wordpress
server {
    listen   80;
    #server_name icons8.com;

    location / {
        proxy_intercept_errors on; # чтобы перехватить ошибки
        error_page 404 = @wordpress_fallback; # при ошибке Page Not Found запросить wordpress
        proxy_pass http://127.0.0.1:8889; # запросить приложение на Yii
    }

    location @wordpress_fallback {
        proxy_intercept_errors off; # пусть теперь wordpress отрисовывает страницы ошибок
        proxy_pass http://wordpress_upstream; # запросить wordpress
    }

    # несколько фиксированных URL, которые надо сразу передать в wordpress мимо Yii
    #   страницы блога http://icons8.com/2014/01/21/???
    location ~ /\d\d\d\d/\d\d/ {
        proxy_pass http://wordpress_upstream;
    }
    # стили и оформление блога http://icons8.com/wp-content/themes/icons8/style.css
    location ^~ /wp-(.+) {
        proxy_pass http://wordpress_upstream;
    }
    # новостные ленты http://icons8.com/feed/rss/
    location ^~ /feed/ {
        proxy_pass http://wordpress_upstream;
    }
}

# Приложение wordpress
upstream wordpress_upstream {
    server blog; # тут либо IP либо адрес сервера
}

# приложение на Yii - конфиг стандартный кроме порта 8889
server {
    listen 8889;
    set $yii_bootstrap "index.php";
    root /var/www/icons8.com/www;

    location / {
        index index.html $yii_bootstrap;
        try_files $uri $uri/ /$yii_bootstrap?$args;
    }

    # pass the PHP scripts to FastCGI server listening
    location ~ \.php {
        # ...
    }
}


Полный вариант на gist.github.com

Обсуждали это решение неделю. Задача по созданию конфига заняла часа два.

Есть проблема в том, что если сайт заваливать запросами, гарантированно возвращающими 404, то их последовательно будут обрабатывать и Yii, и Wordpress, но это частично разруливается кэшем страниц в nginx, а в Yii оптимизирована работа с роутингом запросов, чтобы как можно меньше ресурсов потреблять на «нерасшифровываемые» URL.
Sign up to leave a comment.