Webshops mit Magento


Magento Vertical Navigation (vertnav) inaktive Hauptpunkte ausblenden

RicoNeitzel_VertNav_6eaa79c7bb453a062118ca84290fed1c_Bild 9 Rico Neitzel hat schon seit langer Zeit ein Magento Modul entwickelt, welches die Top Navigation durch eine vertikale, beispielsweise in der linken Spalte, ersetzt. Das Modul kann dabei gratis innerhalb von Magento Connect unter magentocommerce.com heruntergeladen werden.

Für ein aktuelles Projekt habe ich genau eine solche vertikale Navigation gesucht und habe mir daher die Erweiterung von Rico angeschaut. Wichtig dabei war, dass die obere Navigation nicht ersetzt wird, sondern diese nur ergänzt. Möchte man dies erreichen, muss man die Datei vertnav.xml (befindet sich in app/design/frontend/default/default/layout/) abändern:

<reference name="top.menu">
    <remove name="catalog.topnav"/>
</reference>

Kommentiert  man diesen Teil aus

<!–<reference name="top.menu">
    <remove name="catalog.topnav"/>
</reference>–>

wird die obere Navigation nicht entfernt.

Ebenso wollte ich nun, dass die Oberpunkte innerhalb der Navigation ausgeblendet werden. Das bedeutet, dass wenn man die Kategorien A B C D und E hat, man sich gerade in Kategorie C befindet die Navigation auch auf A B D und E verweist. Das ist sinnvoll, wenn die vertikale Navigation das einzige Navigationsmenü ist, als Addon zur Top Navigation ist dies aber sinnlos.

Um die Oberpunkte zu deaktivieren öffnet man die Datei vertnav.css (Befindet sich in skin/frontend/default/default/css/). Damit nun die Oberpunkte der restlichen (inaktiven) Kategorien ausgeblendet werden, fügt man einfach den folgenden Code am Ende der Datei ein:

#vertnav li.level0.inactive
{
display:none;
}

Edit

Nach dem Code von oben muss noch folgendes eingefügt werden:

#vertnav .next a
{
display:BLOCK;
}

#vertnav .prev a
{
display:block;
}

Und schon klappt’s mit der Navigation ;-)

PHP.ini Verzeichnis falsch / Probleme beim Anmelden

Ich hatte es schon von Anfang an befürchtet, nun kam die Gewissheit - In unserem Buch “Webshops mit Magento” haben sich ein paar kleinere Fehler eingeschlichen.

So stimmt das auf Seite 45 beschriebene Verzeichnis der php.ini Datei nicht. Korrekterweise befindet sich die Datei in C:/xampp/php. Hat man Xampp auf einem anderen Laufwerk installiert, muss man den Laufwerksbuchstaben natürlich entsprechend anpassen.

Ebenso bat mich ein Leser auf folgenden Link hinzuweisen: http://www.magentocommerce.com/boards/viewthread/42823/. Bei Magento kann es zu Problemen mit der Anmeldung im Administrationsbereich kommen und als Fehlermeldung liefert Magento nichts zurück. Das Problem umgeht man aber am elegantesten, wenn man statt http://localhost http://127.0.0.1 nutz um Magento zu installieren.

Das wäre es vorerst mit der Fehlerkorrektur ;-)

Magento Core Controller überschreiben

Heute stand ich vor dem Problem, dass ich bei einem Kundenprojekt einen Controller aus dem Core-Package überschreiben musste. Zuerst einmal befrägt man Google danach und stößt relativ schnell auf folgenden Wiki-Artikel: http://www.magentocommerce.com/wiki/how_to_overload_a_controller

Nach dem Implementieren dieser Lösung stellte sich heraus, dass diese Variante bei mir unter der Magento-Version 1.3.2 nicht funktioniert. Also begab ich mich auf die Suche nach einer weiteren Lösung. Nunja, ich muss sagen, dass die Suchergebnisse nicht mehr viel hergaben. Nach 1 Stunde bin ich dann auf folgenden Thread im Magento-Forum gestoßen: http://www.magentocommerce.com/boards/viewthread/37244/

