Magento Tutorial: auf CMS Seiten Überschrift und Content trennen

Heute ein sehr kurzes Tutorial zur Anpassung der CMS-Seiten in Magento. Das Shopsystem besitzt zwar in einzelnen Bereichen wie der Produktdetailansicht viele Template-Files, bei CMS Seiten gibt es dagegen für den eigentlichen Content-Bereich kein zugeordnetes phtml File.

Das ist eher unvorteilhaft, wenn man mehrere HTML-Elemente zur Auszeichnung des Inhalts benötigt – und das standardisierte div-Element mit der Klasse „std“ nicht ausreicht. Im konkreten Fall geht es erst einmal nur darum, Überschrift und Content getrennt voneinander auszugeben. Wie gehen wir also vor? Zunächst suchen wir die Dateien im Template heraus. Wie üblich gilt auch hier die erste Regel: keine Anpassungen im base Template!

Der komplette Inhaltsebereich für die CMS-Seiten wird in der gewählten Template-Vorlage ausgegeben, etwa unter template/page/1column.phtml bei einspaltigen Layouts.

<?php echo $this->getChildHtml('content') ?>

Dort wird also alles ausgegeben – Überschrift und Inhalt. Die Auszeichnung der Überschrift finden wir im entsprechenden Template-File unter template/cms/content_heading.phtml. Nun könnte man vermuten, dass der Content einfach im File unter content.phtml zu finden ist. Aber weit gefehlt – in diesem File passiert nichts. Was also tun? Genau – im korrespondierenden xml-File nachsehen. Und siehe da – in layout/cms.xml wird die Überschrift festgelegt und ein Wrapper-div erzeugt. Wer einfach nur mehrere umschließende divs (oder andere HTML-Elemente) benötigt, der kann mit dieser Methode weitermachen.

Im konkreten Fall soll aber der Inhalt besonders formatiert werden. Wir benötigen als eine Trennung des Contents. In cms.xml schreiben wir also den entsprechenden Block um.

    <cms_page translate="label">
		<label>CMS Pages (All)</label>
	
		<reference name="contentheadline">
			<block type="core/template" name="page_content_heading" template="cms/content_heading.phtml" />
		</reference>

        <reference name="content">
			<block type="cms/page" name="cms_page" />
        </reference>

    </cms_page>

Jetzt sehen wir aber noch nichts. Warum? Aha – der Block muss noch in angemeldet werden. Also in page.xml folgendes hinzufügen:

     
 <block type="core/text_list" name="contentheadline" as="contentheadline" translate="label">
	 <label>Main Content Headline</label>
 </block>

So – das wäre erst einmal geschafft. In unserer Vorlage template/page/1column.phtml können wir nun gesondert Überschrift und Content aufrufen und formatieren:

<?php echo $this->getChildHtml('contentheadline') ?> 
<?php echo $this->getChildHtml('content') ?> 

Der einfachste Weg dies produktiv zu nutzen ist den entsprechenden Content-Seiten eine eigene Template-Vorlage zuzuweisen. Aber auch hier sollte man vorsichtig sein – das von Magento beschriebene Vorgehen widerspricht eigentlich den Coding Standards und ist nicht updatesicher. Als professioneller Magento Freelancer wählt man somit besser den sauberen Ansatz, den Mxperts in ihrem Magento Tutorial vorschlagen über eine einfach zu erstellenden Extension: http://www.mxperts.de/blog/eigene-layouts-in-magento-cms-integrieren/. Unbedingt lesenswert.

Geschafft! Nun lässt sich das Magento Template wesentlich besser individuell anpassen.

Eine Antwort zu “Magento Tutorial: auf CMS Seiten Überschrift und Content trennen”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.