28.05.2013
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...
22.05.2013
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...