Ich möchte eine sf2-Anwendung erstellen und alle Inhalte (Kategorien, Artikel, Seiten, Medien usw.) in WordPress mit Internationalisierung (wpml-Plugin) verwalten. Die App hätte einen eigenen Administrator und zur Verwaltung der Inhalte würde sich der Benutzer beim WordPress-Backend anmelden.
Mein Plan ist es, einen sf2-Controller zu haben, der vom Routing-System gesichert wird, und ihm die erste Chance zu geben, eine Route zu identifizieren und seine Sache zu tun. Wenn nicht, sollte WordPress das Rendern der Seite übernehmen.
Ich denke auch, dass ich WordPress-Inhalte in einige SF2-Seiten wie die Homepage ziehen muss, wo ich vielleicht die neuesten Artikel neben SF2-Inhalten platzieren möchte.
Hat das schon mal jemand gemacht? Vor-und Nachteile? Vorschläge zur Umsetzung? Vielen Dank!
Schauen Sie sich diese beiden Projekte an, die sich der Symfony-WordPress-Integration von verschiedenen Seiten nähern:
Es gibt einige Sf2-Bundles, die helfen, die Lücke ein wenig zu schließen, wie z https://github.com/kayue/KayueWordpressBundle wo Sie Symfony2-Entitäten verwenden können, um WordPress-Daten abzurufen, sich bei WordPress zu authentifizieren, WordPress-Funktionen in Twig zu verwenden, solche Dinge. Vielleicht kannst du damit arbeiten.
Ich habe das in einem kürzlichen Projekt gemacht und es hat wirklich gut funktioniert.
Damit dies funktioniert, benötigen Sie zwei separate Datenbanken und zwei Entity-Manager (einen für Ihre sf2-Anwendung, einen für WordPress) – zumindest hat es für mich so am besten funktioniert, eine echte sf2-Anwendung auf der einen Seite zu haben und WordPress zu verwenden die Seite, um dynamische Seiten zu behandeln.
Hier ein Beispiel meiner Konfiguration:
//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: ~
Und die KayueWordpressBundle-Konfiguration:
//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: "https://stackoverflow.com/"
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
Mit KayueWordpressBundle kann ich jetzt über den Entity Manager „cms“ auf alle Elemente meines WordPress zugreifen. Mithilfe von WordPress-Menüs konnten wir unser Anwendungsmenü dazu bringen, neue Seiten, die ihnen hinzugefügt wurden, dynamisch zu integrieren. Wir konnten auch die gleiche Kopf- und Fußzeile auf unserem WordPress mit Curl beibehalten, so dass das Ganze praktisch nahtlos lief.
Auf der praktischen Seite:
Ich habe WordPress in einer Datei installiert, die sich im Stammverzeichnis meines Projekts befindet. Das bedeutet, dass ich Git damit verwenden, es mit Capifony bereitstellen und solche Dinge tun kann.
Beachten Sie, dass Design, Plugins und andere Dinge in Ihrer lokalen Umgebung hinzugefügt/bearbeitet und dann vor der Bereitstellung mit Capifony in Ihr Git-Repository gepusht werden müssen. Der dynamische Inhalt Ihrer WordPress (Seiten, Artikel) hängt jedoch von Ihrer Datenbank ab, sodass der endgültige Inhalt nur in Ihrer Produktionsumgebung geschrieben werden sollte.
Um WordPress mit Symfony 2 zu integrieren, müssten Sie sich zunächst einen “Klebeplan” ausdenken, da WordPress dem nicht folgt Interoperabilitätsstandardsgefolgt von Symfony 2 und anderen Frameworks, um dieses Maß an einfacher Integration zu erreichen.
Zweitens wäre es toll, wenn Sie sich das ansehen könnten Symfony CMFdas im Grunde eine Implementierung eines Content-Management-Frameworks ist, mit dem Sie Ihr eigenes CMS auf Basis von Symfony 2-Komponenten erstellen können.
Der dritte und letzte Punkt wäre, dass diese Integration, die Sie erreichen wollen, nicht sehr sinnvoll ist. Der erste Teil Ihrer Anforderungen, bei dem Sie eine einfache Schicht über WordPress benötigen, um die eingehenden Anfragen zu verarbeiten, könnte mit einem einfachen Hack auf den Front-Controller-Code von WordPress gelöst werden.