2013-01-18 14 views
10

Chciałbym zbudować aplikację sf2 i zachować wszystkie treści (kategorie, artykuły, strony, multimedia, itp.) W WordPress z internacjonalizacją (wtyczki wpml). Aplikacja miałaby własnego administratora i zarządzanie zawartością, z której użytkownik logowałby się do zaplecza WordPress.Aplikacja Symfony 2 z Wordpress jako CMS

Moim planem jest, aby kontroler sf2 był wspierany przez system routingu i dawał mu pierwszą szansę na zidentyfikowanie trasy i wykonanie jej. W przeciwnym razie WordPress powinien obsłużyć renderowanie strony.

Uważam również, że będę musiał pobrać zawartość WordPressa na niektórych stronach sf2, takich jak strona główna, gdzie mogę umieścić najnowsze artykuły obok zawartości sf2.

Czy ktoś kiedykolwiek to zrobił wcześniej? Plusy i minusy? Sugestie, jak to wdrożyć? Dzięki!

Odpowiedz

1

Po pierwsze, aby zintegrować Wordpress z Symfony 2, musiałbyś wymyślić plan "klejenia", ponieważ Wordpress nie stosuje się do interoperability standards, a następnie do Symfony 2 i innych frameworków, aby osiągnąć ten poziom łatwej integracji.

Po drugie, byłoby świetnie, gdybyś mógł zapoznać się z wersją Symfony CMF, która jest w zasadzie implementacją struktury zarządzania treścią, która pozwala tworzyć własne CMS na bazie składników Symfony 2.

Trzecim i ostatnim punktem jest to, że ta integracja, którą próbujesz osiągnąć, nie ma większego sensu. Pierwsza część twoich wymagań, w której potrzebujesz prostej warstwy na Wordpressie, aby obsłużyć przychodzące żądania, może zostać rozwiązana poprzez prosty hack na kodzie kontrolera Wordpress.

+0

Symfony cmf nie jest aplikacją klasy produkcyjnej i nie mam czasu na nią czekać. cały ten problem pojawił się, ponieważ użyłem Diem, wielkiego sf 1 cmf, który właśnie umarł w pewnym momencie. Właśnie dlatego chcę zarządzać treścią z czymś, co udowodniło, że może przetrwać. Drupal zaczyna brzmieć jak dobra idee. – Liviu

5

Istnieje kilka pakietów Sf2, które pomagają zamknąć lukę nieco, jak https://github.com/kayue/KayueWordpressBundle, gdzie można użyć jednostek Symfony2, aby uzyskać dane Wordpress, uwierzytelnić się w Wordpress, używać funkcji Wordpress w Twig, takie rzeczy. Może możesz z tym pracować.

Zrobiłem to w ostatnim projekcie i działało naprawdę dobrze.

Aby to działało, musisz mieć dwie oddzielne bazy danych i dwa menedżery encji (jeden dla twojej aplikacji sf2, jeden dla Wordpressa) - przynajmniej tak to działało najlepiej dla mnie, mając prawdziwą aplikację sf2 z jednej strony i używanie Wordpressa po stronie do obsługi dynamicznych stron.

Oto przykład z mojej konfiguracji:

//app/config.yml 
doctrine: 
dbal: 
    default_connection: default 
    connections: 
     default: 
      driver: "%database_driver%" 
      host:  "%database_host%" 
      port:  "%database_port%" 
      dbname: "%database_name%" 
      user:  "%database_user%" 
      password: "%database_password%" 
      charset: UTF8 
     cms: 
      driver: "%database_driver_cms%" 
      host:  "%database_host_cms%" 
      port:  "%database_port_cms%" 
      dbname: "%database_name_cms%" 
      user:  "%database_user_cms%" 
      password: "%database_password_cms%" 
      charset: UTF8 

orm: 
    auto_generate_proxy_classes: %kernel.debug% 
    default_entity_manager: default 
    entity_managers: 
     default: 
      connection:  default 
      mappings: 
       MyFirstBundle: ~ 
       MySecondBundle: ~ #if you have more than one bundle in your application 
     cms: 
      connection:  cms 
      mappings: 
       KayueWordpressBundle: ~ 

i konfiguracji KayueWordpressBundle:

//app/config.yml 
kayue_wordpress: 
# Site URL must match *EXACTLY* with WordPress's setting. Can be found 
# on the Settings > General screen, there are field named "WordPress Address" 
site_url:  %blog_url% 

#Note : I put the site_url in my parameters.yml to get this working on all my environments (see comment below) 

# Logged in key and salt. Can be found in the wp-config.php file. 
logged_in_key: 'samethingasinyourwpconfig' 
logged_in_salt: 'samethingasinyourwpconfig' 

# Optional: WordPress cookie path/domain settings. 
cookie_path: '/' 
cookie_domain: null 

# Optional: Custom table prefix. Default is "wp_". 
table_prefix: 'wp_' 

# Optional: Entity manager configuration to use (cache etc). Default is 'default'. 
entity_manager: 'cms' #here is where i put the name of my new entity manager defined above 

Korzystanie KayueWordpressBundle, mogę teraz dostęp do wszystkich elementów mojego Wordpress za pomocą "cms" kierownika jednostki . Korzystając z menu Wordpress, mogliśmy sprawić, że nasze menu aplikacji dynamicznie integruje nowe strony, które zostały do ​​nich dodane. Byliśmy również w stanie utrzymać ten sam nagłówek i stopkę w naszym Wordpressie używając curl, więc całość była praktycznie bez szwu.

Od strony praktycznej:

zainstalowałem Wordpress w pliku znajduje się w katalogu głównym mojego projektu. Oznacza to, że mogę używać Git z nim, wdrażać go za pomocą Capifony i tym podobne.

Należy pamiętać, że projekt, wtyczki i inne rzeczy muszą być dodane/edytowane w lokalnym środowisku, a następnie przeniesione do repozytorium Git przed wdrożeniem w Capifony. Dynamiczna zawartość twojej wordpress (stron, artykułów) jest jednak zależna od twojej bazy danych, więc ostateczna treść powinna być napisana tylko w twoim środowisku produkcyjnym.

+1

Dzięki za podzielenie się tym! Miałem nadzieję na integrację WP w moich projektach symfony. Lubię Wordpress dla CMS, więc nie podobało mi się użycie mniej dojrzałego pakietu. Patrzyłem na pakiet Kayue, więc ten zarys tego, co zrobiłeś na poprzednim projekcie, jest świetnym zapisem tego, co jest możliwe. Dziękuję bardzo za udostępnienie! – jfgrissom