11.01.2013
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...
03.01.2013
Nach einem Relaunch oder größeren Änderungen auf einer Seite sollte man in jedem Fall jegliche Caches leeren. Dazu gehört mittlerweile auch oft der Memcache, welcher mit den Magento Bordmitteln an Magento angebunden werden kann. Mit Bash-Zugriff lässt sich der Memcache, ähnlich wie der APC-Cache, sehr leicht leeren. telnet localhost 11211 flush_all...
28.12.2012
Der APC-Cache einer Seite sollte nach größeren Änderungen (zum Beispiel einem Magento Update, einer Design Änderung oder ähnlichem) umbedingt geleert werden. Das kann entweder direkt über die Bash erfolgen oder über ein kurzes PHP-Skript. Das Skript checkt zuerst ob die Funktion apc_clear_cache verfügbar ist. Falls die Funktion nicht verfügbar ist, wird ein Error ausgegeben. <? if (function_exists('apc_clear_cache')) { if (apc_clear_cache() && apc_clear_cache('user')) { echo 'Cache clear.'; } else { print 'Error'; } } ?> Das Skript sollte man entweder noch über einen GET-Parameter vor fremden Aufrufen schützen oder einen kryptischen Dateinamen verwenden. Am besten ist es allerdings, dass man die Datei erst gar nicht in einem öffentlich aufrufbarem Verzeichnis...
13.12.2012
Im Magento Backend gibt es die Möglichkeit für eigene Module auch einen Grid hinzuzufügen, welcher sich perfekt in das System eingliedert. Falls bei dem Grid dann allerdings die Paginierung nicht funktioniert, liest es oft an dem gleichen Problem: Die Collection wird in der setCollection Methode bereits via load() geladen. So sollte es aussehen: protected function _prepareCollection() { $collection = Mage::getModel('supplier/supplier')->getCollection()->addFieldToSelect('*'); $this->setCollection($collection); return parent::_prepareCollection(); } Fehlerhaft: protected function _prepareCollection() { $collection = Mage::getModel('supplier/supplier')->getCollection()->addFieldToSelect('*')->load(); $this->setCollection($collection); return parent::_prepareCollection(); }...
05.12.2012
Bei jedem SVN-Checkout wird in jedem, von SVN erfassten Ordner, ein .svn Ordner angelegt. Das ist praktisch, solange es sich um eine Entwicklungsumgebung handelt. Falls die Dateien allerdings weitergegeben werden sollen, sind die .svn Ordner meistens eher störend. Im Browser selbst sieht man die .svn Ordner meistens nicht, da diese versteckte Ordner sind. Falls eine weitere SVN Synchronisierung der Dateien nicht mehr erforderlich ist, kann man mit folgendem Befehl die kompletten .svn Ordner und Unterordner des aktuellen Verzeichnisses löschen lassen: find . -type d -name .svn -exec rm -Rf {} \; Zur Erklärung find . sucht rekursiv nach allen Ordnern und Dateien aus dem Ordner des Aufrufs absteigend. Mithilfe des Parameters -type d werden von find nur Ordner zurückgeliefert. Durch die Übergabe des Parameters -name .svn filtert find auch alle Ordner, welche nicht den Namen .svn besitzen raus. Hier könnte man stattdessen auch *jpg eingeben, um alle Bilder rekursiv zu löschen (Achtung: Dann muss der Type Filter natürlich -type f lauten). Zu guter Letzt wird der -exec Parameter mit dem Löschbefehl...
30.11.2012
Heute bin ich mit einem nahezu neuen SVN-Server beim commit auf folgendes Problem gestossen: svn: Commit failed (details follow): svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found Das Problem besagt, dass die Variable für den SVN-Editor nicht gesetzt ist und SVN daher nicht weiß, mit welchem Texteditor der commit log geöffnet werden soll. Mit folgendem Befehl kann man sich die zu commitenden Dateien dann doch anschauen: export SVN_EDITOR=vim...
07.11.2012
Plötzlich ist der Magento Online Shop nicht mehr erreichbar und es wird einem nur noch die Fehlermeldung angezeigt? Der Fehler ist, im Vergleich zu vielen anderen Magento Fehlern, sehr aussagekräftig: durch den MySQL Servers wurde dem Shop der Schreibvorgang verwehrt. Bei vielen Webhostern liegt das daran, dass die Größe der MySQL Datenbanken gedeckelt ist. Bei 1&1 zum Beispiel (in diesem konkreten Paket) auf 100MB. Durch die Log-Tabellen, die Magento befüllt, sind diese 100MB schnell aufgebraucht. Am besten sichert man daher die entscheidenden Tabellen zuvor und leert dann die Tabellen. Hierzu benutzt man folgendes MySQL Query:...
27.06.2012
Es gibt viele Situationen, wo der Magneto Cache geleert werden muss. Ein gutes Beispiel ist vor oder nach dem Einspielen von Produktdaten in Magento. Durch das leeren des Caches vor dem Import kann man teilweise deutlich höhere Durchsatzraten erzielen. Aber auch nach dem Import macht es Sinn, den HTML-Cache zu leeren. Man kann den Magento Cache sowohl per PHP als auch per FTP / Shell leeren. Magento Cache per PHP leeren Um gleich nach dem Import Vorgang den Cache zu leeren, kann man folgenden Code verwenden. Natürlich kann man per php auch den Image Cache leeren. Dadurch werden alle Thumbnails der Produktbilder gelöscht und beim ersten Aufruf neu erstellt. Wenn man beispielsweise Bilder per FTP austauscht, können so die neuen Thumbnails generiert werden. Magento Cache per FTP oder Shell leeren Den Magento Cache per FTP oder Shell zu leeren klappt nicht bei jeder Magento Installation. Durch den modularen Aufbau von Magento kann der Filecache leicht durch einen Redis oder Memcache Cache ersetzt werden. Falls der Magento Filecache benutzt wird, funktioniert allerdings auch das löschen des Magento Caches per FTP oder Shell einwandfrei. Hierzu wechselt man in das Verzeichnis var/cache/ und löscht alle Unterordner inklusive der jeweiligen Inhalte. In der Linux Shell funktioniert es noch etwas schneller. Einfach im Magento Hauptverzeichnis folgenden Befehl...
27.06.2012
Um einen Couponcode nachträglich von einer Bestellung zu entfernen, kann man folgendes MySQL Query ausführen: Hierbei muss nur noch die entity_id in der WHERE Bedingung auf die jeweilige OrderId angepasst...
10.05.2012
Während der Entwicklung eines Magento Shops werden zwangsläufig einige Testbestellungen gemacht. Damit der Shop bei der Übergabe aber nicht bereits Bestellungen vorweist, sollte man davor die Bestellungen entfernen und die Auto Increment Ids auf 1 setzen. Das geht bei Magento 1.5 nur mit SQL Queries und nicht durch das Löschen der Kunden im Backend. Mit dem unten angehängten SQL Query werden die Kunden und Bestellungen aus einem Magento 1.5.x Shop entfernt und die auto_increment Ids wieder auf 1 gesetzt....