Magento ist ein sehr leistungsfähiges und daher etwas schwer zu zähmendes CMS. Es basiert auf dem mächtigen Zend-Framework, und es wird oft schwierig, Magento-Vorlagen zu erstellen oder zu bearbeiten. In diesem Artikel versuche ich, eine kurze Liste nützlicher Funktionen für die Entwicklung von Magento-Vorlagen zu erstellen, die häufig bei der Themenentwicklung verwendet werden. Wir müssen in diesem Artikel eine Menge abdecken, also werde ich ohne weiteres auf die Funktionen eingehen.
Ein charakteristisches Merkmal von Magento ist das Layout. Dies ist eine hinzugefügte Schicht, die in den meisten anderen CMS nicht vorhanden ist. Magento-Layouts werden über XML-Tags definiert. Als bewährte Methode wird in der Regel benutzerdefinierter XML-Code hinzugefügt local.xml
Datei, die sich im Layout-Ordner befindet, da es sich um die zuletzt geladene Datei handelt und die darin geschriebenen Funktionen alle anderen Funktionen überschreiben.
Mit XML-Code können wir verschiedene CSS- und JS-Dateien in Magento-Blöcken hinzufügen. Ein Vorteil dieses Ansatzes ist, dass wir sicherstellen können, dass CSS- und JS-Dateien nur in Layouts geladen werden, die sie benötigen. Auf diese Weise können wir das unnötige Laden von CSS- und JS-Dateien vermeiden und somit die Ladezeit der Seite reduzieren.
Wir können den folgenden Code verwenden, um eine CSS-Datei in einem beliebigen Layoutblock hinzuzufügen.
skin_css css / file.css
Hier enthält der Referenzname den Namen des Blocks, in den die CSS / JS-Datei eingefügt wird. In diesem Beispiel fügen wir eine CSS-Datei hinzu. Der type-Parameter lautet also skin_css
, Wenn Sie jedoch eine JS-Datei hinzufügen müssen, ändert sich der Typparameter in skin_js
. Das
Das Tag ist absichtlich leer gelassen.
Mit dem folgenden Code können Sie ein untergeordnetes Element eines übergeordneten Blocks aufheben und diesen untergeordneten Block einem anderen übergeordneten Block zuordnen. Sie können beispielsweise den Abrufblock (untergeordneter Block) aus der Seitenleiste (alter übergeordneter Block) aufheben und diesen Abfrageblock jedem neuen übergeordneten Block wie der Fußzeile zuweisen.
Blockname Blockname
Wenn Sie nur einen Block entfernen müssen, können Sie nur den ersten Teil des obigen Codes verwenden. Wenn Sie einem bereits vorhandenen Block nur einen neuen Block zuweisen müssen, verwenden Sie einfach den zweiten Teil des Codes.
CMS-Blöcke sind besonders hilfreich bei der Erstellung von Vorlagen, da sie einem nicht-technischen Benutzer die Möglichkeit geben, Inhalte in diesem Block einfach über das Admin-Panel hinzuzufügen. CMS-Blöcke können mit dem folgenden Code in jeden Layoutblock eingefügt werden.
block_identifier
Eine weitere wichtige Funktion, die in XML-Dateien häufig verwendet wird, ist das Zuordnen von Vorlagen zu verschiedenen Layoutblöcken. Sie können dies einfach mit der folgenden Codevorlage tun.
Wenn Sie bereits eine Vorlage zugewiesen haben und diese ändern möchten, können Sie diesen Code verwenden:
page / template_file.phtml Nützliche PHP-Funktionen
Obwohl XML-Dateien ein wichtiger Bestandteil jeder Magento-Vorlage sind, die Vorlagenlayouts definiert, sind PHP-Dateien die eigentlichen Bausteine, die die eigentliche Aufgabe erfüllen, diese Layoutblöcke mit nützlichen Inhalten zu füllen.
Allgemeine speicherbezogene Funktionen
Dies sind die Funktionen, die auf den Vorlagenseiten verwendet werden.
Wir können zwei verschiedene Ansätze verwenden, um viele dieser URLs zu generieren. Eine davon ist die Verwendung von getURLs (wie
getBaseUrl
,getSkinUrl
, etc.), und die andere besteht darin, eine Helfer / Model-Klasse zu verwenden. Um es hier einfach zu halten, versuchen wir in den meisten Fällen den getURL-Ansatz zu verwenden. Um die Store-URL abzurufen, können Sie beispielsweise diese einfache Funktion verwenden:$ url = Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_WEB);Ebenso können wir die URL der aktuellen Seite folgendermaßen generieren:
$ url = Mage :: helper ('core / url') -> getCurrentUrl ();Auf dieselbe Weise können wir die URL einer bestimmten Seite mithilfe des folgenden Codes dynamisch generieren:
$ url = $ this-> getUrl ('page.html');Die folgenden zwei Ansätze können verwendet werden, um auf alle Dateien im Skin-Verzeichnis zuzugreifen. Da sich die meisten CSS-, JS- und Bilddateien im Skin-Verzeichnis befinden, werden Verweise auf diesen Speicherort in jeder Vorlage hunderte Male gemacht.
$ url = $ this-> getSkinUrl ('images / file.jpg');Wenn Sie über einen sicheren Zugriff eine Ressource aus dem Skin-Verzeichnis abrufen möchten, können Sie einfach einen zusätzlichen Parameter von übergeben
Array ('_ secure' => true)
um das zu erreichen.$ this-> getSkinUrl ('images / bildname.gif', array ('_ secure' => true));Verwendung der
getBaseURL ()
Funktion können wir auch auf mehrere andere Verzeichnis-URLs zugreifen. Hier sind einige Beispiele:Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_MEDIA); // erstellt einen Medienverzeichnispfad, d. h. mydomain.com/media Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_JS); // erstellt den JS-Verzeichnispfad, d. h. mydomain.com/JS // eine andere Methode zum Erstellen einer URL für den Skin-Verzeichnispfad, d. h. meinedomain.com/skinBeim Erstellen / Bearbeiten von Vorlagen für Magento müssen wir häufig statischen Text an verschiedenen Stellen einfügen. Es kann sich um eine Anweisung für Benutzer, um einen Schaltflächentext oder um etwas anderes handeln. Um sicherzustellen, dass es für die Übersetzung in andere Sprachen bereit ist, empfehle ich Ihnen, den Inhalt wie folgt zu setzen:
$ text = $ this -> __ ('Inhalt');Produkt- / kategoriebezogene Funktionen
Produkt- und Kategorieseiten sind der wichtigste Bestandteil eines E-Commerce-CMS. Beim Erstellen von Magento-Vorlagen werden Sie meistens an diesen Seiten arbeiten. Ich habe hier einige häufig verwendete Funktionen für diese Seiten aufgelistet, die Sie bei Ihren Entwicklungsarbeiten unterstützen werden.
Wenn Sie sich auf einer Kategorieseite befinden, können Sie diese Funktion verwenden, um die aktuelle Kategorie zu laden.
$ _category = Mage :: getModel ('catalog / layer') -> getCurrentCategory ();Sie können diese Funktion auch verwenden, um dieselbe Funktion auszuführen:
$ _current_category = Mage :: registry ('current_category');Manchmal müssen Sie eine Kategorie über ihre ID-Nummer referenzieren. Diese Funktion wird in solchen Fällen nützlich sein:
$ _category = Mage :: getModel ('catalog / category') -> load ($ category_id);Wie bei Kategorien können Sie auch über die ID auf ein Produkt zugreifen, indem Sie die folgende Funktion verwenden:
$ _product = Mage :: getModel ('catalog / product') -> load ($ product_id);In Magento haben Produkte einen anderen eindeutigen Bezeichner als ID, und zwar SKU. Sie können Produkte auch über ihre SKU mit dieser Funktion referenzieren:
$ _product = Mage :: getModel ('catalog / product') -> loadByAttribute ('sku', $ product_sku);Mit dieser Funktion können Sie mit benutzerdefinierten Parametern (Größe, Stil usw.) auf die Produktbilder zugreifen. Bitte beachten Sie, dass diese Funktion nur in einer Datei product / view / media.phtml funktioniert.
$ this-> helper ('catalog / image') -> init ($ _ product, $ _image_attribute_name) -> keepFrame (false) // Wenn true, wird sichergestellt, dass das Bild Dimensionen in $ width / $ height -> constrainOnly (true) hat ) // Wenn true, wird sichergestellt, dass die Höhe oder Breite des Bildes die tatsächliche Breite oder Höhe nicht überschreitet. -> keepAspectRatio (true) // Wenn true, wird gewährleistet, dass das Verhältnis von Höhe und Breite des Bildes erhalten bleibt -> Größe ändern ($ _ image_width, $ _Bildhöhe); // dort angegebene Parameter werden als Länge für Breite und Höhe verwendet.Funktionen in Bezug auf Einkaufswagen / Checkout
Die Warenkorb- und Checkout-Seiten sind ebenfalls sehr wichtige Bestandteile einer E-Commerce-Website. Die damit verbundenen Funktionen helfen Ihnen nicht nur beim Erstellen dieser Seiten, sondern auch beim Anzeigen von Warenkorbdetails in der Seitenleiste, Fußzeile oder Kopfzeile.
Mit der unten stehenden Funktion können Sie die Anzahl der insgesamt im Warenkorb befindlichen Artikel verwenden.
getSummaryCount ()? $ this-> getSummaryCount (): 0?>Sie können die Artikel, die kürzlich in den Warenkorb gelegt wurden, mit dem folgenden Code durchlaufen:
getRecentItems ()?> getItemHtml ($ _ item)?> __ ("Sie haben keine Artikel in Ihrem Einkaufswagen.")?>Hier habe ich nur den PHP-Code gezeigt. Sie können den HTML-Code gemäß Ihren Stilanforderungen einfügen.
Sie können auch die Zwischensumme der im Warenkorb hinzugefügten Artikel anzeigen, indem Sie diese Funktion verwenden:
formatPrice ($ this-> getSubtotal ())?>Schließlich können Sie diese beiden Funktionen verwenden, um dynamische Links zu den Checkout- bzw. Einkaufswagen-Seiten zu generieren:
getCheckoutUrl ()?> // Erzeugt die URL der Checkout-Seite getUrl ('Kasse / Warenkorb'); ?> // Erzeugt die URL der Einkaufswagen-SeiteCMS-Seitenfunktionen
CMS-Seiten sind die Seiten des Geschäfts, auf denen vom Benutzer erstellter Inhalt veröffentlicht wird. Beispiele für solche Seiten sind die Seite Über uns, die Datenschutzrichtlinie und die Seite mit den Allgemeinen Geschäftsbedingungen. Obwohl diese Seiten normalerweise als Platz für vom Benutzer erstellte statische Inhalte dienen, müssen Sie oft dynamischen Inhalt eingeben, beispielsweise einen dynamisch generierten Link zur Shop-URL oder die Skin-Datei-URL. Im Folgenden besprechen wir, wie Sie mit solchen Szenarien umgehen.
Bitte beachten Sie, dass die oben erläuterten PHP-Funktionen im Inhaltsbereich der CMS-Seiten nicht funktionieren.
So wie wir es benutzen
Mage :: getBaseUrl ();
In den PHP-Vorlagendateien für den Zugriff auf die Store-URL können wir diese Funktion in CMS-Seiten für den Zugriff auf die Homepage-URL verwenden:= store =Ebenso ist die folgende Funktion die Alternative zu
$ this-> getSkinUrl ('images / bildname.jpg');
Funktion, die in einer CMS-Seite verwendet werden soll:= skin url = "images / bildname.jpg" =Diese Funktion ähnelt der
$ this-> getUrl ('mypage.html'
);
Funktion, um auf eine bestimmte Seite zuzugreifen.= store url = "mypage.html" =Auf die Mediendateien kann auch von CMS-Seiten aus mit der folgenden Funktion leicht zugegriffen werden:
= media url = "/ imagename.jpg" =Sie können einen statischen Magento-Block auch innerhalb eines CMS-Seiteninhaltsbereichs aufrufen, indem Sie diese Funktion verwenden:
block type = "cms / block" block_id = "Ihr_Block_identifier" template = "cms / content.phtml"Zwischenspeicher
Caching ist wie jedes andere CMS auch ein wichtiger Bestandteil von Magento. Das Modell, das das Caching-Subsystem in Magento steuert, ist
Mage_Core_Model_Cache
. Um auf den Cache zuzugreifen, verwenden wir ihn durch ein bereits instanziiertes Objekt, auf das zugegriffen werden kannMage :: app () -> getCache ()
. Hier werde ich die Cache-Funktionen angeben, die zum Speichern, Laden und Löschen von Cache-Objekten verwendet werden.Um ein Cache-Objekt zu laden, verwenden wir das
getCache ()
Funktion:$ cache = Mage :: app () -> getCache ();Nach dem Laden des Cache-Objekts verwenden wir die folgende Funktion, um ein Element darin zu speichern.
$ cache-> save ($ string, $ key, array ($ tag), $ lifetime);Ein Beispiel für eine solche Einsparung könnte sein:
$ cache-> save ("Diese Zeichenfolge speichern", "string_key", array ("string_tag"), 60 * 60);Im obigen Beispiel speichern wir die Zeichenfolge
Speichern Sie diese Zeichenfolge
in den Cache. Um darauf zukünftig zugreifen zu können, geben wir ihm einen Schlüssel (string_key
), dann geben wir ihm einen Tag (string_tag
) und schließlich geben wir ihm eine Lebensdauer von 1 Stunde (60 * 60 Sekunden).Wenn Sie den Wert im Cache gespeichert haben, können Sie ihn jetzt mit dem Befehl abrufen
Belastung();
Funktion und Weitergabe derstring_key
als Parameter:$ cache-> load ("string_key");In ähnlicher Weise können wir den im Cache gespeicherten Eintrag mithilfe von entfernen
Löschen();
Funktion und Weitergabe derstring_key
als Parameter:$ cache-> remove ("string_key");Vielleicht fragen Sie sich jetzt, welche Verwendung das für das Tagging verwendete Array ist. Der Zweck einer solchen Markierung besteht darin, eine Funktion in Massenskala auszuführen, indem auf alle Cache-Einträge Bezug genommen wird, denen eine bestimmte Markierung zugewiesen ist. Wenn wir zum Beispiel den folgenden Code verwenden, werden alle Einträge im Cache gelöscht, die über die
string_tag
ihnen zugeordnetes Array.$ cache-> clean (array ("string_tag"));Session
Da wir die Cache-Funktionen erklärt haben, wird das Erwähnen von Sitzungen obligatorisch. In Magento können Session-Variablen genauso einfach gespeichert, geladen und als Cache-Variablen entfernt werden. Ich versuche das an zwei Beispielen zu erklären.
$ msgOne = "Dies ist die erste Nachricht"; $ msgTwo = "Dies ist die zweite Nachricht"; Mage :: getSingleton ('core / session') -> setValueOne ($ msgOne); Mage :: getSingleton ('core / session') -> setValueTwo ($ msgTwo);Jetzt haben wir im Cache gespeichert
$ msgOne
wieValueOne
und$ msgTwo
wieValueTwo
. Um diese beiden abzurufen, verwenden wir folgende Funktionen:$ retrievedValueOne = Mage :: getSingleton ('core / session') -> getValueOne (); $ retrievedValueTwo = Mage :: getSingleton ('core / session') -> getValueTwo ();Hier habe ich absichtlich zwei Variablen gespeichert und in die Session geladen, damit Sie verstehen, wie die gesetzten Präfixe gesetzt und abgesetzt werden.
Wie beim Speichern und Laden ist der Entfernungsprozess für Sitzungsvariablen ziemlich ähnlich:
Mage :: getSingleton ('core / session') -> unsValueOne (); Mage :: getSingleton ('core / session') -> unsValueTwo ();Schließlich können Sie mit dieser praktischen Funktion prüfen, ob ein Kunde angemeldet ist oder nicht:
$ log_in = Mage :: getSingleton ('Kunde / Sitzung') -> isLoggedIn ();Nun, wie gesagt, Magento ist ein riesiges CMS und seine Funktionen können nicht in einem einzigen Beitrag aufgestapelt werden. Ich habe jedoch mein Bestes gegeben, um eine Liste der am häufigsten verwendeten Funktionen zusammenzustellen, und ich habe auch kurz versucht zu erklären, wie sie funktionieren und welche Parameter sie erwarten. Eine sorgfältige Analyse dieser Funktionen hilft Ihnen auch, die Funktionsweise von Magento zu verstehen. Zum Abschluss möchte ich Sie dazu ermutigen, die XML- und PHTML-Dateien des Magento-Basisthemas zu erkunden, um mehr über die Magento-Funktionen zu erfahren.