Im Beitrag #6 von Lee Saferite fand ich nun eine Lösung, die halbwegs nach etwas aussah. Dabei habe ich aber gedacht “Bei Magento war bisher immer alles kompliziert, deshalb kann diese einfache Lösung nicht funktionieren.” :-) Aus “Verzweiflung” und dem Bestreben ein guter Magento-Entwickler zu sein (keine Core-Dateien überschreiben ;-) ), habe ich diese Lösung implementiert.

Und siehe da, sie funktioniert einwandfrei! Mein Core-Controller wird nun überschrieben und ich konnte die notwendige Funktionalität einbinden :-)

Wie sieht der Code aus?

Ich möchte nun an einem fiktiven Beispiel die Vorgehensweise demonstrieren. Wir möchten in diesem Beispiel die Login-Funktion des Kundenbereichs verändern.

Zuerst einmal müssen wir eine Config-Datei erstellen, wo definiert wird, welchen Controller wir überschreiben möchten. Dies geschieht über eine XML-Datei, welche wir in folgendem Verzeichnis ablegen:

/app/code/local/<Namespace>/<Module>/etc/config.xml

<config>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <Namespace_Module before="Mage_Customer">Namespace_Module</Namespace_Module>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>

Anschließend müssen wir nun noch die Datei für den entsprechenden Controller erstellen. Dies geschieht in folgendem Verzeichnis:

/app/code/local/Namespace/Module/controllers/AccountController.php

Der betreffende Code könnte hier beispielhaft folgendermaßen aussehen:

include_once("Mage/Customer/controllers/AccountController.php");
class MyCompany_MyModule_AccountController extends Mage_Customer_AccountController
{
    public function loginAction()
    {
        error_log('Ich bin ein Test!');
        parent::loginAction();
    }
}

Nun wird jedes Mal, wenn der überschriebene Controller aufgerufen wurde, in den PHP-Error-Log die Nachricht geschrieben “Ich bin ein Test!”.

Nach diesem Schritt muss man Magento nur noch sagen, dass dieses neue Modul überhaupt existiert und dann aktiviert werden soll. Dies geschieht über eine weitere XML-Datei, die man in folgendem Verzeichnis ablegt:

/app/etc/modules/Namespace_Module.xml

Der Inhalt würde in unserem Beispiel mit dem AccountController folgendermaßen aussehen:

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Module>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Core />
                <Mage_Customer />
            </depends>
        </Namespace_Module>
    </modules>
</config>

Ab jetzt wird die Funktion “loginAction()” von dem neuen Controller überschreiben und unser Ziel wurde damit erreicht. Wichtig in dieser XML-Datei ist der Verweis, dass das Modul von bestimmten Packages abhängig ist. In unserem Fall “Mage_Core” und “Mage_Customer”.

In diesem Sinne,
Happy Magento-Development :-)

Wenn nach dem Umzug der Magento Connect Manager spinnt…

Eigentlich ist der Umzug einer Magento Installation kein Problem. Per FTP Daten von A nach B kopieren, die Datenbank sichern und anschließend wieder importieren und schlussendlich in der Datei local.xml noch die Datenbankverbindungsdaten anpassen. Sind diese Schritte erledigt, läuft zumindest einmal die Magento Installation – jedenfalls bis zum nächsten Update. Denn der Magento Connect Manager “merkt” sich die Pfadangaben und hat man auf dem neuen Server / Webspace einen neuen Pfad zum Magento Ordner, dann knallt’s und das Update lässt sich nicht einspielen.

Die Leute von Rackspeed  haben einen ganz guten Beitrag zwecks Umzug einer Magento Installation veröffentlicht und dort befindet sich auch die Rätsels Lösung:

Damit MagentoConnect auf dem neuen Server funktioniert müssen die gespeicherten Pfade zum Shop aktualisiert werden, dies geht am besten mit einer SSH-Verbindung. Loggen Sie sich dazu am Server ein und führen in der ersten Ebene folgenden Befehl aus:

./pear mage-setup .

Wer diesen Befehl vergessen hat, ich selbst zähle mich auch dazu, muss dies nachholen und dann klappt’s auch auf dem neuen Server / Webspace ;-)

Integration von Google Analytics in Magento

