Integration eines Dritt-Anbieter-CMS in Magento ist ein oft geäußerter Wunsch von Shopbetreibern. Jeder weiß, Google mag Text und was liegt da näher als ein CMS in Magento zu integrieren. Zudem kann man seine Kompetenz als Fachmann unterstreichen.
Die Vorgehensweise
Die hier vorgestellte Methode zur Integration eines CMS in Magento beschreibt wie man den Inhalt aus dem CMS WordPress (man kann aber auch andere CMS verwenden, wie z.B. Drupal, Joomla!, o.a.) in seinen Magento Onlineshop integriert. Hierzu wird der Varien_Http_Client verwendet. Der Nachteil ist, das alle ungültigen Adressen auf den Blog geleitet werden.
Anleitung zur Integration des CMS WordPress in Magento
1. – WordPress installieren
Erstellen Sie im Magento Root Verzeichnis einen Ordner mit dem Namen wp und kopieren Sie dorthin die WordPress Dateien. Soll die WordPress Datenbank getrennt von der Shop Datenbank sein (was empfehlenswert ist), muss eine neue MySQL-Datenbank erstellt werden. Installieren Sie nun WordPress, indem Sie die URL http://www.ihre-domain.de/wp/ in ihrem Browser aufrufen. Folgen Sie den Anweisungen des Setup-Assistenten.
2. – RewriteEngine einrichten
Jetzt machen wir uns die URL RewriteEngine zu nutze, um den Blog unter der Shopadresse verfügbar zu machen. Dazu eine .htaccess Datei erstellen und mit folgendem Inhalt in den wp-Ordner hochladen:
RewriteEngine on RewriteCond% {REQUEST_FILENAME}!-F RewriteCond% {REQUEST_FILENAME}!-D RewriteCond% {REQUEST_FILENAME}!-L RewriteRule ^ (. *) $ Index.php? / $ 1 [QSA, L]
3. – Noroute Block erstellen
Um das Block Modul zu erstellen gehen Sie wie folgt vor:
– Erstellen Sie ein neues Verzeichnis namens „Project“ unter app / code / local / Mage
– Erstellen Sie ein neues Verzeichnis namens „Block“ unter „Project“
– Erstellen Sie eine neue Datei namens Noroute.php unter „Block“ und kopieren Sie den folgenden Code in das Skript:
class Mage_Project_Block_Noroute extends Mage_Core_Block_Abstract { protected function _toHtml() { $ Uri = Mage :: getBaseUrl (). "Ee". $ This-> getRequest () -> getRequestString (); $ Post = $ this-> getRequest () -> getPost (); $ Method = (count ($ post) == 0)? 'GET': 'POST'; / ** * Hier können Sie zusätzliche Funktionen * wie Cookies, Redirects und so weiter programmieren. * / $client = new Varien_Http_Client($uri); $client->setParameterPost($post); $response = $client->request($method); $body = $response->getRawBody(); return $body; } }
Um das Projekt-Modul zu aktivieren, erstellen Sie eine Datei namens „Magento_Project.xml“ unter app / etc / modules und kopieren Sie den folgenden Code:
<!--?xml version="1.0"?--> true local
Jetzt müssen wir diesen Block zum Layout hinzuzufügen. Dazu bearbeiten Sie die Datei unter app / design / frontend / DAS_EIGENE_DESIGN / default / layout / cms.xml und ändern ‚cms_index_defaultnoroute‘ Abschnitt wie folgt:
page/1column.phtml
4. – 404-Seite deaktivieren
In der Magento-Administration (unter CMS → Seiten verwalten) die 404-Seite („no-route“ Identifier) deaktivieren.
5. – Layout vervollständigen
Das WordPress-Theme sollte keine Kopf- und Fußeilen haben, da jetzt die aus dem Magento-Theme verwendet werden. Die Seite http://www.beispiel.de/artikel01 wird nun mit Inhalten aus dem eigentlichen Ordner http://www.beispiel.de/wp/artikel01 versorgt, dazu wird der Magento-Header und -Footer geladen.
Pingback: Content im Shop: Wohin mit dem CMS? | Mag-tutorials.de
Ich bekomme ein 500 Internal server error.
Magento 1.9.2.2 und standard Magento htacces und WordPress htaccess:
RewriteEngine on
RewriteCond% {REQUEST_FILENAME}!-F
RewriteCond% {REQUEST_FILENAME}!-D
RewriteCond% {REQUEST_FILENAME}!-L
RewriteRule ^ (. *) $ Index.php? / $ 1 [QSA, L]
Hat jemand ne Idee?
Grüße
Hallo Patrick,
beim Fehler 500 handelt sich um einen sehr ungenauen Fehlercode. Woran es genau liegt kann ich dir leider nicht sagen.
Beste Grüße
Sebastian