Symfony 2 Anwendung mit WordPress als CMS

Lesezeit: 5 Minuten

Livius Benutzeravatar
Liviu

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:

Benutzeravatar von hisem
hisem

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.

  • Danke, dass du das geteilt hast! Ich hatte gehofft, WP in meine Symfony-Projekte zu integrieren. Ich mag WordPress als CMS, also hasste ich die Idee, ein weniger ausgereiftes Bundle zu verwenden. Ich habe mir Kayues Paket angesehen, daher ist dieser Überblick über das, was Sie bei Ihrem vorherigen Projekt gemacht haben, eine großartige Vorschau auf das, was möglich ist. Vielen Dank fürs Teilen!

    – jfgrissom

    19. Juni 2014 um 6:53 Uhr


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.

  • Symfony cmf ist keine produktionstaugliche App und ich habe keine Zeit, darauf zu warten. Dieses ganze Problem trat auf, weil ich Diem benutzte, ein großartiges SF 1 cmf, das irgendwann einfach gestorben ist. Deshalb möchte ich den Inhalt mit etwas verwalten, das bewiesen hat, dass es überleben kann. Drupal klingt jedoch allmählich nach einer guten Idee.

    – Liviu

    18. Januar 2013 um 14:18 Uhr

1399900cookie-checkSymfony 2 Anwendung mit WordPress als CMS

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy