Magento Order-Success-Seite pflegbar mit CMS
Wäre es nicht schön, man könnte die Bestellbestätigungsseite in Magento von Hand per CMS pflegen? In den folgenden Snippets erklären wir, wie es funktioniert:
Schritt 1: Anlegen eines Blocks per SQL-Skript.
- /* @var $cms_page Mage_Cms_Model_Block */
- $cms_page = Mage::getModel('cms/block');
- $cms_page->setData('title','POS Checkout Success');
- $cms_page->setData('identifier', 'pos_checkout_success');
- $cms_page->setData('content', '{{var order.getShippingAddress().format("html")}}');
- $cms_page->save();
Wie kommt aber nun das Order-Objekt in den CMS Block? Kurz und knapp: Genau wie auch in die Email-Templates.
Schritt 2: Anlegen einer Block-Methode, die z.B. {{ var order.name}} im CMS-Block füllt
- public function getCMSPosCheckoutSuccessHTML(){
- $block = Mage::getModel('cms/block')
- ->setStoreId(Mage::app()->getStore()->getId())
- ->load('pos_checkout_success');
- $filter = Mage::getModel('cms/template_filter');
- $filter->setVariables($data);
- return $filter->filter($block->getContent());
- }
Jetzt muss nur noch die Block-Methode in einem beliebigen Template aufgerufen werden:
Natürlich macht es der Ordnung halber Sinn, eine neue Block-Klasse zu erzeugen, welche die Methode getCMSPosCheckoutSuccessHTML() implementiert.
Im Layout-Handle “checkout_onepage_success” muss dazu einfach der Block und ein Template eingehängt werden. In diesem Template findet dann o.g. echo Aufruf statt.
Unter folgendem Link lässt sich eine schöne Erklärung der Möglichkeiten finden, die Variablen in einem CMS-Block einzubetten.