Google Analytics zählt ohne Zweifel zu den umfangreichsten Web-Controlling Anwendungen und ist dabei obendrein noch kostenlos verfügbar. Wer daher mehr über seinen Online-Shop erfahren möchte, beispielsweise welche Seiten sich die Besucher anschauen, oder wo die Besucher herkommen, sollte sich schnellstmöglich ein Google Analytics Konto zulegen.

Die Integration in Magento selbst ist ohne große Änderungen möglich. Wer denkt, er müsse hierfür ein Template anpassen, den kann ich beruhigen. Die Integration von Google Analytics erfolgt ganz bequem über den Administrationsbereich von Magento. Nach einer erfolgreichen Anmeldung am Backend muss man nur noch in den Konfigurationsbereich, welchen man unter System –> Konfiguration findet. Im Unterpunkt “Verkäufe” gibt es den Bereich “Google API”, den man nun öffnet. Dort gibt man einfach in die erste Box (“Google Analytics”) seine Accountnummer ein und wählt bei Aktivieren “ja” aus. Nachdem man die Konfiguration gespeichert hat, ist Google Analytics ohne weitere Zutun aktiviert und eingebunden.

google-analytics

Abbildung 1.1: Der Google Analytics Account kann ganz einfach über das Admin Panel eingebunden werden.

Magento und der geheimnisvolle Debug-Modus

Magento bietet viele Funktionen, die auf den ersten Blick gar nicht ersichtlich sind, aber einem bei der täglichen Arbeit sehr behilflich sein können. So auch der Debug Modus, der gerade Entwickler bei Ihrer Arbeit unterstützt. Da ich mir sicher bin, dass einige den Debug Modus in Magento noch gar nicht kennen, möchte ich diesen kurz vorstellen.

debug-1 Fangen wir  im Administrationsbereich an. Nach einer erfolgreichen Anmeldung muss man in die Konfiguration, welche sich unter System –> Konfiguration befindet. Wichtig ist nun im Punkt “Aktueller Konfig.-Bereich” auf “Main Website” zu wechseln. “Main Website” kann sich je nach dem wie man seine Stores bzw. Views benannt hat unterscheiden. Wir könnten übrigens nun auch in einen View wechseln, z.B. den “Default  Store View” und dort die Änderungen vornehmen. In diesem Beispiel würde dies aber kein Unterschied machen, daher wähle ich “Main Website” aus.

Nun müssen wir in den Bereich für Entwickler, der sich unter Erweitert –> Entwickleroptionen befindet. Hier klappen wir nun den Punkt Debug auf und es erscheinen zwei sehr nützliche Optionen. Aktivieren wir nun die beiden Optionen “Vorlagen Pfadhinweise” und “Blocknamen zu Hinweisen hinzufügen” und klicken auf Konfiguration speichern”. Anschließend noch ins Frontend wechseln und schwupps, es  ist etwas ganz praktisches passiert!

debug-2

Wenn man sich nun das Frontend anschaut, so hat sich das Design ein wenig verändert und man erhält zusätzliche Informationen:

debug-3

Neben der Information, aus welchem Template der angezeigte Inhalt stammt, erhält man nun auch die Information, welcher Block für den jeweiligen Inhalt zuständig ist. Praktisch, oder ;-)? Gerade wenn man als Entwickler auf der Suche nach dem richtigen Template ist, hilft einem diese Option doch sehr  weiter.

Daher eine sehr nützliche Funktion die Magento mitbringt, auch wenn diese sehr versteckt integriert wurde.

Ein kurzer Zwischenbericht zum Buch “Webshops mit Magento”

Nachdem unser Buch “Webshops mit Magento” schon seit ein paar Wochen im Handel erhältlich ist, folgt nun ein kleiner Zwischenbericht. Allgemein kann man sagen, dass sich das Feedback (noch) in Grenzen hält. Dies ist doch sehr schade, da wir so eigentlich gar nicht wissen, was die Leser von unserem Buch halten und wie wir unsere Arbeit gemacht haben. Wir freuen uns daher über jede E-Mail (alexander.steireif@itabs.de bzw. rouven.rieker@itabs.de) mit Kritik und Anregungen.

