Magento: Alle Modul Rewrites anzeigen

Magento: Alle Modul Rewrites anzeigen

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...
Magento: Skin URL, Media URL, Base URL und Store URL in Blöcken verwenden

Magento: Skin URL, Media URL, Base URL und Store URL in Blöcken verwenden

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...
Magento: Redirect von non-www zu www

Magento: Redirect von non-www zu www

Magento leitet in der Standardkonfiguration alle Requests, welche nicht die korrekte Domain enthalten, auf die Startseite weiter. Dadurch landen Kunden oft auf der Startseite, obwohl Sie eigentlich direkt zu einem bestimmten Produkt oder eine Kategorie kommen wollten. Angenommen ein Shop wurde auf der Domain www.example.com installiert. Ein Nutzer versucht nun die Unterseite „category123“ aufzurufen und vergisst dabei das www in der Domain. Der Nutzer wird http://example.com/category123 aufrufen und Magento wird den Nutzer auf die Startseite der korrekten Url weiterleiten, welche in diesem Fall http://www.example.com ist. Natürlich wäre es deutlich sinnvoller, wenn Magento den Besucher direkt auf die jeweilige Unterseite der korrekten Domain weiterleiten würde. Das Problem lässt sich allerdings mithilfe von .htaccess sehr leicht lösen. Die folgenden Zeilen müssen dazu oben in die .htaccess Datei der Magento Installation kopiert...
Magento: Mehrere Felder zum sortieren einer Collection benutzen

Magento: Mehrere Felder zum sortieren einer Collection benutzen

Bei der Modul-Entwicklung für Magento arbeitet man sehr oft mit Collections. Um diese zu sortieren benutzt man die „setOrder“ Methode der Collection. Mit der selben Methode ist es auch möglich eine Datenbank Abfrage zu schreiben, welche nach 2 Feldern sortiert, indem man die Methode zweimal aufruft. Die SQL-Abfrage sortiert dann zuerst nach dem Feld „created_at“ und anschließend nach dem Feld...
Magento: aktuelle URL ermitteln

Magento: aktuelle URL ermitteln

Für die Template Entwicklung ist es oft notwendig die aktuelle Url zu ermitteln. Aber auch für viele andere Einsatzzwecke braucht man die Funktion immer wieder. In Magento gibt es eine Vielzahl verschiedener Möglichkeiten die aktuelle Url zu ermitteln und ich will daher nur zwei sehr gängige Möglichkeiten aufzeigen. Es gibt, je nach Spezialfall, aber auf jeden Fall noch weitere, sinnvolle Möglichkeiten. Die gängigste Variante ist, die Url über die Core/Url Helper Klasse aufzurufen. Das sieht dann so aus: Die Url über das Store Objekt aufzurufen ist genauso möglich: Ich benutze eigentlich immer die core/url Helper Klasse. Ich denke, dass ist der einfachste Weg um an die aktuelle Url von Magento zu kommen. Falls ihr nur den aktuellen Pfad der Url benötigt, um diesen mit anderen Werten abzugleichen könnt ihr folgenden Code verwenden. Im Beispiel wird überprüft, ob die aktuelle Url eine Url des Blogs...
Weiterleitung von http auf https einrichten

Weiterleitung von http auf https einrichten

