Magento Tips & Tricks
-
store.itabs.de – eigener Online-Shop für Magento Extensions geht online
9 Tagen ago by Alexander Steireif
Ab sofort können alle die von der ITABS GmbH entwickelten Magento Extensions in unserem Extension-Store unter http://store.itabs.de bezogen werden. Damit bildet http://store.itabs.de eine Alternative zu Magento Connect, da wir in unserem eigenen Store schneller und einfacher Module und Erweiterungen veröffentlichen und aktualisieren können. Neben kommerziellen Erweiterungen wie beispielsweise magescription sind darüber hinaus verschiedene kostenlose Magento Extensions vorhanden.
Im Laufe der nächsten Wochen wird dabei das Angebot an Magento Erweiterungen kontinuierlich ausgebaut, sowohl im kommerziellen wie auch im kostenlosen Bereich.
-
Magento, PayPal und der mobile Checkout mit Smartphones
17 Tagen ago by Alexander Steireif
PayPal gehört schon seit längerer Zeit zu den etablierten Zahlarten im E-Commerce, aus diesem Grund muss man sich sicherlich die Frage nach dem Sinn oder Unsinn einer PayPal Integration nicht mehr stellen, auch wenn es sicherlich vereinzelt Branchen und Zielgruppen gibt, bei denen PayPal auf eine gewisse Ablehnung stößt. In vielen Fällen ist aber PayPal eine hervorragende Möglichkeit, die Conversions zu erhöhen und bei akzeptablen Gebühren profitiert auch der Shop-Betreiber, wenn er diese Payment-Methode mit ins Programm aufnimmt.
Auch wenn Magento mittlerweile zum selben Konzern wie PayPal gehört, nämlich eBay, ist die Integration in manchen Stellen doch ein wenig holprig. In diesem konkreten Fall geht es darum, wie man den mobilen Checkout in seinem Magento-Shop “aktivieren” kann, da es von Haus aus doch ein paar Hürden gibt. Beginnen wir aber einfach mit einer Schritt für Schritt Integration innerhalb von Magento.
PayPal konfigurieren und aktivieren
Ich beziehe mich auf die aktuellste Version von Magento, sprich die 1.7.0.2. In älteren Versionen ist das Handling ein wenig anders, das Prinzip ist aber über die Versionen hinweg das selbe geblieben. Um PayPal zu konfigurieren, muss man den Menüpunkt System -> Konfiguration -> Zahlungsarten öffnen. Dort gibt es anschließend den Oberpunkt “PayPal Payment Solutions” und hier muss man nun bei “Website Payment Standard” auf configure klicken.
Hier reicht es nun aus die E-Mail Adresse des PayPal Accounts zu hinterlegen und bei Enable the Solution die Auswahl. ja zu stellen. Anschließend kann bei Magento im Checkout als Zahlungsweise ebenfalls PayPal ausgewählt werden und alles weitere funktioniert “out of the box”.
Und was ist mit Smartphones?
Interessant wird es nun, wenn man mit einem Smartphone durch den Checkout springt. Mobile ist ein immer wichtigeres Thema und als Shop-Betreiber sollte man neben einer mobil optimierten Magento Version auch einen mobilen Checkout anbieten um die Quote der Kaufabbrüche zu senken. Grundsätzlich ist die “Desktop-Variante” von PayPal alles andere als “Smartphone tauglich”, auch wenn technisch betrachtet alles problemlos funktioniert, die Usability lässt aber zu wünschen übrig.
PayPal bietet einen mobilen Checkout an, im Gegensatz zu den vom Support getätigten Aussagen benötigt man hierfür auch nicht die PayPal Express Version. PayPal prüft beim Aufruf der Payment-Seite den Gerätetyp und leitet anschließend auf das richtige Endgerät weiter. Nur scheint dies bei Magento von Haus aus direkt nicht zu funktionieren. Die Ursache liegt in der Übermittlung der Informationen. Wenn in Magento eine Bestellung per PayPal getätigt wird, landet man anschließend auf einer “Redirect Seite” die Informationen beinhaltet und an PayPal “übermittelt.
Innerhalb dieser Weiterleitungsseite werden in Form eines Formulars mit Hidden-Fields Werte gesammelt und an PayPal übergeben, was dann wie folgt aussieht:
<form action=”https://www.paypal.com/webscr” id=”paypal_standard_checkout” name=”paypal_standard_checkout” method=”POST”><div><input name=”form_key” type=”hidden” value=”XXX” /></div><input id=”business” name=”business” value=”papypal@example.com” type=”hidden”/>
<input id=”invoice” name=”invoice” value=”YYY” type=”hidden”/>
<input id=”currency_code” name=”currency_code” value=”EUR” type=”hidden”/>
<input id=”paymentaction” name=”paymentaction” value=”sale” type=”hidden”/>
<input id=”return” name=”return” value=”http://www.example.compaypal/standard/success/” type=”hidden”/>
<input id=”cancel_return” name=”cancel_return” value=”http://www.example.compaypal/standard/cancel/” type=”hidden”/>
<input id=”notify_url” name=”notify_url” value=”http://www.example.compaypal/ipn/” type=”hidden”/>
<input id=”bn” name=”bn” value=”Varien_Cart_WPS_CH” type=”hidden”/>
<input id=”cpp_header_image” name=”cpp_header_image” value=”http://www.example.com/media/example/logo.jpg” type=”hidden”/>
<input id=”item_name” name=”item_name” value=”ABCDEFG” type=”hidden”/>
<input id=”lc” name=”lc” value=”de_DE” type=”hidden”/>
<input id=”charset” name=”charset” value=”utf-8″ type=”hidden”/>
<input id=”amount” name=”amount” value=”22.33″ type=”hidden”/>
<input id=”tax” name=”tax” value=”9.47″ type=”hidden”/>
<input id=”shipping” name=”shipping” value=”0.00″ type=”hidden”/>
<input id=”discount_amount” name=”discount_amount” value=”0.00″ type=”hidden”/>
<input id=”cmd” name=”cmd” value=”_ext-enter” type=”hidden”/>
<input id=”redirect_cmd” name=”redirect_cmd” value=”_xclick” type=”hidden”/>
<input id=”city” name=”city” value=”asdasd” type=”hidden”/>
<input id=”country” name=”country” value=”DE” type=”hidden”/>
<input id=”email” name=”email” value=”customer@example.com” type=”hidden”/>
<input id=”first_name” name=”first_name” value=”Vorname” type=”hidden”/>
<input id=”last_name” name=”last_name” value=”Nachname” type=”hidden”/>
<input id=”zip” name=”zip” value=”123456″ type=”hidden”/>
<input id=”state” name=”state” value=”RR” type=”hidden”/>
<input id=”address1″ name=”address1″ value=”asdsada” type=”hidden”/>
<input id=”address2″ name=”address2″ value=”a” type=”hidden”/>
<input id=”address_override” name=”address_override” value=”1″ type=”hidden”/>
</form>
Sprich, Magento übergibt eine Menge an Informationen wie Preis, Produkt, Adresse des Kunden etc. Der Knackpunkt liegt nun darin, dass der mobile Checkout von PayPal im Gegensatz zur “Desktop-Variante” nicht alle Informationen auch tatsächlich verarbeiten kann. Sendet man Werte mit denen der mobile Checkout nichts anfängt, leitet PayPal automatisch zur “Desktop-Variante” weiter. Und dies ist der Effekt, den man standardmäßig in Magento hat. Konkret geht es dabei um folgende Zeile:
<input id=”discount_amount” name=”discount_amount” value=”0.00″ type=”hidden”/>
Der mobile PayPal Bezahlvorgang ist nicht in der Lage diese zu verarbeiten, weswegen man als Kunde mit seinem Smartphone immer auf der klassischen Variante von PayPal landet. Entfernt man diese Zeile, klappt der Vorgang mit einem Smartphone wunderbar und PayPal leitet auf die Smartphone Variante weiter. Für was ist aber nun dieser Wert verantwortlich? Definiert man als Shop-Betreiber Warenkorb-Preisregeln (Gutscheine, Rabatte im Warenkorb etc.) ist dies ein Discount, sprich ein Rabatt. Dieser kann explizit an PayPal übermittelt werden, wodurch man auf der PayPal Seite dann den Rabatt angezeigt bekommt. Tut man dies nicht, sieht man auf der PayPal Seite auch keinen Rabatt. Dies ist meiner Meinung nach nicht ganz so tragisch, da ja die Endsumme, d.h. die Summe die der Kunde bezahlen wird, soweit korrekt übermittelt wird.
Was muss ich ändern?
Ohne an dieser Stelle zu Tief in die Entwickler-Sicht zu springen: Unter app/code/core/Mage/PayPal/Block/Standard/ gibt es die Datei Redirect.php die letztendlich alle Informationen sammelt, das Formular samt den Hidden Fields generiert und zurück liefert. An dieser Stelle kann man nun ansetzen und den discount_amount gar nicht erst ausgeben. Da jedoch auf der Desktop-Variante diese Information kein Problem darstellt, ist es meiner Meinung nach sinnvoll zu differenzieren ob ein Smartphone einkauft oder nicht. Je nach Projekt-Setup kann dies anhand vom Store bzw. StoreView geschehen, oder durch eine direkte Prüfung des Endgeräts.
Was ist die Alternative?
Alternativ hierzu kann man auch PayPal Express verwenden, in diesem Fall treten die oben beschriebenen Probleme nicht auf und man hat letztendlich gar keinen Customizing-Aufwand. Nachteilig hierbei ist letztendlich nur, dass der Bezahlprozess anders aufgebaut ist im Vergleich zu PayPal Standard. Das kann, muss aber kein Nachteil sein.
-
Magento Kategorie URLs pro StoreView
43 Tagen ago by Alexander Steireif
Betreibt man innerhalb von Magento mehrere Stores bzw. StoreViews, kann man grundsätzlich fast jede Information auf StoreView Ebene abändern. Legt man beispielsweise Kategorien an, kann man jeder Kategorie auf StoreView Ebene einen anderen Namen oder Beschreibung zuweisen. Das ist sofern auch logisch und notwendig, da man die StoreViews in der Regel für unterschiedliche Sprachen nutzt und dadurch sollte sich auch zwangsläufig der Name und die Beschreibung ändern.
Würde man jetzt, bezogen auf den Screenshot, bei dem Namen hinten den Haken bei “Verwende Standardwert” entfernen, so könnte man innerhalb dieses StoreViews den Wert “Neue Artikel” überschreiben und beispielsweise den Namen “New Products” hinterlegen. So praktisch diese Funktionalität auch ist, bei dem URL Key geht es von Haus aus nicht, dass man pro StoreView einen eigenen Wert führt, weswegen bei der Eingabemaske hinten die Kennzeichnung Global steht.
Wenn man aber je nach StoreView unterschiedliche URLs bzw. URL Keys benötigt, kann man diese “Funktion” ganz einfach über eine Änderung in der Datenbank freischalten. Hierfür muss man sich mit einem Programm seiner Wahl, z.B. phpMyAdmin oder Sequel Pro, auf die Magento Datenbank verbinden, anschließend die Tabelle eav_attribute öffnen und in der Spalte attribute_code nach url_key suchen. Das passende SQL Statement hierfür lautet SELECT * FROM eav_attribute WHERE attribute_code LIKE ‘%url_key%’;
Nachdem man das SQL Statement ausgeführt hat, erhält man zwei Einträge. Einmal für Kategorien und einmal für Produkte. An diesem Punkt muss man sich nun die attribute_id des passenden Datensatzes, nämlich der Datensatz der für die Kategorien verantwortlich ist, notieren. In unserem Beispiel handelt es sich um den ersten Datensatz mit der ID 33.
Im nächsten Schritt öffnet man die Tabelle catalog_eav_attribute und sucht hier nach dem Datensatz mit der attribute_id, die wir uns gerade gerade notiert haben. Bei dem Datensatz gibt es nun die Spalte is_global, steht hier der Wert auf 1 handelt es sich um einen globalen Wert, steht der Wert auf 0 handelt es sich um einen StoreView spezifischen Wert. Sprich man muss den Wert einfach auf 0 setzen und schon kann man für jeden StoreView einen eigenen URL Key hinterlegen was vor allem aus Gründen der Suchmaschinenoptimierung eine enorm interessante Möglichkeit ist.
-
Einheitliche Nummernkreisläufe für Bestellungen, Rechnungen, Lieferscheine und Gutschriften im Magento-Multi-Store Setup
43 Tagen ago by Alexander Steireif
Der äußerst lange Titel bringt das Problem recht gut auf den Punkt. Angenommen man betreibt einen Magento-Shop mit mehreren Stores bzw. StoreViews, dann hat man von Haus aus einen separaten Nummernkreislauf für jeden Store. Bestellt ein Kunde beispielsweise etwas über Store A, so wird die Bestellnummer 10000001 erzeugt. Tätigt ein anderer Kunde innerhalb von Store B eine Bestellung, erhält dieser die Bestellnummer 20000001. Das selbe Spielchen gilt natürlich auch für Rechnungen, Lieferscheine und Gutschriften.
Grundsätzlich ist dieses Verhalten in vielen Fällen gewünscht, speziell um die jeweiliges Stores leichter zu unterscheiden. Wenn man aber einheitliche Nummernkreisläufe haben möchte, kann dies Magento auch leisten. Beim oberen Beispiel würde dies also bedeuten, dass Magento nicht die Bestellnummer 20000001 erzeugt, sondern die Bestellnummer 10000002.
Möchte man diesen Effekt haben, muss man direkt Einträge in der Datenbank ändern, innerhalb des Backends wird man hierfür keine entsprechende Konfigurationsoption finden. Die Änderung über die Datenbank ist aber relativ einfach. Im ersten Schritt muss man sich mit einem beliebigen Programm auf die Datenbank von Magento verbinden z.B. phpMyAdmin oder für die Mac User unter uns Sequel Pro.
Anschließend öffnet man die Tabelle eav_entity_type deren Inhalt wie folgt aussehen sollte
Innerhalb dieser Tabelle gibt es nun insgesamt 4 Datensätze die in der Spalte increment_per_store eine 1 stehen haben, sprich bei diesen Datentypen wird die Nummer für jeden Store einzeln betrachtet. Es handelt sich dabei um die order (Bestellung), invoice (Rechnung), shipment (Lieferschein) sowie creditmemo (Gutschrift)
Wir können das Verhalten, dass jeder Store seinen eigenen Nummernkreislauf besitzt, unterbinden in dem man bei dem jeweiligen Datensatz den increment_per_store Wert auf 0 setzt (Standardmäßig ist hier eine 1 hinterlegt). Sprich möchte man fortlaufende Bestellnummern haben, aber unterschiedliche Rechnungs-, Lieferschein- und Gutschriftnummernkreise, setzt man nur bei dem Datensatz order den Wert incerement_per_store auf 0.
Hat man diese Einstellung entsprechend vorgenommen, sollte man noch einen Blick in die Tabelle eav_entity_store werfen. Innerhalb dieser Tabelle ist für jeden Store der jeweils Rechnungsnummer, Bestellnummer, Lieferscheinnummer sowie Gutschriftnummer hinterlegt. Magento wird nun, wenn Sie die Änderungen in der Tabelle eav_entity_type durchgeführt haben, neue Einträge in der Tabelle eav_entity_store anlegen, wodurch man zuerst wieder bei einer Nummer wie 1000001 startet, da Magento von einem neuen Nummernkreislauf ausgeht.
Im oberen Screenshot sieht man die letzten Nummern für Rechnungen, Lieferscheine, Gutschriften und Bestellungen. Jede Nummer ist einem Typ zugewiesen (Rechnung, Bestellung etc.) und einem Store. entity_type_id = 11 bedeutet beispielsweise, dass es sich um eine Bestellung handelt, Store = 2 bezieht sich auf den Store mit der Nummer 2 und die letzte ID = 200007160 bedeutet, dass die nächste Bestellung die Nummer 200007161 bekommen würde. Durch die Vereinheitlichung der Nummernkreisläufe muss man daher an dieser Stelle gegebenenfalls nochmals nachbessern, damit man einen fortlaufenden Nummernkreislauf hat, was gerade bei Rechnungen zu empfehlen wäre.
-
Magento VM in Version 2.5.0 veröffentlicht
155 Tagen ago by Alexander Steireif
Ab sofort steht die Magento VM (virtuelle Maschine) in der Version 2.5.0 zum Download bereit. Neben ein paar Updates für das Betriebssystem wurde darüber hinaus Magento in der aktuellsten Version installiert. Wie gewohnt steht eine Variante mit Beispieldateien (Sample Data) und eine Variante ohne Beispieldateien zur Verfügung. Weitere Informationen zur Magento VM inkl. Installationsanleitung findet man unter http://www.magento-vm.de
-
Magento Benachrichtigungen im Backend deaktivieren
160 Tagen ago by Alexander Steireif
Magento verfügt von Haus aus über ein sehr nützliches Feature, welches oftmals aber als störend bzw. nervend empfunden wird. Es handelt sich dabei um die so genannten Backend Benachrichtigungen. Jedes Mal, wenn man sich im Backend anmeldet, prüft Magento, ob aktuelle Nachrichten vorliegen und blendet diese gegebenenfalls ein. Da es sich dabei um ein Overlay handelt, wodurch die restliche Seite ausgeblendet wird, werden diese Nachrichten bzw. Meldungen von vielen Shop-Betreiber als störend bzw. nutzlos empfunden.
Mich persönlich “nerven” diese Meldungen auch, der Grundgedanke ist aber folgender. Sobald ein neues (Sicherheits)Update bzw. eine neue Version von Magento veröffentlicht wird, ist diese Nachricht im Backend vorhanden und wird angezeigt. Sprich der “normale” Magento Shop-Betreiber wird auf dem Laufenden gehalten, was Sicherheitsprobleme bzw. neue Versionen angeht. Holt man sich diese Informationen sowieso aus Blogs bzw. von magentocommerce.com, sind diese Nachrichten innerhalb des Backends daher eher überflüssig und störend, ist man aber nicht täglich auf Websites rund um Magento unterwegs, liefern diese Backend Benachrichtigungen wichtige Informationen.
Dennoch kann man die Benachrichtigungen grundsätzlich deaktivieren, so dass Magento kein Overlay einblendet. Hierfür geht man nach System -> Konfiguration -> Erweitert und deaktiviert das Modul Mage_AdminNotification
Anschließend wird Magento den Benutzer nach dem Login nicht mehr mit der aktuellsten Nachricht begrüßen.
-
Magento und Gutscheine
439 Tagen ago by Alexander Steireif
Magento hat, wie jedes andere E-Commerce System auch, Stärken und Schwächen. Was man meiner Meinung nach sicherlich zu den Stärken zählen sollte, ist die ausgeprägte “Preisregel-Funktionalität”. Dabei geht es nicht nur darum, dass man von Haus aus eine Vielzahl an Möglichkeiten hat. Interessant ist vor allem, dass man auch als Magento Neuling keine Schwierigkeiten damit hat, Preisregeln anzulegen bzw. zu editieren. Das Thema Preisregeln ist aber in Magento ein Kapitel für sich, konkret geht es im Folgenden Beitrag um Gutscheincodes. Da wir relativ häufig hierzu gefragt werden, wird an dieser Stelle ausführlich auf die Funktionalität von Gutscheincodes eingegangen.
Ist man im Administrationsbereich von Magento angemeldet, findet man alle relevanten Punkte im Bezug auf die Preisregeln unter dem Punkt Promo. Magento unterscheidet anschließend zwischen Warenkorb Preisregeln und Katalog Preisregeln. Bei den Katalog Preisregeln kann man, vereinfacht gesagt, Rabatte auf Produkte mit einem bestimmten Merkmal (Attribut) geben. Hierfür stehen einem auch die eigenen Attribute zur Verfügung. Warenkorb Preisregeln beziehen sich hingegen nicht (nur) auf Artikel mit bestimmten Merkmalen, sondern auf den Inhalt des Warenkorbs an sich, aber auch auf die Zahlungsart, Versandart etc. Man könnte also sagen, dass einem alle Informationen aus dem Magento Checkout Prozess zur Verfügung stehen.
Neben diesen Möglichkeiten erlauben einem die Warenkorb-Preisregeln aber auch das Anlegen von “einfachen” Gutscheincodes.
Angenommen man möchte einen Gutscheincode über 25€ mit einem Mindestbestellwert von 50€ anlegen, der insgesamt 100 Mal zur Verfügung steht, aber pro Benutzer nur 1 Mal eingelöst werden darf, geht man wie folgt vor:
Zuerst öffnet man im Punkt Promo die Warenkorb Preisregeln und erstellt über den Button Neue Regel eine Magento Warenkorb Preisregel. Daraufhin landet man auf folgender Eingabemaske:
Bei dem Regelnamen kann man einen beliebigen Namen hinterlegen, in diesem Fall “25€ Gutschein”. Bei der Beschreibung kann man noch einen Text hinterlegen, man muss es aber nicht. Den Status der Regel sollte man, außer die Regel soll nicht verfügbar sein, auf aktiv setzen. Verwaltet man innerhalb einer Magento Instanz mehrere Websites (Stichwort Magento Multi-Store Fähigkeit) könnte man noch eine Einschränkung vornehmen, beispielsweise dass der Gutschein für Website A und B gilt, aber nicht für Website C. Auch kann man auf Basis der Kundengruppen eine Eingrenzung vornehmen. Hierfür muss man aber auch die Kundengruppen entsprechend pflegen, was oftmals jedoch nicht der Fall ist. Für die Erstellung des Gutscheincodes ist die nächste Option namens Rabatt relevant. Der Hintergrund ist, dass man die 25€ Rabatt theoretisch auch ohne Code gewähren kann. In diesem Fall würde Magento automatisch prüfen, ob die Bedingungen erfüllt sind (50€ Mindestbestellwert) und den Rabatt automatisch abziehen. Wenn man aber auf Gutscheincode Basis arbeiten möchte, muss man bei Rabatt den Listeneintrag Nur mit angegebenem Rabattcode auswählen.
Anschließend kann man einen Rabattcode sowie die Verfügbarkeit definieren. Bei der Verfügbarkeit unterscheidet Magento nach der Verwendung pro Rabattcode und der Verwendung pro Kunde. D.h. man kann einen Gutscheincode insgesamt 100 Mal einlösen, aber jeder Kunde darf dies nur 1 Mal tun. Im konkreten Beispiel von weiter oben würde das bedeuten, dass bei der Verwendung pro Rabattcode die Zahl 100 und bei der Verwendung pro Kunde die Zahl 1 eingetragen wird. Als Rabattcode wird 25eurovielendank hinterlegt.
Nach diesen Einstellungen kann man ebenso einen Zeitraum für den Gutschein, sowie eine Priorität hinterlegen. Der Zeitraum ist selbsterklärend (Von wann bis wann zählt der Gutschein), interessant ist die Priorität. Die Priorität spielt bei Magento eine Rolle, wenn man mehrere Preisregeln angelegt hat. Damit sich der Rabatt nicht ins Unendliche aufbaut, kann man bei jeder Preisregel die Anwendung weitere Preisregeln verbieten, wobei die Preisregeln mit der niedrigsten Priorität zuerst ausgeführt werden.
Im nächsten Schritt muss man nun auf der linken Seite in das Tab Bedingungen springen. Bei den Bedingungen hat man recht viele Möglichkeiten, wie weiter oben bereits erwähnt kann man auch die Versandart oder Zahlart als Bedingung auswählen. Für dieses Beispiel reicht aber der Warenkorbwert, der 50€ oder mehr betragen muss. Hierfür wählt man die Zwischensumme sowie den Operator größer gleich als.
Dank dieser Bedingung weiß nun Magento, ob ich als Kunde den Gutschein überhaupt einlösen darf, oder auch nicht. Würde ich beispielsweise etwas für 20€ kaufen, würde Magento einen Fehler ausgeben. Neben der Bedingung benötigt man aber auch noch eine Aktion, d.h. wenn alle Bedingungen erfüllt sind, muss Magento “irgendetwas” machen. Die Aktionen kann man im gleichnamigen Tab definieren.
Um es an dieser Stelle nicht komplizierter zu machen, als es eigentlich ist, in diesem Beispiel reicht die Listenauswahl Fester Betrag für gesamten Warenkorb (Man könnte theoretisch auch einen Rabatt pro Artikel geben), sowie den Rabattbetrag von 25, d.h. 25€. Die weiteren Einstellungsmöglichkeiten sind hier nicht so relevant, man kann letztendlich noch definieren ob der Versand auch rabattiert werden darf, ob weitere Regeln angewendet werden dürfen, aber auch die Eingrenzung auf Artikelebene wäre hier möglich.
Sind aber die oben aufgeführten Einstellungen entsprechend vorgenommen, kann die Regel gespeichert werden. Nach dem Speichern der Regel ist die Warenkorb Preisregel angelegt und der Gutscheincode steht den Benutzern zur Verfügung. Einfach, oder
?
-
Magento Admin Benutzer Kennwort zurücksetzen
442 Tagen ago by Alexander Steireif
Im Eifer des Gefechts kann man schon einmal das Admin Benutzer Kennwort für das Magento Backend vergessen, doch was dann?
Es gibt zwei verschiedene Möglichkeiten, um das Passwort neu zu setzen, die im Folgenden kurz vorgestellt werden. Was grundsätzlich aber nicht möglich ist, ist das Anzeigen des aktuellen Passworts. Da Magento alle Kennwörter verschlüsselst in der Datenbank speichert, kann man Passwörter in Magento nicht erneut auslesen, sondern nur neu setzen bzw. anfordern.
1. Magento Passwort über das Backend zurücksetzen
Der einfachste und schnellste Weg um an ein neues Passwort zu kommen ist bei Magento das Backend. Man öffnet die URL des Magento Administrationsbereichs und kann anschließend auf den Link Passwort vergessen klicken.
Anschließend kann man die E-Mail Adresse des Admin Benutzers angeben und man bekommt die restlichen Informationen per E-Mail gesendet. In den vorherigen Versionen von Magento hat man dabei das Passwort direkt per E-Mail enthalten, da dies aber ein potentielles Sicherheitsrisiko ist, hat sich Magento dazu entschlossen einen Bestätigungslink zu versenden, mit dessen Hilfe man das Kennwort neu setzen kann. Befolgt man aber die Informationen in den Magento Transaktions E-Mails, hat man innerhalb von 2-3 Minuten das Passwort neu vergeben.
2. Magento Passwort über die Datenbank zurücksetzen
Eine Alternative zu der oben beschriebenen Vorgehensweise bietet die Datenbank. Dies ist beispielsweise dann sinnvoll, wenn Sie keinen Zugriff auf die im System hinterlegte E-Mail Adresse haben, aber zeitnah Änderungen vornehmen müssen. Im ersten Schritt müssen Sie sich mit der Datenbank verbinden, welches Tool Sie hierfür verwenden bleibt Ihnen überlassen. Die meisten Magento Webhoster stellen das Programm phpMyAdmin zur Verfügen, wie erwähnt können aber auch Alternativen wie Sequel Pro oder Navicat verwendet werden.
Ist man mit der Magento Datenbank verbunden, muss man in die Tabelle admin_user
Hier editiert man nun den Datensatz mit dem gewünschten Benutzer. Bei der Zeile Passwort wählt man anschließend MD5 und tippt sein neues Kennwort für das Magento Backend ein
Speichert man anschließend die Einstellungen, kann man sich ab sofort mit seinem neuen Passwort anmelden.
-
Magento und eigene Variablen
444 Tagen ago by Alexander Steireif
Magento verfügt von Haus aus über eine, vor allem für Administratoren und Backend-User, interessante Funktionalität, die in der Regel so gut wie nie genutzt wird. Es handelt sich dabei um die Variablen bzw. eigene Variablen. Doch wofür benötigt man in Magento eigene Variablen?
Als Beispiel dient im Folgenden eine CMS-Seite. Editiert oder erstellt man in Magento eine CMS Seite (CMS -> Seiten verwalten), kann man mit Hilfe eines WYSIWYG Editors Texte eingeben und formatieren. In der Maske mit den möglichen Formatierungsmöglichkeiten kann man aber nicht nur Texte oder Sätze optisch anpassen, sondern auch Variablen einfügen. Hierfür klickt man einfach auf den ersten Button wie im folgenden Beispiel:
Anschließend erhält man von Magento eine Auflistung mit zur Verfügung stehenden Variablen:
Magento unterscheidet hierbei zwischen von Haus aus verfügbaren Variablen und eigenen Variablen. Von Haus aus verfügbar bedeutet konkret, dass gewisse Konfigurationseinstellungen ausgelesen und angezeigt werden können. Hierzu zählt beispielsweise die URL der Seite, die Kontaktinformationen etc. Klickt man anschließend auf eine Variable fügt Magento diese automatisch in den Textbereich des Magento WYSIWYG Editors ein. Der Name der Seite wird dabei wie folgt ausgelesen:
{{config path=”general/store_information/name”}}
Nun kann es aber natürlich vorkommen, dass man selbst Variablen definieren und speichern möchte. Hierfür gibt es unter System -> Eigene Variablen einen speziellen Bereich. Dort kann man eine neue Variable eintragen und unter anderem einen Code (wird nur intern benötigt), einen Namen und einen Inhalt hinterlegen. Hier kann man beispielsweise eine neue Variable a la Öffnungszeiten mit dem Inhalt “Mo – Fr zwischen 9 und 18 Uhr” hinterlegen. Nachdem man die eigene Variable gespeichert, kann man diese, z.B. in einer CMS-Seite, nach dem selben Schema wie bereits weiter oben aufgeführt, integrieren.
Sind eigene Variablen verfügbar, zeigt diese Magento gesondert an (wie im Screenshot zu sehen). Hat man sich aber den Code gemerkt, könnte man eine Variable auch direkt in eine CMS-Seite einfügen:
{{customVar code=test}}
Speichert man anschließend die CMS-Seite, ließt Magento den Inhalt der Variable entsprechend aus und stellt diesen dar, in diesem Beispiel würde auf der CMS-Seite die Information “Mo – Fr zwischen 9 und 18 Uhr” erscheinen.
Wozu man Variablen bzw. eigene Variablen benötigt? Oftmals kann es in einem Magento-Shop vorkommen, dass man eine Information auf vielen verschiedenen Seiten anzeigen muss. Wenn sich jedoch dann etwas an dieser Information ändert, müsste man es im klassischen Fall X Mal an jeder Stelle wo der Texte, die Grafik etc. vorkommt eine Änderung vornehmen. Variablen helfen also dabei an einer zentralen Stelle wichtige Informationen zu pflegen, die mehrmals verwendet werden. Hierfür eignen sich vor allem Ansprechpartner, Firmenbezeichnungen, Telefonnummer bzw. Kontaktadressen. Denn sollten Grafiken, oder ganze Texte (Beispielsweise AGBs) auf verschiedenen Seiten auftauchen, sind in der Regel statische Blöcke die bessere Wahl.
-
Magento und Firebug: Probleme mit console.log
496 Tagen ago by Rouven Alexander Rieker
Heute morgen war es soweit: Nach einem der vielen Firefox und Firebug-Updates funktionierte bei mir auf einmal die geliebte Funktion console.log für die JavaScript-Entwicklung nicht mehr. Das Problem liegt darin, dass die Entwickler von Magento eine blankes Console Object integrieren, falls es einmal keine Console definiert wurde. Prinzipiell ist das ja eine gute Idee, jedoch ist bei mir die abgeprüfte Funktion “firebug” leider nicht mehr im Console Object vorhanden (Firefox 9.0.1 und Firebug 1.9.0).
Um die korrekte Funktionalität wiederherzustellen, muss man einfach in die Datei js/varien/js.js gehen und folgende Zeile
if (!(“console” in window) || !(“firebug” in console))
durch folgende Ersetzen
if (!(“console” in window) || typeof console !== ‘object’)
Anschließend sollte das Logging in der Console wieder einwandfrei funktionieren.
Eine andere Möglichkeit das Problem zu beheben, beschreibt Alan Storm anhand eines Code-Beispiels (Integration eines Magento-Block und Hinzufügen der abgeprüften Funktion “firebug” zu dem Console Object) hier: https://gist.github.com/992233
Netter Nebeneffekt von den Lösungen ist, dass die Console-Funktionen nun auch einwandfrei in Google Chrome funktionieren.
store.itabs.de – eigener Online-Shop für Magento Extensions geht online
9 Tagen ago by Alexander Steireif
Ab sofort können alle die von der ITABS GmbH entwickelten Magento Extensions in unserem Extension-Store unter http://store.itabs.de bezogen werden. Damit bildet http://store.itabs.de eine Alternative zu Magento Connect, da wir in unserem eigenen Store schneller und einfacher Module und Erweiterungen veröffentlichen und aktualisieren können. Neben kommerziellen Erweiterungen wie beispielsweise magescription sind darüber hinaus verschiedene kostenlose Magento Extensions vorhanden.
Im Laufe der nächsten Wochen wird dabei das Angebot an Magento Erweiterungen kontinuierlich ausgebaut, sowohl im kommerziellen wie auch im kostenlosen Bereich.
Magento, PayPal und der mobile Checkout mit Smartphones
17 Tagen ago by Alexander Steireif
PayPal gehört schon seit längerer Zeit zu den etablierten Zahlarten im E-Commerce, aus diesem Grund muss man sich sicherlich die Frage nach dem Sinn oder Unsinn einer PayPal Integration nicht mehr stellen, auch wenn es sicherlich vereinzelt Branchen und Zielgruppen gibt, bei denen PayPal auf eine gewisse Ablehnung stößt. In vielen Fällen ist aber PayPal eine hervorragende Möglichkeit, die Conversions zu erhöhen und bei akzeptablen Gebühren profitiert auch der Shop-Betreiber, wenn er diese Payment-Methode mit ins Programm aufnimmt.
Auch wenn Magento mittlerweile zum selben Konzern wie PayPal gehört, nämlich eBay, ist die Integration in manchen Stellen doch ein wenig holprig. In diesem konkreten Fall geht es darum, wie man den mobilen Checkout in seinem Magento-Shop “aktivieren” kann, da es von Haus aus doch ein paar Hürden gibt. Beginnen wir aber einfach mit einer Schritt für Schritt Integration innerhalb von Magento.
PayPal konfigurieren und aktivieren
Ich beziehe mich auf die aktuellste Version von Magento, sprich die 1.7.0.2. In älteren Versionen ist das Handling ein wenig anders, das Prinzip ist aber über die Versionen hinweg das selbe geblieben. Um PayPal zu konfigurieren, muss man den Menüpunkt System -> Konfiguration -> Zahlungsarten öffnen. Dort gibt es anschließend den Oberpunkt “PayPal Payment Solutions” und hier muss man nun bei “Website Payment Standard” auf configure klicken.
Hier reicht es nun aus die E-Mail Adresse des PayPal Accounts zu hinterlegen und bei Enable the Solution die Auswahl. ja zu stellen. Anschließend kann bei Magento im Checkout als Zahlungsweise ebenfalls PayPal ausgewählt werden und alles weitere funktioniert “out of the box”.
Und was ist mit Smartphones?
Interessant wird es nun, wenn man mit einem Smartphone durch den Checkout springt. Mobile ist ein immer wichtigeres Thema und als Shop-Betreiber sollte man neben einer mobil optimierten Magento Version auch einen mobilen Checkout anbieten um die Quote der Kaufabbrüche zu senken. Grundsätzlich ist die “Desktop-Variante” von PayPal alles andere als “Smartphone tauglich”, auch wenn technisch betrachtet alles problemlos funktioniert, die Usability lässt aber zu wünschen übrig.
PayPal bietet einen mobilen Checkout an, im Gegensatz zu den vom Support getätigten Aussagen benötigt man hierfür auch nicht die PayPal Express Version. PayPal prüft beim Aufruf der Payment-Seite den Gerätetyp und leitet anschließend auf das richtige Endgerät weiter. Nur scheint dies bei Magento von Haus aus direkt nicht zu funktionieren. Die Ursache liegt in der Übermittlung der Informationen. Wenn in Magento eine Bestellung per PayPal getätigt wird, landet man anschließend auf einer “Redirect Seite” die Informationen beinhaltet und an PayPal “übermittelt.
Innerhalb dieser Weiterleitungsseite werden in Form eines Formulars mit Hidden-Fields Werte gesammelt und an PayPal übergeben, was dann wie folgt aussieht:
<form action=”https://www.paypal.com/webscr” id=”paypal_standard_checkout” name=”paypal_standard_checkout” method=”POST”><div><input name=”form_key” type=”hidden” value=”XXX” /></div><input id=”business” name=”business” value=”papypal@example.com” type=”hidden”/>
<input id=”invoice” name=”invoice” value=”YYY” type=”hidden”/>
<input id=”currency_code” name=”currency_code” value=”EUR” type=”hidden”/>
<input id=”paymentaction” name=”paymentaction” value=”sale” type=”hidden”/>
<input id=”return” name=”return” value=”http://www.example.compaypal/standard/success/” type=”hidden”/>
<input id=”cancel_return” name=”cancel_return” value=”http://www.example.compaypal/standard/cancel/” type=”hidden”/>
<input id=”notify_url” name=”notify_url” value=”http://www.example.compaypal/ipn/” type=”hidden”/>
<input id=”bn” name=”bn” value=”Varien_Cart_WPS_CH” type=”hidden”/>
<input id=”cpp_header_image” name=”cpp_header_image” value=”http://www.example.com/media/example/logo.jpg” type=”hidden”/>
<input id=”item_name” name=”item_name” value=”ABCDEFG” type=”hidden”/>
<input id=”lc” name=”lc” value=”de_DE” type=”hidden”/>
<input id=”charset” name=”charset” value=”utf-8″ type=”hidden”/>
<input id=”amount” name=”amount” value=”22.33″ type=”hidden”/>
<input id=”tax” name=”tax” value=”9.47″ type=”hidden”/>
<input id=”shipping” name=”shipping” value=”0.00″ type=”hidden”/>
<input id=”discount_amount” name=”discount_amount” value=”0.00″ type=”hidden”/>
<input id=”cmd” name=”cmd” value=”_ext-enter” type=”hidden”/>
<input id=”redirect_cmd” name=”redirect_cmd” value=”_xclick” type=”hidden”/>
<input id=”city” name=”city” value=”asdasd” type=”hidden”/>
<input id=”country” name=”country” value=”DE” type=”hidden”/>
<input id=”email” name=”email” value=”customer@example.com” type=”hidden”/>
<input id=”first_name” name=”first_name” value=”Vorname” type=”hidden”/>
<input id=”last_name” name=”last_name” value=”Nachname” type=”hidden”/>
<input id=”zip” name=”zip” value=”123456″ type=”hidden”/>
<input id=”state” name=”state” value=”RR” type=”hidden”/>
<input id=”address1″ name=”address1″ value=”asdsada” type=”hidden”/>
<input id=”address2″ name=”address2″ value=”a” type=”hidden”/>
<input id=”address_override” name=”address_override” value=”1″ type=”hidden”/>
</form>
Sprich, Magento übergibt eine Menge an Informationen wie Preis, Produkt, Adresse des Kunden etc. Der Knackpunkt liegt nun darin, dass der mobile Checkout von PayPal im Gegensatz zur “Desktop-Variante” nicht alle Informationen auch tatsächlich verarbeiten kann. Sendet man Werte mit denen der mobile Checkout nichts anfängt, leitet PayPal automatisch zur “Desktop-Variante” weiter. Und dies ist der Effekt, den man standardmäßig in Magento hat. Konkret geht es dabei um folgende Zeile:
<input id=”discount_amount” name=”discount_amount” value=”0.00″ type=”hidden”/>
Der mobile PayPal Bezahlvorgang ist nicht in der Lage diese zu verarbeiten, weswegen man als Kunde mit seinem Smartphone immer auf der klassischen Variante von PayPal landet. Entfernt man diese Zeile, klappt der Vorgang mit einem Smartphone wunderbar und PayPal leitet auf die Smartphone Variante weiter. Für was ist aber nun dieser Wert verantwortlich? Definiert man als Shop-Betreiber Warenkorb-Preisregeln (Gutscheine, Rabatte im Warenkorb etc.) ist dies ein Discount, sprich ein Rabatt. Dieser kann explizit an PayPal übermittelt werden, wodurch man auf der PayPal Seite dann den Rabatt angezeigt bekommt. Tut man dies nicht, sieht man auf der PayPal Seite auch keinen Rabatt. Dies ist meiner Meinung nach nicht ganz so tragisch, da ja die Endsumme, d.h. die Summe die der Kunde bezahlen wird, soweit korrekt übermittelt wird.
Was muss ich ändern?
Ohne an dieser Stelle zu Tief in die Entwickler-Sicht zu springen: Unter app/code/core/Mage/PayPal/Block/Standard/ gibt es die Datei Redirect.php die letztendlich alle Informationen sammelt, das Formular samt den Hidden Fields generiert und zurück liefert. An dieser Stelle kann man nun ansetzen und den discount_amount gar nicht erst ausgeben. Da jedoch auf der Desktop-Variante diese Information kein Problem darstellt, ist es meiner Meinung nach sinnvoll zu differenzieren ob ein Smartphone einkauft oder nicht. Je nach Projekt-Setup kann dies anhand vom Store bzw. StoreView geschehen, oder durch eine direkte Prüfung des Endgeräts.
Was ist die Alternative?
Alternativ hierzu kann man auch PayPal Express verwenden, in diesem Fall treten die oben beschriebenen Probleme nicht auf und man hat letztendlich gar keinen Customizing-Aufwand. Nachteilig hierbei ist letztendlich nur, dass der Bezahlprozess anders aufgebaut ist im Vergleich zu PayPal Standard. Das kann, muss aber kein Nachteil sein.
Magento Kategorie URLs pro StoreView
43 Tagen ago by Alexander Steireif
Betreibt man innerhalb von Magento mehrere Stores bzw. StoreViews, kann man grundsätzlich fast jede Information auf StoreView Ebene abändern. Legt man beispielsweise Kategorien an, kann man jeder Kategorie auf StoreView Ebene einen anderen Namen oder Beschreibung zuweisen. Das ist sofern auch logisch und notwendig, da man die StoreViews in der Regel für unterschiedliche Sprachen nutzt und dadurch sollte sich auch zwangsläufig der Name und die Beschreibung ändern.
Würde man jetzt, bezogen auf den Screenshot, bei dem Namen hinten den Haken bei “Verwende Standardwert” entfernen, so könnte man innerhalb dieses StoreViews den Wert “Neue Artikel” überschreiben und beispielsweise den Namen “New Products” hinterlegen. So praktisch diese Funktionalität auch ist, bei dem URL Key geht es von Haus aus nicht, dass man pro StoreView einen eigenen Wert führt, weswegen bei der Eingabemaske hinten die Kennzeichnung Global steht.
Wenn man aber je nach StoreView unterschiedliche URLs bzw. URL Keys benötigt, kann man diese “Funktion” ganz einfach über eine Änderung in der Datenbank freischalten. Hierfür muss man sich mit einem Programm seiner Wahl, z.B. phpMyAdmin oder Sequel Pro, auf die Magento Datenbank verbinden, anschließend die Tabelle eav_attribute öffnen und in der Spalte attribute_code nach url_key suchen. Das passende SQL Statement hierfür lautet SELECT * FROM eav_attribute WHERE attribute_code LIKE ‘%url_key%’;
Nachdem man das SQL Statement ausgeführt hat, erhält man zwei Einträge. Einmal für Kategorien und einmal für Produkte. An diesem Punkt muss man sich nun die attribute_id des passenden Datensatzes, nämlich der Datensatz der für die Kategorien verantwortlich ist, notieren. In unserem Beispiel handelt es sich um den ersten Datensatz mit der ID 33.
Im nächsten Schritt öffnet man die Tabelle catalog_eav_attribute und sucht hier nach dem Datensatz mit der attribute_id, die wir uns gerade gerade notiert haben. Bei dem Datensatz gibt es nun die Spalte is_global, steht hier der Wert auf 1 handelt es sich um einen globalen Wert, steht der Wert auf 0 handelt es sich um einen StoreView spezifischen Wert. Sprich man muss den Wert einfach auf 0 setzen und schon kann man für jeden StoreView einen eigenen URL Key hinterlegen was vor allem aus Gründen der Suchmaschinenoptimierung eine enorm interessante Möglichkeit ist.
Einheitliche Nummernkreisläufe für Bestellungen, Rechnungen, Lieferscheine und Gutschriften im Magento-Multi-Store Setup
43 Tagen ago by Alexander Steireif
Der äußerst lange Titel bringt das Problem recht gut auf den Punkt. Angenommen man betreibt einen Magento-Shop mit mehreren Stores bzw. StoreViews, dann hat man von Haus aus einen separaten Nummernkreislauf für jeden Store. Bestellt ein Kunde beispielsweise etwas über Store A, so wird die Bestellnummer 10000001 erzeugt. Tätigt ein anderer Kunde innerhalb von Store B eine Bestellung, erhält dieser die Bestellnummer 20000001. Das selbe Spielchen gilt natürlich auch für Rechnungen, Lieferscheine und Gutschriften.
Grundsätzlich ist dieses Verhalten in vielen Fällen gewünscht, speziell um die jeweiliges Stores leichter zu unterscheiden. Wenn man aber einheitliche Nummernkreisläufe haben möchte, kann dies Magento auch leisten. Beim oberen Beispiel würde dies also bedeuten, dass Magento nicht die Bestellnummer 20000001 erzeugt, sondern die Bestellnummer 10000002.
Möchte man diesen Effekt haben, muss man direkt Einträge in der Datenbank ändern, innerhalb des Backends wird man hierfür keine entsprechende Konfigurationsoption finden. Die Änderung über die Datenbank ist aber relativ einfach. Im ersten Schritt muss man sich mit einem beliebigen Programm auf die Datenbank von Magento verbinden z.B. phpMyAdmin oder für die Mac User unter uns Sequel Pro.
Anschließend öffnet man die Tabelle eav_entity_type deren Inhalt wie folgt aussehen sollte
Innerhalb dieser Tabelle gibt es nun insgesamt 4 Datensätze die in der Spalte increment_per_store eine 1 stehen haben, sprich bei diesen Datentypen wird die Nummer für jeden Store einzeln betrachtet. Es handelt sich dabei um die order (Bestellung), invoice (Rechnung), shipment (Lieferschein) sowie creditmemo (Gutschrift)
Wir können das Verhalten, dass jeder Store seinen eigenen Nummernkreislauf besitzt, unterbinden in dem man bei dem jeweiligen Datensatz den increment_per_store Wert auf 0 setzt (Standardmäßig ist hier eine 1 hinterlegt). Sprich möchte man fortlaufende Bestellnummern haben, aber unterschiedliche Rechnungs-, Lieferschein- und Gutschriftnummernkreise, setzt man nur bei dem Datensatz order den Wert incerement_per_store auf 0.
Hat man diese Einstellung entsprechend vorgenommen, sollte man noch einen Blick in die Tabelle eav_entity_store werfen. Innerhalb dieser Tabelle ist für jeden Store der jeweils Rechnungsnummer, Bestellnummer, Lieferscheinnummer sowie Gutschriftnummer hinterlegt. Magento wird nun, wenn Sie die Änderungen in der Tabelle eav_entity_type durchgeführt haben, neue Einträge in der Tabelle eav_entity_store anlegen, wodurch man zuerst wieder bei einer Nummer wie 1000001 startet, da Magento von einem neuen Nummernkreislauf ausgeht.
Im oberen Screenshot sieht man die letzten Nummern für Rechnungen, Lieferscheine, Gutschriften und Bestellungen. Jede Nummer ist einem Typ zugewiesen (Rechnung, Bestellung etc.) und einem Store. entity_type_id = 11 bedeutet beispielsweise, dass es sich um eine Bestellung handelt, Store = 2 bezieht sich auf den Store mit der Nummer 2 und die letzte ID = 200007160 bedeutet, dass die nächste Bestellung die Nummer 200007161 bekommen würde. Durch die Vereinheitlichung der Nummernkreisläufe muss man daher an dieser Stelle gegebenenfalls nochmals nachbessern, damit man einen fortlaufenden Nummernkreislauf hat, was gerade bei Rechnungen zu empfehlen wäre.
Magento VM in Version 2.5.0 veröffentlicht
155 Tagen ago by Alexander Steireif
Ab sofort steht die Magento VM (virtuelle Maschine) in der Version 2.5.0 zum Download bereit. Neben ein paar Updates für das Betriebssystem wurde darüber hinaus Magento in der aktuellsten Version installiert. Wie gewohnt steht eine Variante mit Beispieldateien (Sample Data) und eine Variante ohne Beispieldateien zur Verfügung. Weitere Informationen zur Magento VM inkl. Installationsanleitung findet man unter http://www.magento-vm.de
Magento Benachrichtigungen im Backend deaktivieren
160 Tagen ago by Alexander Steireif
Magento verfügt von Haus aus über ein sehr nützliches Feature, welches oftmals aber als störend bzw. nervend empfunden wird. Es handelt sich dabei um die so genannten Backend Benachrichtigungen. Jedes Mal, wenn man sich im Backend anmeldet, prüft Magento, ob aktuelle Nachrichten vorliegen und blendet diese gegebenenfalls ein. Da es sich dabei um ein Overlay handelt, wodurch die restliche Seite ausgeblendet wird, werden diese Nachrichten bzw. Meldungen von vielen Shop-Betreiber als störend bzw. nutzlos empfunden.
Mich persönlich “nerven” diese Meldungen auch, der Grundgedanke ist aber folgender. Sobald ein neues (Sicherheits)Update bzw. eine neue Version von Magento veröffentlicht wird, ist diese Nachricht im Backend vorhanden und wird angezeigt. Sprich der “normale” Magento Shop-Betreiber wird auf dem Laufenden gehalten, was Sicherheitsprobleme bzw. neue Versionen angeht. Holt man sich diese Informationen sowieso aus Blogs bzw. von magentocommerce.com, sind diese Nachrichten innerhalb des Backends daher eher überflüssig und störend, ist man aber nicht täglich auf Websites rund um Magento unterwegs, liefern diese Backend Benachrichtigungen wichtige Informationen.
Dennoch kann man die Benachrichtigungen grundsätzlich deaktivieren, so dass Magento kein Overlay einblendet. Hierfür geht man nach System -> Konfiguration -> Erweitert und deaktiviert das Modul Mage_AdminNotification
Anschließend wird Magento den Benutzer nach dem Login nicht mehr mit der aktuellsten Nachricht begrüßen.
Magento und Gutscheine
439 Tagen ago by Alexander Steireif
Magento hat, wie jedes andere E-Commerce System auch, Stärken und Schwächen. Was man meiner Meinung nach sicherlich zu den Stärken zählen sollte, ist die ausgeprägte “Preisregel-Funktionalität”. Dabei geht es nicht nur darum, dass man von Haus aus eine Vielzahl an Möglichkeiten hat. Interessant ist vor allem, dass man auch als Magento Neuling keine Schwierigkeiten damit hat, Preisregeln anzulegen bzw. zu editieren. Das Thema Preisregeln ist aber in Magento ein Kapitel für sich, konkret geht es im Folgenden Beitrag um Gutscheincodes. Da wir relativ häufig hierzu gefragt werden, wird an dieser Stelle ausführlich auf die Funktionalität von Gutscheincodes eingegangen.
Ist man im Administrationsbereich von Magento angemeldet, findet man alle relevanten Punkte im Bezug auf die Preisregeln unter dem Punkt Promo. Magento unterscheidet anschließend zwischen Warenkorb Preisregeln und Katalog Preisregeln. Bei den Katalog Preisregeln kann man, vereinfacht gesagt, Rabatte auf Produkte mit einem bestimmten Merkmal (Attribut) geben. Hierfür stehen einem auch die eigenen Attribute zur Verfügung. Warenkorb Preisregeln beziehen sich hingegen nicht (nur) auf Artikel mit bestimmten Merkmalen, sondern auf den Inhalt des Warenkorbs an sich, aber auch auf die Zahlungsart, Versandart etc. Man könnte also sagen, dass einem alle Informationen aus dem Magento Checkout Prozess zur Verfügung stehen.
Neben diesen Möglichkeiten erlauben einem die Warenkorb-Preisregeln aber auch das Anlegen von “einfachen” Gutscheincodes.
Angenommen man möchte einen Gutscheincode über 25€ mit einem Mindestbestellwert von 50€ anlegen, der insgesamt 100 Mal zur Verfügung steht, aber pro Benutzer nur 1 Mal eingelöst werden darf, geht man wie folgt vor:
Zuerst öffnet man im Punkt Promo die Warenkorb Preisregeln und erstellt über den Button Neue Regel eine Magento Warenkorb Preisregel. Daraufhin landet man auf folgender Eingabemaske:
Bei dem Regelnamen kann man einen beliebigen Namen hinterlegen, in diesem Fall “25€ Gutschein”. Bei der Beschreibung kann man noch einen Text hinterlegen, man muss es aber nicht. Den Status der Regel sollte man, außer die Regel soll nicht verfügbar sein, auf aktiv setzen. Verwaltet man innerhalb einer Magento Instanz mehrere Websites (Stichwort Magento Multi-Store Fähigkeit) könnte man noch eine Einschränkung vornehmen, beispielsweise dass der Gutschein für Website A und B gilt, aber nicht für Website C. Auch kann man auf Basis der Kundengruppen eine Eingrenzung vornehmen. Hierfür muss man aber auch die Kundengruppen entsprechend pflegen, was oftmals jedoch nicht der Fall ist. Für die Erstellung des Gutscheincodes ist die nächste Option namens Rabatt relevant. Der Hintergrund ist, dass man die 25€ Rabatt theoretisch auch ohne Code gewähren kann. In diesem Fall würde Magento automatisch prüfen, ob die Bedingungen erfüllt sind (50€ Mindestbestellwert) und den Rabatt automatisch abziehen. Wenn man aber auf Gutscheincode Basis arbeiten möchte, muss man bei Rabatt den Listeneintrag Nur mit angegebenem Rabattcode auswählen.
Anschließend kann man einen Rabattcode sowie die Verfügbarkeit definieren. Bei der Verfügbarkeit unterscheidet Magento nach der Verwendung pro Rabattcode und der Verwendung pro Kunde. D.h. man kann einen Gutscheincode insgesamt 100 Mal einlösen, aber jeder Kunde darf dies nur 1 Mal tun. Im konkreten Beispiel von weiter oben würde das bedeuten, dass bei der Verwendung pro Rabattcode die Zahl 100 und bei der Verwendung pro Kunde die Zahl 1 eingetragen wird. Als Rabattcode wird 25eurovielendank hinterlegt.
Nach diesen Einstellungen kann man ebenso einen Zeitraum für den Gutschein, sowie eine Priorität hinterlegen. Der Zeitraum ist selbsterklärend (Von wann bis wann zählt der Gutschein), interessant ist die Priorität. Die Priorität spielt bei Magento eine Rolle, wenn man mehrere Preisregeln angelegt hat. Damit sich der Rabatt nicht ins Unendliche aufbaut, kann man bei jeder Preisregel die Anwendung weitere Preisregeln verbieten, wobei die Preisregeln mit der niedrigsten Priorität zuerst ausgeführt werden.
Im nächsten Schritt muss man nun auf der linken Seite in das Tab Bedingungen springen. Bei den Bedingungen hat man recht viele Möglichkeiten, wie weiter oben bereits erwähnt kann man auch die Versandart oder Zahlart als Bedingung auswählen. Für dieses Beispiel reicht aber der Warenkorbwert, der 50€ oder mehr betragen muss. Hierfür wählt man die Zwischensumme sowie den Operator größer gleich als.
Dank dieser Bedingung weiß nun Magento, ob ich als Kunde den Gutschein überhaupt einlösen darf, oder auch nicht. Würde ich beispielsweise etwas für 20€ kaufen, würde Magento einen Fehler ausgeben. Neben der Bedingung benötigt man aber auch noch eine Aktion, d.h. wenn alle Bedingungen erfüllt sind, muss Magento “irgendetwas” machen. Die Aktionen kann man im gleichnamigen Tab definieren.
Um es an dieser Stelle nicht komplizierter zu machen, als es eigentlich ist, in diesem Beispiel reicht die Listenauswahl Fester Betrag für gesamten Warenkorb (Man könnte theoretisch auch einen Rabatt pro Artikel geben), sowie den Rabattbetrag von 25, d.h. 25€. Die weiteren Einstellungsmöglichkeiten sind hier nicht so relevant, man kann letztendlich noch definieren ob der Versand auch rabattiert werden darf, ob weitere Regeln angewendet werden dürfen, aber auch die Eingrenzung auf Artikelebene wäre hier möglich.
Sind aber die oben aufgeführten Einstellungen entsprechend vorgenommen, kann die Regel gespeichert werden. Nach dem Speichern der Regel ist die Warenkorb Preisregel angelegt und der Gutscheincode steht den Benutzern zur Verfügung. Einfach, oder
?
Magento Admin Benutzer Kennwort zurücksetzen
442 Tagen ago by Alexander Steireif
Im Eifer des Gefechts kann man schon einmal das Admin Benutzer Kennwort für das Magento Backend vergessen, doch was dann?
Es gibt zwei verschiedene Möglichkeiten, um das Passwort neu zu setzen, die im Folgenden kurz vorgestellt werden. Was grundsätzlich aber nicht möglich ist, ist das Anzeigen des aktuellen Passworts. Da Magento alle Kennwörter verschlüsselst in der Datenbank speichert, kann man Passwörter in Magento nicht erneut auslesen, sondern nur neu setzen bzw. anfordern.
1. Magento Passwort über das Backend zurücksetzen
Der einfachste und schnellste Weg um an ein neues Passwort zu kommen ist bei Magento das Backend. Man öffnet die URL des Magento Administrationsbereichs und kann anschließend auf den Link Passwort vergessen klicken.
Anschließend kann man die E-Mail Adresse des Admin Benutzers angeben und man bekommt die restlichen Informationen per E-Mail gesendet. In den vorherigen Versionen von Magento hat man dabei das Passwort direkt per E-Mail enthalten, da dies aber ein potentielles Sicherheitsrisiko ist, hat sich Magento dazu entschlossen einen Bestätigungslink zu versenden, mit dessen Hilfe man das Kennwort neu setzen kann. Befolgt man aber die Informationen in den Magento Transaktions E-Mails, hat man innerhalb von 2-3 Minuten das Passwort neu vergeben.
2. Magento Passwort über die Datenbank zurücksetzen
Eine Alternative zu der oben beschriebenen Vorgehensweise bietet die Datenbank. Dies ist beispielsweise dann sinnvoll, wenn Sie keinen Zugriff auf die im System hinterlegte E-Mail Adresse haben, aber zeitnah Änderungen vornehmen müssen. Im ersten Schritt müssen Sie sich mit der Datenbank verbinden, welches Tool Sie hierfür verwenden bleibt Ihnen überlassen. Die meisten Magento Webhoster stellen das Programm phpMyAdmin zur Verfügen, wie erwähnt können aber auch Alternativen wie Sequel Pro oder Navicat verwendet werden.
Ist man mit der Magento Datenbank verbunden, muss man in die Tabelle admin_user
Hier editiert man nun den Datensatz mit dem gewünschten Benutzer. Bei der Zeile Passwort wählt man anschließend MD5 und tippt sein neues Kennwort für das Magento Backend ein
Speichert man anschließend die Einstellungen, kann man sich ab sofort mit seinem neuen Passwort anmelden.
Magento und eigene Variablen
444 Tagen ago by Alexander Steireif
Magento verfügt von Haus aus über eine, vor allem für Administratoren und Backend-User, interessante Funktionalität, die in der Regel so gut wie nie genutzt wird. Es handelt sich dabei um die Variablen bzw. eigene Variablen. Doch wofür benötigt man in Magento eigene Variablen?
Als Beispiel dient im Folgenden eine CMS-Seite. Editiert oder erstellt man in Magento eine CMS Seite (CMS -> Seiten verwalten), kann man mit Hilfe eines WYSIWYG Editors Texte eingeben und formatieren. In der Maske mit den möglichen Formatierungsmöglichkeiten kann man aber nicht nur Texte oder Sätze optisch anpassen, sondern auch Variablen einfügen. Hierfür klickt man einfach auf den ersten Button wie im folgenden Beispiel:
Anschließend erhält man von Magento eine Auflistung mit zur Verfügung stehenden Variablen:
Magento unterscheidet hierbei zwischen von Haus aus verfügbaren Variablen und eigenen Variablen. Von Haus aus verfügbar bedeutet konkret, dass gewisse Konfigurationseinstellungen ausgelesen und angezeigt werden können. Hierzu zählt beispielsweise die URL der Seite, die Kontaktinformationen etc. Klickt man anschließend auf eine Variable fügt Magento diese automatisch in den Textbereich des Magento WYSIWYG Editors ein. Der Name der Seite wird dabei wie folgt ausgelesen:
{{config path=”general/store_information/name”}}
Nun kann es aber natürlich vorkommen, dass man selbst Variablen definieren und speichern möchte. Hierfür gibt es unter System -> Eigene Variablen einen speziellen Bereich. Dort kann man eine neue Variable eintragen und unter anderem einen Code (wird nur intern benötigt), einen Namen und einen Inhalt hinterlegen. Hier kann man beispielsweise eine neue Variable a la Öffnungszeiten mit dem Inhalt “Mo – Fr zwischen 9 und 18 Uhr” hinterlegen. Nachdem man die eigene Variable gespeichert, kann man diese, z.B. in einer CMS-Seite, nach dem selben Schema wie bereits weiter oben aufgeführt, integrieren.
Sind eigene Variablen verfügbar, zeigt diese Magento gesondert an (wie im Screenshot zu sehen). Hat man sich aber den Code gemerkt, könnte man eine Variable auch direkt in eine CMS-Seite einfügen:
{{customVar code=test}}
Speichert man anschließend die CMS-Seite, ließt Magento den Inhalt der Variable entsprechend aus und stellt diesen dar, in diesem Beispiel würde auf der CMS-Seite die Information “Mo – Fr zwischen 9 und 18 Uhr” erscheinen.
Wozu man Variablen bzw. eigene Variablen benötigt? Oftmals kann es in einem Magento-Shop vorkommen, dass man eine Information auf vielen verschiedenen Seiten anzeigen muss. Wenn sich jedoch dann etwas an dieser Information ändert, müsste man es im klassischen Fall X Mal an jeder Stelle wo der Texte, die Grafik etc. vorkommt eine Änderung vornehmen. Variablen helfen also dabei an einer zentralen Stelle wichtige Informationen zu pflegen, die mehrmals verwendet werden. Hierfür eignen sich vor allem Ansprechpartner, Firmenbezeichnungen, Telefonnummer bzw. Kontaktadressen. Denn sollten Grafiken, oder ganze Texte (Beispielsweise AGBs) auf verschiedenen Seiten auftauchen, sind in der Regel statische Blöcke die bessere Wahl.
Magento und Firebug: Probleme mit console.log
496 Tagen ago by Rouven Alexander Rieker
Heute morgen war es soweit: Nach einem der vielen Firefox und Firebug-Updates funktionierte bei mir auf einmal die geliebte Funktion console.log für die JavaScript-Entwicklung nicht mehr. Das Problem liegt darin, dass die Entwickler von Magento eine blankes Console Object integrieren, falls es einmal keine Console definiert wurde. Prinzipiell ist das ja eine gute Idee, jedoch ist bei mir die abgeprüfte Funktion “firebug” leider nicht mehr im Console Object vorhanden (Firefox 9.0.1 und Firebug 1.9.0).
Um die korrekte Funktionalität wiederherzustellen, muss man einfach in die Datei js/varien/js.js gehen und folgende Zeile
if (!(“console” in window) || !(“firebug” in console))
durch folgende Ersetzen
if (!(“console” in window) || typeof console !== ‘object’)
Anschließend sollte das Logging in der Console wieder einwandfrei funktionieren.
Eine andere Möglichkeit das Problem zu beheben, beschreibt Alan Storm anhand eines Code-Beispiels (Integration eines Magento-Block und Hinzufügen der abgeprüften Funktion “firebug” zu dem Console Object) hier: https://gist.github.com/992233
Netter Nebeneffekt von den Lösungen ist, dass die Console-Funktionen nun auch einwandfrei in Google Chrome funktionieren.
