Was uns bisher aber sehr stark vorgeworfen wurde ist, dass es sich bei dem Buch um kein Buch für Entwickler handelt. Dieser Punkt wurde bislang schon öfters angesprochen, aber um ehrlich zu sein ist das Buch auch nicht für Entwickler gedacht. Allgemein gibt es gerade ein paar Probleme, was die Zielgruppe anbelangt. Auch wurde von “Magento Experten” bemängelt, dass das Buch keine neuen Informationen enthält. Man muss dazu aber auch sagen, dass das Buch nicht primär für Experten geschrieben wurde. In erster Linie möchten wir Anfänger, Einsteiger und Personen die schon etwas Erfahrung mit Magento gesammelt  haben ansprechen.

Dies sind zwei Punkte, die nun schon mehrmals bemängelt wurde. Auf der anderen Seite gab es aber auch schon positives Feedback. So fällt es Einsteigern recht leicht  mit dem Buch ein Webshop mit Magento aufzubauen und gerade was die Konfiguration betrifft hätten wir alle wichtigen Punkte abgedeckt.

Dies nur als kurzer Zwischenbericht. Über weiteres Feedback freuen wir uns natürlich immer und über den Kauf eines Exemplares natürlich auch ;-)

http://www.galileocomputing.de/2085

Gewinnspiel zu “Webshops mit Magento”

Das Gewinnspiel ist nun offiziell gestartet und wird direkt innerhalb der deutschsprachigen Magento Community abgewickelt. Insgesamt  stehen fünf Bücher bereit, die nur darauf warten gewonnen zu werden ;-)

Wie man teilnehmen kann, was man überhaupt machen muss & co findet ihr direkt im deutschen Blog unter http://www.magentocommerce.com/de/comments/neuerscheinung-webshops-mit-magento-galileo-computing

Banner für das Buch “Webshops mit Magento”

Ab sofort sind folgende drei Banner für das Buch verfügbar und können gerne genutzt werden, z.B. wenn man das Buch über die eigene Seite verkaufen möchte (Amazon Affiliate etc.)

galileocomputing_468x60s

URL: http://blogtabs.de/bilder_grafiken/BannerfrdasBuchWebshopsmitMagento_8672/galileocomputing_468×60s_thumb.gif

 

 galileocomputing_468x60w

URL:
http://blogtabs.de/bilder_grafiken/BannerfrdasBuchWebshopsmitMagento_8672/galileocomputing_468×60w_thumb.gif

 

 galileocomputing_magento_1378_hoch

URL:
http://blogtabs.de/bilder_grafiken/BannerfrdasBuchWebshopsmitMagento_8672/galileocomputing_magento_1378_hoch_thumb.gif

Webshops mit Magento erscheint am 27. April 2009

9783836213783 Lange hat es gedauert, nun ist es endlich soweit. Nachdem ich zusammen mit meinem Kollegen Rouven Rieker im letzten Jahr mit der Arbeit an dem Buch “Webshops mit Magento” begonnen habe, wird es in knapp einer Woche im Handel erhältlich sein.

Das Buch kann dabei über alle üblichen Quellen gekauft werden. D.h. vom netten Buchladen nebenan, über Amazon bis zu direkt vom Verlag ist  alles möglich. Der Umfang liegt bei 320 Seiten und das Buch ist sowohl für Einsteiger wie auch für Personen, die bereits Erfahrungen mit Magento gesammelt  haben, interessant. Dabei steht im gesamten Buch der Aufbau eines eigenen Webshops im Fokus, wodurch automatisch alle  Themen behandelt werden, die für den Aufbau eines eigenen Webshops interessant und wichtig sind. Neben der Installation werden also auch die Themen Konfiguration, Aufbau eines Produktkatalogs, Konfiguration der Zahlungsanbieter, Versandkosten etc. behandelt. Weitere Informationen wie welche Themen alle behandelt werden etc. gibt es unter http://www.galileocomputing.de/katalog/buecher/umschlagtext/gp/titelID-2085.

Wichtig ist vor allem noch, dass dieses Blog als Anlaufstelle für die Leser dient. Neben blogtabs.de erreicht man diesen Bereich daher auch unter http://www.einstieg-in-magento.de. Alle relevanten Informationen die das Buch betreffen werden daher auch immer in dieser  Kategorie veröffentlicht werden.

Zum Start des Buches haben wir übrigens auch schon ein Gewinnspiel geplant. Nähere Informationen hierzu gibt es in Kürze ;-)