Ich bin neu in Magento und habe einige statische Seiten, die ich in das CMS integrieren möchte.
Ich habe seit Tagen nach einer Möglichkeit gesucht, dem CMS benutzerdefinierte Felder hinzuzufügen, ähnlich wie Wordpress diese Funktion hat.
Ich habe ein paar Links gefunden:
http://www.atwix.com/magento/adding-custom-attribute-to-a-cms-page/ <- Zu verwirrend / nicht klar, was ich in diesem Tutorial tun muss.
http://mrpalvinder.wordpress.com/2014/05/30/how-to-add-custom-fields-in-cms-edit-page-admin-panel/ <- Nicht hilfreich
Ich benötige diese Funktion, da sich einige meiner Inhalte an verschiedenen Stellen auf der Website befinden und das Hinzufügen aller Inhalte in einem Inhaltseditor es mir nicht ermöglicht, den Inhalt so aufzuteilen, wie ich es möchte. Ich möchte diesen Inhalt dann in meinen Vorlagendateien aufrufen können.
Ob ich dies programmgesteuert oder mit einer Erweiterung tun kann, jede Hilfe wäre willkommen.
Vielen Dank.
Antworten:
Wie bereits erwähnt, ist der atwix-Blog dafür sehr gut geeignet, aber ich werde ihn auch um die Hauptmodulteile erweitern.
Modul erstellen
Um ein Modul zu erstellen, benötigen wir zunächst eine Modul-XML-Datei. Erstellen Sie also die Datei unter
app/etc/modules/StackExchange_Example.xml
. Es sollte wie folgt aussehen.Im Grunde lässt dies Magento wissen, dass die Erweiterung im lokalen Codepool gefunden werden sollte. Jetzt müssen wir die eigentliche Modulkonfiguration erstellen und diese sollte sich unter dem Ordner befinden
app/code/local/StackExchange/Example/etc/config.xml
. Was diese Datei nun tut, sagt Magento, was diese Erweiterung tatsächlich tut und welche Elemente sie hat, wie Modelle, Blöcke und Controller.In unserem Fall benötigen wir derzeit nur eine Modelldefinition für einen Beobachter, um ein Ereignis abzuhören,
adminhtml_cms_page_edit_tab_content_prepare_form
damit wir der Registerkarte cms ein neues Feld hinzufügen können, und um eine Ressource zu haben, damit wir der Datenbank eine Spalte hinzufügen können.Die Datei config.xml wird also wie folgt angezeigt.
Feld zur Tabelle hinzufügen
Jetzt müssen wir das Feld zur Datenbanktabelle hinzufügen, damit es gleichzeitig mit dem Rest des Inhalts der CMS-Seite gespeichert werden kann. Dazu müssen Sie eine PHP-Datei unter erstellen
app/code/community/StackExchange/Example/sql/stackexchange_example_setup/install-0.1.0.php
. Diese Datei lädt einfach die Tabelle und fügt eine neue Spalte hinzu.Jetzt können Sie hier natürlich Ihre Spalte mit allen Anforderungen hinzufügen, die Sie benötigen.
Spalte zum Admin-Bereich hinzufügen
Jetzt haben wir bereits das Ereignis zum Anhören, um die Spalte hinzuzufügen. Jetzt erstellen wir den Beobachter und die Funktion. So können wir die Datei erstellen
app/code/community/StackExchange/Example/Model/Observer.php
und die Datei sieht wie folgt aus.Dies sollte nun ausreichen, damit beim Speichern der CMS-Seite das Element auch in der Datenbank gespeichert wird, sodass Sie auf halbem Weg sind. Jetzt müssen wir es nur noch im Frontend anzeigen lassen.
Frontend-Anzeige
Nun ist der zweite Weg, den atwix beschreibt, eigentlich sehr schön. Grundsätzlich müssen Sie der cms-Seite über den Administrator ein Kundenlayout "layout.xml" hinzufügen und dann einfach eine Vorlagendatei erstellen.
Unter der CMS-Seite im Administrator finden
CMS -> Pages -> Your page -> Design
Sie also eine Möglichkeit, eine bestimmte Layout-XML hinzuzufügen, die nur für diese CMS-Seite ausgeführt wird.Dieses Layout fügt
stackexchange/example/cmsattribute.phtml
nach dem Hauptinhalt Ihrer Seite einen neuen Block mit der Vorlage hinzu .Erstellen Sie nun einfach die Vorlage
app/design/frontend/base/default/template/stackexchange/example/cmsattribute.phtml
und in dieser Vorlage müssen Sie lediglich die aktuelle CMS-Seite laden und die Attributdaten abrufen.Wie gesagt, der atwix-Blog ist sehr gut. Alles, was ich hier getan habe, ist, die beiden Beiträge zu kombinieren und den Teil über das Datenbank-Update hinzuzufügen.
quelle
StackExchange_Example
. Das ist ein wirklich guter Name für Beispiele. Ich werde dies von nun an hier verwenden (wenn ich Ihre Erlaubnis habe). Auf diese Weise erkennen Leute, die an Projekten arbeiten, nach denen, die hier Fragen stellen, vielleicht den Wert von SE :).