25.07.2015
Magento ist durch seine Flexibilität sehr beliebt bei Händlern und Entwicklern. Vor allem das einfache Erweitern und Überschreiben von Models und Blöcken ermöglicht eine vielfältige Modul Landschaft. Durch den vielfältigen Einsatz von Plugins kommt es aber auch immer wieder zu Problemen, wodurch neu installierte Plugins nicht funktionieren. Durch den technischen Aufbau von Magento 1 kann jedes Model nur einmal von einem Standard Plugin überschrieben werden, da die Plugins alle die gleichen Klassen erweitern. Natürlich kann man hier aber händisch nacharbeiten und die jeweiligen Plugin Klassen anpassen. Hierfür muss man allerdings wissen, welche Plugins bereits Core Models oder Blöcke erweitern. Wie bekomme ich eine Liste mit allen Klassen Rewrites? Am einfachsten und ohne zusätzliche Tools geht das mit Magento mit der Mage::getConfig() Methode. Falls man nur die überschriebenen Blöcke oder Models ausgeben will, kann man dieses mit einer Erweiterung des Parameters erreichen. Mit n98-Magerun eine Rewrite Liste erzeugen Etwas einfacher geht das ganze auch mit dem Magento Tool n98-magerun. Das Tool, welches sich selbst als das Schweizer Taschenmesser für Magento bezeichnet, liefert für genau diesen Einsatzzweck eine Funktion mit. Nachdem man die .phar Datei heruntergeladen hat und in das Magento Verzeichnis gelegt hat, kann man sich alle rewrites mit diesem Befehl anzeigen lassen. Durch das eigene Parsen der config Files ist es dem Tool sogar möglich, eventuell bestehende Konflikte zwischen verschiedenen Modulen...
15.07.2015
Jeder Webshop beinhaltet auch Unterseiten, welche nicht von Google indexiert werden sollen. Das kann die verschiedensten Gründe haben, zum Beispiel dass der Inhalt zwar für den Besucher interessant ist, aber eigentlich nur Duplicate Content ist und in gleicher Form bereits auf der Webseite eines Zulieferers verfügbar ist. Mit Magento hat man die Möglichkeit den meta robots Tag über eine Extension, wie beispielsweise dieser, für jede Seite im Admin Menü zu hinterlegen. Hierfür eine Extension zu installieren ist sinnvoll um ganze Verzeichnisse und Unterseiten mit einem noindex Parameter zu versehen. Noindex in der layout.xml Datei hinterlegen Falls man nur wenige Seiten auf noindex stellen will, ist das einfügen der noindex Anweisungen in der layout.xml Datei ein guter Weg. Mit dem Code wird jede Seite, welche den jeweiligen layout code lädt, auf NOINDEX,FOLLOW gesetzt. Beispielsweise kann man mit diesem Code jede Produkt Unterseite auf noindex stellen. Natürlich ist es möglich auch andere Kombinationen wie NOINDEX,NOFOLLOW oder INDEX,FOLLOW in die jeweiligen Code Snippets einzutragen. Übrigens: Die gleiche Layout Reference kann auch für Title und Description benutzt werden. Im nächsten Codebeispiel wird nicht nur der meta robot Tag gesetzt, sondern auch der Title und die Description verändert. Noindex für CMS Seiten hinterlegen Genauso einfach wie man Layout Anweisungen in der layout.xml Datei verändern kann, kann man diese auch auf Seiten im Magento CMS verändern. Die Anweisungen bleiben dabei komplett die...
10.07.2015
Man ist gerade dabei den eigenen Magento Shop in mehreren Sprachen verfügbar zu machen und stößt einige Wochen später auf ein großes Problem: der Magento Shop produziert sehr viel Duplicate-Content, welcher von Google liebend gerne indexiert wird. Plötzlich erscheinen viele Seiten im Index, welche den ___store-Parameter beinhalten und dabei unschöne Urls wie http://www.beispielshop.de/?___store=english oder http://www.beispielshop.de/?___store=default erzeugen. Theoretisch kann dadurch jede Produkt-Unterseite mehrfach indexiert werden, was zu Rankingverlusten führen kann. Wie so oft in der Software Entwicklung kann man das Problem auf mehreren Wegen lösen. Lösung 1: Store Parameter als festen Bestandteil in die Url aufnehmen Magento bietet die Möglichkeit einen Shop mit mehreren Sprachen auf einer Domain zu betreiben. Ist die Option aktiviert, wird in den Verzeichnisbaum automatisch der jeweilige Storecode integriert. Die Url für den default Shop würde dann zum Beispiel so ausschauen: http://www.beispielshop.de/default/produkt123.html Die Option ist in der Magento Konfiguration unter System -> Configuration -> Web -> URL Options mit dem Namen Add Shop Code to URLs auffindbar. Steht diese Option auf „Ja“ wird der Url Pfad automatisch erweitert. Falls dieser Lösungsansatz gewählt wird, ist es sinnvoll dem default Shop einen „sprechenden“ Namen zu geben. Der Name des Shops kann in Magento unter System -> Manage Shops angepasst werden. Lösung 2: Das Template modifizieren Bei der zweiten, üblichen Lösung für das Problem passt man das Template an einer Stelle minimal an. Hierzu muss in dem language-switcher Template in der Datei page/switch/languages.phtml folgende Stelle: mit folgender Steller ersetzt werden: Nach der Änderung erstellt Magento die Wechsel Urls ohne den...
02.07.2015
Magento bietet dem Nutzer vielfältige Möglichkeiten, um eine Magento Installation möglichst flexibel zu gestalten. Ein gutes Beispiel hierfür ist die Verlinkung mit URL-Variablen. Mit der Verwendung von URL-Variablen in CMS-Seiten oder Blöcken stimmen die URLs auch nach einer Domain Änderung noch. In Ergänzung zu einem alten Post, hier noch die vollständige Liste mit URL-Variablen in Magento Seiten und Blöcken. Skin Urls Die Skin-Url Variable liefert den Link zu dem gewählten Template zurück, bei welchem die Datei auffindbar ist. Genauso wie bei dem Template Fallback (falls eine Template-Datei nicht verfügbar ist, wird das nächste Template gescannt) verhält es sich hierbei mit Bildern, CSS Dateien oder JavaScript Dateien. Media Urls Um auf ein Bild zu verlinken ist die Media Variable die richtige Wahl. Als Parameter kann man auch hier der Variable einen Pfad mitgeben zu dem jeweiligen Bild. Store Urls Zu guter letzt sollte man auf jeden Fall noch die Store / Base URLs erwähnen. Mithilfe von diesen kann man auf jede beliebige Unterseite verlinken, wie zum Beispiel auf CMS-Seiten. Die Store Url ist hierbei speziell für Multistore Umgebungen hilfreich, wenn unterschiedliche URLs für die Stores...