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: countryRegions is not defined

Magento: countryRegions is not defined

Der Checkout bei Magento gehört wohl zu den fehleranfälligsten Bereichen von Magento. Durch den starken Einsatz von AJAX ist das Debugging für viele Fehler deutlich aufwändiger, als für die restlichen Magento Seiten. Ein typischer Fehler ist, dass die Regionen/Bundesländer nicht angezeigt werden oder diese nicht aktualisiert werden, wenn ein anderes Land ausgewählt wird. Oftmals erscheint auch in der JavaScript Debug Konsole folgende Meldung: Das bedeutet, dass die Variable countryRegions nicht definiert wurde und daher bei einem Länder Wechsel die neue Bundesländer nicht angezeigt werden können. Beheben lässt sich das ganze recht einfach, durch das einfügen von in der onepage.phtml. Diese befindet sich, je nach Template, beispielsweise hier: Wichtig dabei ist, dass man den Codesnippet ganz oben in die Datei einfügt, da bereits in den ersten Zeilen auf die Variable zugegriffen...
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...
Magento: Statischen Block ausgeben

Magento: Statischen Block ausgeben

Eine große Stärke von Magento ist die Flexibilität. Diese Flexibilität wird unter anderem auch von dem Block / Page Konzept gewährleistet. Dadurch ist es möglich bestimmte Content Blöcke auf der Seite immer wieder zu verwenden. Super ausspielen kann Magento diesen Trumpf bei einem Impressum oder den AGB. Das Impressum muss bei einem (deutschen) Shop sehr oft angezeigt werden – ob in den Transaktionsemails oder auf der Webseite. Hier ist es natürlich angenehm, wenn man vVeränderungen nur an einer Stelle im System ausführen muss. Es gibt in Magento verschiedene Möglichkeiten diesen Block dann auf einer Seite oder in einer Email wieder auszugeben. Hier will ich die wichtigsten auflisten. Per PHP Blöcke kann man per PHP direkt im Template ausgeben. Es ist dabei auch möglich den Title und den Content seperat auszugeben. In diesem Beispiel wird der Block mit dem code footer_links ausgegeben. Auf diese Art und Weise wird allerdings nur der Content des Blocks ausgegeben. Um auch den Title auszugeben, sollte man darüber noch folgenden Code einfügen: Durch den Aufruf des Models cms/block kann der Code nicht nur in Templates, sondern auch in Modul Blöcken verwendet werden. Allerdings sollte man versuchen das zu vermeiden, da es kein sauberer Programmierstil ist. In den Template selbst kann man den Aufruf des Models auch durch ein $this ersetzen.  Per XML Statische Blöcke können auch mit den Layout XML Dateien auf einer Seite eingebunden werden. Sinnvoll ist das vor allem bei statischen Blöcken, welche fest im Design verankert sind und trotzdem von Admins gepflegt werden sollen. Eingebunden werden die Statischen Blöcke so: Auch in diesem Beispiel muss der Block Code footer_links durch einen anderen...
Magento: Text kürzen / abschneiden

Magento: Text kürzen / abschneiden

Oftmals kriegt man als Entwickler ein Design vorgesetzt, das nicht skalierbar ist. Das Design schreibt also für manche Bereiche eine bestimmte Höhe vor, auch wenn der Content darin mehr Platz bräuchte. Hier bietet es sich dann meistens an den String mit PHP zu kürzen und anschließend auf den vollständigen Text zu verlinken. In Magento gibt es hier auch eine spezielle Funktion, namens truncate. Aufrufen kann man diese Funktion folgendermaßen: Hierbei wird in der Variable $string der auszugebende Content übergeben und via $length die Länge des neuen Strings...
Magento Skin Url in CMS Blöcken und Pages verwenden

Magento Skin Url in CMS Blöcken und Pages verwenden

In Magento Templates ist es ja üblich anstatt relativer Pfade absolute Pfade mithilfe der Methode zu verwenden. Obwohl diese Funktion auch in CMS Pages und CMS Blöcken zur Verfügung steht, wird diese dort kaum verwendet. Spätestens beim nächsten Domain-Umzug oder beim Einsatz eines Content Delivery Networks ist man dann aber froh über den Einsatz dieser Funktion. In den CMS Blöcken und Pages können absolute Pfade zu Bildern mit dem folgenden Code erstellt werden: Um Bilder einzubinden muss also folgender Code eingebunden werden:...
Tabellennamen in Magento mit Table Prefix ausgeben

Tabellennamen in Magento mit Table Prefix ausgeben

Magento bietet die Möglichkeit Installationen mit Table Prefix auszuführen. Das bedeutet, dass jede Tabelle vor ihrem eigentlichen Namen einen Prefix im Namen trägt. Damit trotzdem alle Module funktionieren, sollte man beim Programmieren stets darauf achten, dass man Tabellennamen nicht hardcoded in die PHP Dateien schreibt. Hierfür sollte man diese Funktion verwenden:...
Die Magento Config anzeigen

Die Magento Config anzeigen

Um tiefgreifende Änderungen in Magento durchführen zu können, muss man manchmal in tiefe Schichten eintauchen. Auch die Config muss man hierfür öfters mal analysieren. Einen ersten Einblick kann man mit folgendem Snippet erhalten: Durch das Einbinden dieses Snippets in einem Template, wird einem die komplett geladene Magento Config angezeigt. Natürlich sollte man diesen Snippet daher nur in Entwicklungsumgebungen einbinden, da in dieser Config beispielsweise auch MySQL-Daten enthalten sind. Durch das Anzeigen der Config kann man leicht überprüfen ob Module wie gewünscht geladen werden und ob die Config Dateien dieser Module auch richtig eingelesen...
Webentwickler / PHP Konferenzen 2013

Webentwickler / PHP Konferenzen 2013

Ein neues Jahr hat angefangen, daher stellt sich auch die Frage: auf welche Konferenzen gehe ich dieses Jahr? Welche waren letztes Jahr gut? Welche Konferenzen waren eher enttäuschend? Da Michael Kliewe letztes Jahr eine super Übersicht zusammen gestellt hat und ich diese sehr gern benutzt habe, habe ich mir dieses Jahr die Mühe gemacht. Ich habe für das Jahr 2013 einen Kalender mit den wichtigsten Konferenzen in Deutschland und Umgebung zusammen gestellt. Wenn eine Konferenz fehlt, dann bitte einfach schnell einen Kommentar hinterlassen. 25-26 Januar 2013 PHP Benelux in Antwerpen 22-23 Februar 2013 PHP UK Conference in London, England 11-14 März 2013 MobileTech Conference in München 19 März 2013 PHPNE Conference in Newcastle upon Tyne, England 19-22 März 2013 Magento Developers Paradise in Kaprun, Österreich 19-20 April 2013 Inspiring Flow (Typo3) in Kolbermoor / Rosenheim 22-26 April 2013 JAX in Mainz 17-18 Mai 2013 PHPDay in Verona, Italien 2-5 Juni 2013 International PHP Conference in Berlin 3-5 Juni 2013 Webinale in Berlin 3-4 Juni 2013 Meet Magento #7.13 in Leipzig 5-7 Juni 2013 Entwicklertage Karlsruhe 6-8 Juni 2013 Dutch PHP Conference in Amsterdam, Holland 24-27 Juni 2013 Web Developer Conference in Nürnberg August 2013 FrOSCon (genauer Termin steht noch nicht fest) 29-30 Oktober 2013 Webtechcon in...