WordPress Symfony Совместное проживание - PullRequest
4 голосов
/ 26 января 2011

У нас есть сайт, который работает на Symfony и был разработан людьми, намного более компетентными, чем я. Однако я достаточно компетентен в WordPress и буду устанавливать блог на сайте.

В настоящее время корень сайта работает на Symfony, но я бы хотел, чтобы WordPress вступил во владение, не касаясь ядра Symphony. По сути, я хотел бы установить WordPress в подкаталог каталога www, скажем, www/wordpress/, и иметь htaccess, указывающий на этот каталог как корень моего домена. НО, есть одна функция моей установки Symfony, к которой я хотел бы иметь доступ, давайте назовем ее myfeature. Когда я перехожу на mydomain.com/myfeature/, я бы хотел, чтобы htaccess указывал на mydomain.com/index.php/myfeature, которым управляет Symphony.

Вот как выглядит мой текущий файл .htaccess.

<IfModule mod_rewrite.c>
  RewriteEngine On

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteCond %{REQUEST_URI} !\.php
  #RewriteCond %{REQUEST_URI} !\.php
  RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ /index.html [QSA]
  RewriteRule ^([^.]+)$ /$1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ /index.php [QSA,L]

  # hidden frontoffice controller
  RewriteRule ^index\.php/(.*)$ /index.php [QSA,L]
  # fo controllers
  RewriteRule ^frontend\.php/(.*)$ /frontend.php [QSA,L]
  RewriteRule ^frontend_dev\.php/(.*)$ /frontend_dev.php [QSA,L]
</IfModule>

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Я интегрировал блог WordPress со своим сайтом Symfony, используя следующее.

//Added to the autoload.php
require('../vendor/wordpress/wp-blog-header.php');

Я устанавливаю блог в основную веб-папку, и .htaccess был настроен следующим образом:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/blog -------Add this condition to by pass the rewrite rules
RewriteRule ^(.*)$ app.php [QSA,L]

Это позволяет получить доступ ко всем другим маршрутам в обычном режиме, но маршруты блогов остаются нетронутыми и передаются непосредственно в wordpress. Чтобы извлечь данные из базы данных wordpress, я смог вызвать методы wordpress в моих контроллерах Symfony и передать их в шаблон веточки.

$posts = get_posts('numberposts=10&order=ASC&orderby=post_title');
return array('posts'=>$posts);

Я не уверен, что это именно то, о чем вы спрашиваете, но именно так сосуществуют мой блог Wordpress и сайт Symfony 2.0. Это настоящая боль, хотя у меня есть шаблон WordPress и шаблон Symfony, который необходимо постоянно обновлять. Мне бы очень хотелось придумать лучшее решение, чтобы объединить их в отличные инструменты.

2 голосов
/ 28 января 2011

Вот, пожалуйста. Я не думаю, что что-нибудь ниже строки контроллера wordpress когда-либо будет достигнуто, но я все равно оставил это

<IfModule mod_rewrite.c>
RewriteEngine On

# we skip all files with .something
RewriteCond %{REQUEST_URI} ..+$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php
#RewriteCond %{REQUEST_URI} !.php
RewriteRule .* - [L]

# we check if the .html version is here (caching). If yes, don't redirect
RewriteRule ^$ /index.html [QSA]
RewriteRule ^([^.]+)$ /$1.html [QSA]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

# if the 'myfeature' prefix is there, redirect to Symfony controller
RewriteCond %{REQUEST_URI} ^/myfeature/
RewriteRule .* index.php [QSA,L]

# otherwise, redirect to wordpress controller
RewriteRule .* wordpress/index.php [QSA,L]

# hidden frontoffice controller
RewriteRule ^index.php/(.*)$ /index.php [QSA,L]
# fo controllers
RewriteRule ^frontend.php/(.*)$ /frontend.php [QSA,L]
RewriteRule ^frontend_dev.php/(.*)$ /frontend_dev.php [QSA,L]
</IfModule>
...