Https (Hypertext Transfer Protocol Secure) ist derzeit in aller Munde, schließlich will Google in Zukunft Webseiten, welche per https erreichbar sind bevorzugen. Seitdem versuchen viele ihre Webseite per https erreichbar zu machen. Nur weil eine Webseite über https erreichbar ist, heisst das allerdings noch lange nicht, dass diese auch darüber aufgerufen wird. Die Webseite ist trotzdem noch über http erreichbar. Um das zu ändern, gibt es verschiedene Möglichkeiten. 1. Möglichkeit: über die .htaccess Datei Durch das kopieren des Codes oben in eure .htaccess Datei, werden Besucher automatisch von http Webseite auf die https Webseite weitergeleitet. Das funktioniert mit jedem CMS-System. 2. Möglichkeit: über PHP Natürlich ist es auch möglich die Weiterleitung über PHP auszuführen. Dafür müsst ihr am Anfang von eurer index.php folgenden Code Schnippsel einfügen. Das funktioniert nur, wenn euer CMS oder Framework jeden Webseiten Request über eine zentrale index.php leitet (z.B. mit Magento,...
Magento: MySQL Debuggen

Magento: MySQL Debuggen

Magento hat zwar ein gutes Debugging System integriert, allerdings kommt es oft zu Problemen mit dem debugging von MySQL-Queries. Diese stellen einen zu langen String da und werden daher in der Fehlermeldung ab einer gewissen Länge einfach gekürzt. Oft kann man dann kaum noch sinnvolle Informationen aus der Fehlermeldung rauslesen, wie Beispielsweise hier: Aus dieser Fehlermeldung kann man zwar rauslesen, dass es ein Problem mit einem Primary Key gibt, nicht allerdings welche Tabelle das betrifft. Zum Glück haben die Magento Entwickler aber genau für diesen Fall vorgebaut und eine separate MySQL Debugging Funktion eingebaut. Diese kann in der Datei /lib/Varien/Db/Adapter/Pdo/Mysql.php aktiviert werden. Hierfür muss in der Zeile 103 (Version 1.7) die Variable $_debug auf true gesetzt werden: In früheren oder späteren Version kann die Zeile vielleicht etwas variieren, die Datei sollte aber bis zur Magento Version 2.0 die gleiche bleiben. Anschließend werden MySQL-Debug Informationen inklusive der kompletten MySQL-Queries in die Datei /var/debug/pdo_mysql.log geschrieben, wodurch man die Probleme besser verstehen und...
Magento Produkte ohne Bilder finden

Magento Produkte ohne Bilder finden

Wenn der Magento Shop erst einmal tausende von Produkte beinhaltet, ist es nicht leicht immer die Übersicht über alle Datenstände der Produkte zu behalten. „Bei welchem Produkt fehlt nochmal das Bild? Wo ist die Farbe noch nicht hinterlegt?“ sind häufige Fragen, welche sich die Online Shop Redaktion stellt. Früher oder später werden diese Fragen auch immer an den Technischen Betreuer weitergegeben. Wie so oft gibt es auch für dieses Problem in Magento verschiedene Lösungen. Die wohl einfachste Lösung dafür ist wohl diese paar Zeilen Code zu nehmen und in einer Datei auszuführen. Optional kann man hierfür auch noch einen Grid im Admin Backend anlegen, wodurch das ganze auch von den Mitarbeitern des Online Shops einfach und jederzeit verwaltet werden kann. Anschließend kann man die Collection entweder in einen Grid einbinden oder einfach in einem Template oder einem Controller (Achtung: unsauber!) ausgeben lassen. Update (30.5.2013): Da die oben genannte Lösung in verschiedenen Konstellationen nicht perfekt funktioniert, gibt es hier noch eine Erweiterte Version. Da bei verschiedenen Import Vorgängen der Wert ’no_selection‘ nicht richtig gesetzt wird, wird mithilfe dieses Snippets noch überprüft ob der Wert valide ist oder...
Magento: Alle Produkte aus der Datenbank löschen

Magento: Alle Produkte aus der Datenbank löschen

Besonders nach dem Testen eines Produktimport kann es sinnvoll sein, alle Produkte aus Magento zu entfernen. Im Magento Backend besteht hierfür die Möglichkeit, dass man alle Produkte (also auch mehr als die 200 maximal sichtbaren Produkte) löscht. Allerdings werden die meisten die Erfahrung gemacht haben, dass diese Funktion ab einer gewißen Anzahl von Produkten nicht mehr funktioniert oder sehr langsam ist. Auch werden hierbei die Produktnummern nicht zurückgesetzt, was zumindest manchmal eine Anforderung des Kunden sein kann. Einfacher und schneller geht das ganze mit einem MySQL-Query (falls MySQL als Datenbank verwendet wird): Dabei werden allerdings nur die Produkte inkl. den jeweiligen Attribut Values gelöscht. Es werden keine Attribute oder Kategorien gelöscht. Falls es anschließend Probleme mit der Indexierung gibt, muss man die Flat Tables einfach einmal manuell per Hand in phpMyAdmin...
Magento: Google Webfonts über layout Dateien einbinden

Magento: Google Webfonts über layout Dateien einbinden

  Schriften über die Google Webfonts einzubinden gehört mittlerweile fast zum guten Ton. Es ergeben sich dadurch verschiedene Vorteile: Man hat keine Probleme mit dem Copyright der Schriften. Das Einbinden ist sehr einfach und problemlos Es ist zwar, dank CSS, mittlerweile problemlos möglich die Schriften selbst zu hosten und einzubinden, allerdings darf man sich zu recht die Frage stellen: Warum sollte man sich den Stress antun? Bei über 600 Schriften die bei den Google Webfonts zur Zeit gehostet werden, dürfte sicherlich für fast jeden etwas dabei sein. In Magento ergeben sich mit den Google Webfonts allerdings verschiedene Probleme. CSS Dateien werden normalerweise nur über layout Dateien eingebunden. Das hat in sehr vielen Fällen Vorteile, in diesem Fall gestaltet sich das einbinden der Google Webfonts dann allerdings etwas schwieriger. In Foren hab ich daher bereits gelesen, dass man den CSS Link einfach in die page/html/head.phtml Template Datei einbinden soll. Das ist allerdings nicht sauber und sollte daher nur in Ausnahmefällen gemacht werden. Doch es gibt noch eine andere Möglichkeit – das einbinden über einen core/text Block: Auf diesem Weg ist es auch weiterhin möglich, die CSS Datei nur auf bestimmten Seiten einzubinden. Zum Beispiel wenn man die Schriften nur im Checkout Bereich...