Jetzt für alle Magento-Versionen
Im Wiki von Magento wird beschrieben, wie man eigene Layouts in das CMS integriert. Allerdings in der Form, dass man Core-Files bearbeitet. Das ist für mich keine akzeptable Lösung.
Wir werden dafür ein Modul erstellen. So bleibt der Core unberührt und Updates neuer Magentoversionen überschreiben unsere Anpassung nicht.

Seit Magento Version 1.3.2 hat sich die Vorgehensweise geändert. nachfolgende zeige ich beide Lösungen.

Umsetzung:

cms_layout_folderAls erstes legen Sie eine Verzeichnisstruktur wie im Bild links an. Sie können nach Fertigstellung dieses Tutorials den kompletten Ordner app auf Ihren Webserver kopieren.

Damit Magento unsere Erweiterung erkennt und registriert, erstellen wir die Datei app/etc/modules/mxperts_layout.xml mit folgendem Inhalt:

<?xml version="1.0"?>
<config>
 <modules>
  <Mxperts_CmsPageLayouts>
   <codePool>local</codePool>
   <active>true</active>
  </Mxperts_CmsPageLayouts>
 </modules>
</config>

Als nächstes erweitern wir die Konfiguration aus dem Core. Das Original bis zu Magento 1.3.2 befindet sich in app\code\core\mage\cms\etc\config.xml (ab Zeile 45).
Ab Version 1.3.2 befindet sich die Konfiguration in app\code\core\Mage\Page\etc\config.xml (ab Zeile 46).

Folglich verwenden wir diese Struktur und fügen unser(e) Template(s) hinzu. Dazu erstellen wir die Datei app\code\local\Mxperts\CmsPageLayouts\etc\config.xml

< Magento 1.3.2
<?xml version="1.0"?>
<config>
  <global>
    <cms>
      <layouts>

        <mxperts_page_one>
          <label>Mxperts-Layout 1</label>
          <template>page/mxperts-1.phtml</template>
        </mxperts_page_one>

        <mxperts_page_two>
          <label>Mxperts-Layout 2</label>
          <template>page/mxperts-2.phtml</template>
        </mxperts_page_two>

      </layouts>
    </cms>
  </global>
</config>
>= Magento 1.3.2
<?xml version="1.0"?>
<config>
  <global>
    <page>
      <layouts>

        <mxperts_page_one module="page" translate="label">
          <label>Mxperts-Layout 1</label>
          <template>page/mxperts-1.phtml</template>
          <layout_handle>page_mxperts_page_one</layout_handle>
        </mxperts_page_one>

        <mxperts_page_two module="page" translate="label">
          <label>Mxperts-Layout 2</label>
          <template>page/mxperts-2.phtml</template>
          <layout_handle>page_mxperts_page_two</layout_handle>
        </mxperts_page_two>

      </layouts>
    </page>
  </global>
</config>

Ab Version 1.3.2 müssen Sie außerdem das Layout Handle eintragen. Dies erfolgt in der Datei app/design/frontend/default/[ihr theme]/layout/page.xml ab Zeile 123.

     <!-- Custom page layout handles -->

    <page_mxperts_page_one>
        <reference name="root">
            <action method="setTemplate"><template>page/mxperts-1.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </page_mxperts_page_one>

    <page_mxperts_page_two>
        <reference name="root">
            <action method="setTemplate"><template>page/mxperts-2.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </page_mxperts_page_two>

Das wichtigste sind unsere neuen Templates. In meinem Fall habe ich das Template app/design/frontend/default/default/template/page/1column.phtml zweimal kopiert, angepasst und in mxperts-1.phtml ,mxperts-2.phtml umbenannt.

Das Ergebnis im CMS von Magento ist im folgenden Screenshot zu sehen.

cms_layout_anim

Nun wünsche ich viel Spaß beim Layouts erstellen :-)
Johannes Teitge