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...
30.04.2015
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...
22.04.2015
Im E-Commerce ist es sehr einfach die Besucher einer Seite durchgehend zu identifizieren. Dadurch kann man die Aktionen der einzelnen Benutzer aufzeichnen und auswerten. Das gängigste Tool hierfür ist Google Analytics. Aber auch innerhalb des Magento Öko-Systems macht es Sinn, den Besucher einer Seite zu tracken und seine Aktionen aufzuzeichnen. Dadurch kann man beispielsweise die zuletzt angesehenen Artikel prominenter platzieren. Auch wäre es möglich, die Intention des Besuchers anhand vergangener Besuche zu erraten und dem Nutzer die passenden Produkte, Kategorien oder FAQ-Seiten anzeigen. In Magento hat man verschiedene Möglichkeiten einen Nutzer zu identifizieren. Falls der Nutzer sich bereits eingeloggt hat, ist dies am leichtesten über die CustomerId zu erledigen: Da viele Kunden auf Magento Shops allerdings nicht eingeloggt sind (oder sich erst kurz vor dem Kaufvorgang einloggen), muss man auch die Möglichkeit abdecken, dass der Kunde derzeit nicht eingeloggt ist. Ich setze hierfür gewöhnlich die SessionId ein. Diese SessionId wird bei jedem Besucher einer Magento Seite in Form eines Cookies hinterlegt und bleibt identisch, bis der Kunde die Cookies löscht oder die Session abläuft. Wie lange eine Session gültig ist, kann im Magento Backend hinterlegt werden. Um die SessionId abzufragen kann man folgende Methode benutzen: Natürlich kann man die zwei Methoden auch miteinander verknüpfen, um die gespeicherten Daten über den eingeloggten Kunden noch zu...
15.03.2015
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,...
14.03.2013
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...
10.02.2013
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...
01.02.2013
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...
20.01.2013
Jeder der mit PHP experimentiert hat, dürfte diese Fehlermeldung schon mal erhalten haben: Der Fehler deutet darauf hin, dass eine Operation in dem abgebrochenen Skript sehr viel Speicherplatz benötigt. Allerdings gibt es bei den meisten Servern und PHP-Installationen ein Memory Limit von 32MB oder mehr. Falls man vollen Zugriff auf dem Server hat kann man das Memory Limit in der php.ini verändern. Speziell bei Shared Webspace oder Managed Servern hat man allerdings meistens keinen Zugriff auf die php.ini und muss sich daher mit anderen Mitteln weiterhelfen. Eines davon ist das php Memory Limit mittels ini_set zu erhöhen. Voraussetzung hierfür ist allerdings, dass diese Funktion auf dem Server freigeschalten ist. Mithilfe dieses Code Snippets wird das Memory Limit auf 200 MB erhöht. Mit der selben Funktion kann man das Memory Limit auch komplett deaktiveren: Durch das deaktivieren des Memory Limits kann fehlerhafter Code die Erreichbarkeit des Servers beinträchtigen. Daher sollte diese Funktion mit großer Vorsicht verwendet...
15.01.2013
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:...
05.01.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...