Magento Blog für Entwickler

Magento ist das führende Open-Source Shop-System. In unserem Blog diskutieren wir aktuelle Herausforderungen im E-Commerce, geben Tipps und zeigen Probleme auf. Hiermit möchten wir unseren kleinen Teil zum Magento Ökosystem beitragen. Viel Spaß beim Lesen :-)

5 Dinge, die Deine Magento-Extension besser machen

Jul 18, 2015   //   von   //   Entwicklung, Magento  //  1 Kommentar

Jetzt schreibe ich selbst auch schon solche Überschriften – wollte ich eigentlich nie machen. Dennoch ist es in diesem Fall sehr passend. Viele Extensions da draußen sind wirklich super und tun genau was sie sollen – allerdings hat man immer wieder Probleme sie in bestehende Projekte zu integrieren oder zu erweitert, weil einfache Dinge nicht beachtet wurden.

1. Event-Prefix für Models

Um auf die ganzen _after_load, _before_save, _after_save, _delete_before, _delete_after Events der neuen Entitäten hören zu können, muss man im entsprechenden Model die Variable $_eventPrefix setzen. Jetzt hat es sich im Magento-Core irgendwie so eingebürgert, dass man die Variable nicht einfach im Konstruktor setzt, sondern die Variable in der erbenden Klasse neu deklariert. Ich hasse es zwar, wenn das jemand tut (so versteht doch niemand, dass diese in den vererebenden Klassen bereits verwendet wird), aber da halten wir uns einfach mal an den Core und gehen diesen unschönen Weg mit.

protected $_eventPrefix = 'my_entity';

Ich ärgere mich immer, wenn das fehlt und man dadurch auf core_abstract hören muss, man dann im Observer auf den Typen prüft und das Event am Ende auf den ersten Blick niemand versteht.

2. Eigene Events implementieren

Helft den Nutzern eurer Extensions die Logik ohne Rewrites zu erweitern/abzuändern. Das spart jede Menge Ärger bei Updates und macht den Code leserlicher. Und am Ende sind es doch nur wenige Zeilen code mehr.

3. Anständige ACL pflegen

Ich weiß, das ist anstrengend und man vergisst das gerne. Allerdings ist es wirklich nützlich, wenn die Extension etwas komplexer wird und es z.B. viele Entitäten gibt. Aber auch sonst legen wir für Kunden häufig Accounts mit eingeschränkten Rechten an – dann ist es immer sehr anstrengend, wenn man die 3rd Party Extension nicht in den ACLs findet oder diese falsch implementiert sind. Dauert nur wenige Minuten das ordentlich zu machen und man wird es euch danken. Seit dem letzten Patch ist das Thema noch einmal etwas kritischer geworden – wir berichteten hier.

4. Den Profiler mit Daten füttern

Gerade wenn es am Ende um Performance-Optimierungen geht, ist man als Entwickler sehr dankbar, wenn man möglichst genau einschränken kann, wo die Probleme auftreten. Der Profiler ist dabei ja wirklich einfach gestrickt, einfach nur Start und Stop mit einem eindeutigen Identifier aufrufen und schon ist man fertig. Also nur wenige Zeilen mehr für sehr viel Mehrwert!

Varien_Profiler::start('my_module_complex_action');
// ... Logik
Varien_Profiler::stop('my_module_complex_action');

An dieser Stelle möchte ich noch einmal den AOE-Profiler von Fabrizio empfehlen.

5. Caching korrekt implementieren

Viele Daten kann man in den Magento-Cache schieben. Gerade etwas komplexere Blöcke für das Frontend sollte man in den Magento-Cache packen. Das geht auch wirklich einfach:

  • entweder, man überschreibt die Funktion getCacheLifetime im eigenen Block
  • oder man setzt einfach den Wert cache_lifetime (setCacheLifetime) des Blocks (z.B. über Layout-XML)

Für andere Entitäten einfach mal mit Cache-Tags beschäftigen. Sehr einfach und in wenigen Minuten gelernt.

Magento 1.9 Admin: No region found within the locale ‘de’

Jul 16, 2015   //   von   //   Entwicklung, Magento  //  Keine Kommentare

Vor kurzem hatte ich ein sehr seltsames Verhalten in einem Magento-Shop mit Version 1.9:

  • Die Admin-Sprache wurde nach dem Login immer wieder auf Englisch gestellt
  • Ich konnte keine Veränderungen an den Locale-Einstellungen fürs Frontend machen (alles sprang immer wieder auf Afrikaans und eine ganz andere Zeitzone) – als Workaround habe ich die Einstellungen in der Website überschrieben, das ging komischerweise
  • Mit dem Firefox konnte ich keine Produkte bearbeiten, da ich immer wieder den Fehler “No region found within the locale ‘de'” bekam (liegt sicher an der übertragenen Locale, Firefox überträgt hier nicht “de_DE”, sondern nur “de”)

