Eigene Layouts in Magento CMS integrieren



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

  • Twitter
  • Webnews
  • Mister-Wong
  • Facebook
  • Digg
  • BlogMarks
  • Share/Save/Bookmark

21 Kommentare to “Eigene Layouts in Magento CMS integrieren”

  1.  ds_1984 sagt:

    Danke für die Info - kann ich öfter gebrauchen.

  2. yesuar yesuar sagt:

    kann es sein das diese Vorgehensweise unter 1.3.2.1 nicht mehr funktioniert?

  3. yesuar yesuar sagt:

    aahhh hab es gefunden ab der Version 1.3.2 wurde das einbauen von eigenen Layouts wesentlich vereinfacht.
    Somit kann man unter “/app/design/frontent/interface/design/layout/page.xml” diese Einträge hinzufügen.

    Ab Zeile (123) findet man nun:

    page/meinLayout.phtml

    1

    mfg
    yesuar

  4. Hallo yesuar,
    danke für Deine Antwort - dies erspart mir nun etwas Zeit beim Suchen.

    Gruß
    Johannes Teitge

  5. Ich habe das Tutorial nochmal überarbeitet und die Änderungen ab Version 1.3.2 berücksichtigt.

    Gruß
    Johannes Teitge

  6. maxhb maxhb sagt:

    Hi!
    danke für den Tipp. Kann man auf ähnliche Art und Weise auch ein Layout entfernen, also z.B. das “2 columns with bar right” layout?

    Gruß
    maxhb

  7. M M sagt:

    Hallo Johannes,

    wahrscheinlich off topic, aber wie und wo(Pfad) kann ich bei einem mehrspaltigen Layout den Inhalt der rechten Spalte bearbeiten? Wie kriege ich z.B. die Newsletteranmeldung etc., Warenkorb auf der Startseite weg.

  8. [...] Heute stand von unserem Kunden Switzerlandshop (http://www.switzerlandshop.com/) eine Update von Magento 1.2.1 auf 1.3.2.2 an. Wir und unser Provider hatten uns schon auf das schlimmste eingestellt, Updates von alles Files und MySQL-Dump bereitgestellt. Das Update starteten wir auf der Linux-Konsole und es lief relativ schnell durch. Wie bereits vermutet musste ich nach der Umstellung eine Erweiterung erstellen, um das angepasset Layout für die Startseite im CMS wieder aktivieren zu können. (Eigene Layouts in Magento CMS integrieren). [...]

  9.  Paradise sagt:

    Hallo und erstmal ein großes DANKESCHÖN für all die super Magento Artikel. Auf der Magento Seite blickt man ja nicht durch.

    Hierzu nun: Bei mir funktioniert das ganze nur in der “app\code\core\Mage\Page\etc\config.xml” bei 1.3.2.3 und der vorherigen version. Mit “app\code\local\paradise\CmsPageLayouts\etc\config.xml” bekomm ich die Layouts im Admin nicht angezeigt. Bin das ganze nun 30 mal durchgegangen und es will nicht :-(

    • Hast Du auch das Layout Handle eingetragen?

      •  Paradise sagt:

        So nach ewigem probieren und nachdem es mit eurem original ging hab ich was ganz merkwürdiges gefunden.

        Schreibt mal den Ordner “app\code\local\Mxperts\” klein.
        Also: app\code\local\mxperts\ und schon geht es nicht.
        Dabei spielt es keine Rolle ob “Mxperts_CmsPageLayouts” in der “mxperts_layout.xml” groß oder klein geschrieben wird.

        Komische sache. Und mit sowas verbringt man Tage *lol

  10.  Paradise sagt:

    Klar :-)

    app/etc/modules/paradise_layout.xml

    local
    true

  11.  robin2160 sagt:

    Vielen Dank, funktioniert hervorragend in magento 1.3.2.2 und 1.3.2.3
    Ein exzellenter magento Blog bei dem nicht nur Einsteiger noch einiges lernen können…

  12.  franzjakob sagt:

    Hallo,

    ich möchte das Impressum aus dem Footer an den Anfang der Zeile “Mein Benutzerkonto” stellen. Wie macht man das bzw. welche Datei ist wie zu ändern? Vielen Dank für die Hilfe.

    Franz

  13.  evilknevil10 sagt:

    Hallo,

    super Tutorial. Allerdings stellt sich jetzt die Frage: Wie kann ich z.b. jetzt meine eigene rechte Spalte erstellen? Im moment wird bei mir noch der Warenkorb usw. angezeigt. Ich möchte aber für das Mxperts-Layout meine eigene rechte Spalte erstellen. Wäre super vielleicht das ganze noch ans Tutorial dran zuhängen.

    Gruß

  14.  denfie sagt:

    Hallo,

    ich schließe mich an super Tut. Nur eine Sache bring ich noch nicht so auf die Reihe. Ich erstelle die Modelstruktur in meinem Fall:
    app/etc/modules/Abc_layout.xml
    app/code/local/Abc/CmsPageLayouts/etc/config.xml

    Ersetze also alle Mxperts durch ein einfaches Abc und nix geht mehr. Mach ich jedoch wieder ein Mxperts draus läuft alles. Muss man eigene Module explizit noch irgendwo angeben oder reicht es bei Magento mit angegebennen Struktur “app/etc/modules/Abc_layout.xml” ein Modul zu definieren.

    Sorry für die Fragen aber ich muss mich noch ein wenig in das Magento System einarbeiten. Sitze gerade mal 5 Tage dran und muss in knappen 10 Tagen mindestens Profi drin sein. Vielleicht gibt es ja irgendwo ein Tut was rein auf Programmierer und eines was nur auf Designer ausgerichtet ist. Hab bestimmt in den letzten 5 Tagen nix anderes gemacht außer mir irgendwelche Tut’s in englisch und deutsch reinzuziehen. Aber mehr als die Grundkenntnisse und das Grundverständnis des Programms konnte ich noch nicht erlangen.

    Gruß

    • Hallo,

      ich empfehle Dir das Buch Guide to E-commerce Programming with MAGENTO von Mark Kimsal/php|architect. Dann hast Du wenigstens die Grundlagen über die Namenskonvention, Klassenbezeichnungen Verzeichnisstrukturen, usw.
      Denn dies würde den Rahmen für dieses Post sprengen. Dein Vorhaben in 10 Tagen Magento-Profi muss ich bewundern - ist aber auch unrealistisch. Falls Du es schaffts, melde Dich bei uns, dann nehmen wir bei Dir Unterricht ^^

      Aber kaufe Dir das Buch, damit hast Du eine gute Grundlage - hat uns auch sehr viel geholfen.

      Viel Erfolg bei Deinem Vorhaben
      Johannes Teitge

  15.  cbatik sagt:

    Hallo! Danke für die tolle Anleitung. Weiter oben wurde schon einmal die gleiche Frage gestellt: Kann man auf ähnliche Art und Weise die bestehenden Layouts (zB 3spaltig) aus der Auswahlliste im Admin bzw. CMS entfernen? Hab recherchiert und probiert - aber nix gefunden.

    Danke, LG
    Christoph

Kommentar erstellen

You must be logged in to post a comment.

Bitte beachten: Mxperts.de ist kein Supportforum sondern eine Informationsplattform, deshalb benutzt für Diskussionen das deutsche Forum von Magento. (Fragen/Kommentare zu den Tutorials ausgeschlossen). Außerdem gebe ich keinen kostenlosen Support zu Magento. Leider haben das einige Leser in letzter Zeit falsch Verstanden und ich bitte um Euer Verständnis. Ich denke diese Plattform ist von unserer Seite aus schon genügend Gratis-Leistung.