Lösung

Aus irgend einem Grund, hat sich in die Tabelle core_config_data ein seltsamer Eintrag eingeschlichen, welcher als Pfad einfach nur “general” hatte, und den Wert NULL. Macht insgesamt natürlich wenig Sinn und kann ohne Gefahr gelöscht werden. Und siehe da: Alle oben genannten Probleme waren mit einem Schlag gelöst!

Falls Ihr also Probleme mit den Locale-Einstellungen im Admin habt, kontrolliert einfach als erstes die Konfigurationstabelle. Kleines Problem, große Wirkung.

Zugriff verweigert: Die Folgen von SUPEE-6285 und ACLs

Jul 13, 2015   //   von   //   Entwicklung, Magento  //  5 Kommentare

Der letzte Magento-Patch SUPEE-6285 macht momentan die Runde. Nach der Installation im ersten Shop dann auch schon die Ernüchterung: Die Benutzer erhalten “Zugriff verweigert” statt die gewohnten Shop-Funktionalitäten.

Zugriff-Verweigert

 

Aber warum? Schuld ist die kleine aber feine Änderung in der Datei: app/code/core/Mage/Adminhtml/Controller/Action.php

Sprich: In der Klasse, von welcher jeder Admin-Controller erben sollte, welchen man so erstellt. Hier hat sich das Magento-Team entschlossen, nicht mehr einfach nur true zurück zu geben (was jedem Zugriff erlangt), sondern die Rechte entsprechend zu prüfen. Das ist so lange egal, wie man sich mit vollen Admin-Rechten durch den Shop bewegt. Hat man diese nicht mehr, machen sich schlampige Implementierungen der ACLs in den eigenen Modulen schnell durch die oben genannte Fehlermeldung bemerkbar. Weiterlesen >>

Documentation Driven Development in Magento?

Jul 3, 2015   //   von   //   Entwicklung, Magento  //  1 Kommentar

Ich gebe zu, der Titel ist ein bisschen reißerisch. Generell haben wir öfter das Problem dass wir gemeinsam am Projekt arbeiten, alles fleißig notieren und konzipieren und es dann umsetzen. Viel zu oft verschwinden die Konzepte dann im Papierkorb bzw. laufen immer weiter zum Entwicklungsstand auseinander. Will man wissen wie etwas noch mal ging tut man was? Genau, man ließt den Source. Da sich das ganze irgendwie umständlich anfühlt haben wir ein recht simples Magento Modul mit dem Namen Docview entwickelt. Eventuell löst es unser Problem?

Weiterlesen >>

Kunden wollen Lösungen statt Zeit!

Jun 13, 2015   //   von   //   Allgemein, Magento  //  Keine Kommentare

Die Carmen von Neoshops hat eben einen Blog-Post dazu geschrieben dass Sie häufiger mal Anfragen von Kunden bekommt die Sie nicht für das Suchen von fremden Fehlern bezahlen möchte. Der Kunde möchte eine Lösung. Die darf gerne 400 € kosten aber bitte die Lösung – nicht dass Suchen ohne klaren Erfolg. Eigentlich wollte ich Carmen auf Twitter antworten, aber dort war nicht genug Platz. Also, wir kommt man mit dem Kunden zusammen?

Weiterlesen >>

Magento2: An error has happened during application run.

Jun 13, 2015   //   von   //   Magento, Magento 2  //  Keine Kommentare

Wenn Magento2 einen liebevoll mit “An error has happened during application run. See exception log for details. Could not write error message to log. Please use developer mode to see the message.” begrüßt stimmt irgendwas nicht. Was tun?

Weiterlesen >>

Magento2: composer install + Setup erkennt PHP Version nicht

Jun 8, 2015   //   von   //   Magento 2  //  Keine Kommentare

Wenn das Setup in Magento2 die PHP Version und nur ein “Your PHP version is . The required PHP version is .” meldet liegt es vermutlich daran dass ihr Magento kein composer update gegönnt habt.
Weiterlesen >>

Composer: Vertraue keinen externen Abhängigkeiten

Jun 7, 2015   //   von   //   Magento, Magento 2  //  Keine Kommentare

In meinem letzten Blog-Post hatte ich bereits darüber berichtet dass ich eine Möglichkeit Suche die externen Abhängigkeiten selbst zu verwalten und nicht etwa darauf zu vertrauen dass Magento.com immer erreichbar ist, Github nicht einem DDOS ausgeliefert ist usw. Dank Satis ist das jedoch einfacher als gedacht.

Weiterlesen >>

Seiten:1234567...42»