Vorwort

Diese Dokumentation beschreibt die Grundsätzliche Installation und Konfiguration von TYPOGENTO. Es wird nicht auf die Grundkonfigurationen von TYPO3 und Magento Commerce eingegangen. Alle Einstellungen wurden an einem TYPO3-System der Version 4.2.5 und einem Magento-System der Version 1.2.0.2 getätigt. Versionen vor oder nach diesen Versionen müssen nicht zwangsläufig mit dieser Dokumentation kompatibel sein. Es kann sein, dass für andere Versionen Änderungen an den beiden Plugins getätigt werden müssen.

Vorbereitung in Magento

Magento-Connect-Beta-Settings

Auf der Webseite von MagentoCommerce findet man unter den Erweiterungen den ExtensionKey der Extension. Diesen kopiert man sich und wechselt in den Administrations-Bereich der Magento-Installation.
Dann wechseln wir in das Magento-Modul „Magento-Connect“ um den Plugin zu installieren.
Im Magento-Connect-Modul muss man unter Settings „BETA“ auswählen. Zum Zeitpunkt als dieses Tutorial geschrieben wurde, befand sich die Extension noch im BETA-Stadium und kann nur mit der Einstellung „BETA“ installiert werden. Macht man diese Einstellung nicht, wird die Installation nicht klappen.

 

TYPO3 Connector in Magento

Um die Magento Extension zu installieren benötigt man folgenden Extension-Key: magento-community/Flagbit_Typo3connect

Weitere Informationen zu der Erweiterung findet man auf Magentoconnect unter diesem Link: http://www.magentocommerce.com/extension/693/typogento

Danach fügt man den vorher kopierten Extension-Key in die Suchmaske ein und installiert die Extension.
Ist die Extension installiert, finden wir im Menü der System- > Konfiguration unter Service einen Menüpunkt „TYPO3 Connector“.

 

TYPO3 Connector Settings in Magento Commerce

Um Einstellungen dort zu tätigen, wählen wir also in der Hauptnavigation den Punkt „System“ und in dem sich öffnenden Menü den Punkt „ Konfiguration“.
Auf der Linken Seite öffnet sich nur ein Menü und ziemlich weit unten finden wir den von uns gesuchten Punkt.
Sollte dieser Menü-Punkt nicht gleich anklickbar sein, empfiehlt es sich, sich aus dem Magento-Backend aus zu loggen und direkt wieder einzuloggen. Der Punkt sollte dann funktional sein.
In diesem Menü können wir nun folgende Daten angeben:

  1. Die ID der Seite (Sysfolder) im TYPO3 in welchem die von Magento gespeicherten User vorhanden sind (Sollte man angelegt haben!)
    Magento speichert hier die Userdaten die der User bei der Anmeldung bei Magento
  2. Die ID der Usergruppe dieser User (auch diese sollte im TYPO3 Backend in dem in 1. Hinterlegtem Ordner angelegt sein
  3. Zusätzlich muss man die Datenbank-Informationen von TYPO3 im Abschnitt TYPO3 Database hinterlegen.

Anlegen des API-Users in Magento

Damit TYPO3 auf die Informationen von MagentoCommerce zugreifen kann, benötigt es Zugang zur API die von Magento bereitgestellt wird. Um Zugang zu bekommen, muss für TYPO3 ein sog. API-User angelegt werden. Dieser wird später in der Extension von TYPO3 hinterlegt.
Um diesen API-User anzulegen gehen wir wie folgt vor:
Unter dem Menüpunkt „System“ finden wir den Punkt „Webservice“. Unter „Webservice“ wiederum wählen wir zuerst „Gruppenberechtigung“ aus. Es muss eine neue Gruppe angelegt werden, die in Magento „Role“ genannt wird. Diese Gruppe benennen wir und vergeben die benötigten Daten.

 

Zuerst geben wir der Gruppe einen Namen. Dieser Name kann frei wählbar sein. In diesem Beispiel vergeben wir den Gruppennamen TYPO3

API-Berechtigungen

Unter „Gruppenberechtigung Quellen“ wählen wir nun die Quellen aus, die unser API-User verwenden kann. Zwar verwendet Typogento Z.T. nur wenige Punkte dieser Berechtigung, aber es können in Zukunft noch weitere hinzukommen. Wir wählen also in diesem Punkt einfach in dem oberen Dropdown "alle" aus. Da diese API technisch nur im Backend verwendet wird, müssen wir keine Performance-Probleme beführchten, nur weil wir diese Auswahl nicht einschränken.

 

Haben wir diese Einstellungen gespeichert wählen wir im Menüpunkt „Webservice“ den Punkt „Benutzer“ und legen einen User an. Diesen User weisen wir der „Gruppenberechtigung“ die wir für TYPO3 angelegt haben zu und notieren uns die Informationen da wir sie in den nächsten Schritten für TYPO3 verfügbar haben müssen. Dieser User braucht zudem alle Informationen wie z.B. Email und einen API-Key. Dieser API-Key ist quasi das Passwort dieses Users.

 

Somit haben wir die nötige Konfiguration in Magento abgeschlossen.

Vorbereitungen in TYPO3

Konfiguration für das Backend von TYPO3

Zuerst wechseln wir in den Extensionmanager und klicken auf die Magento Extension.
Hier müssen wir den Pfad zu unserer Magento-installation angeben. (Beispiel : /html/magento/)
Darunter müssen wir die Webadresse des Shops angeben. (Beispiel www.meinedomain.de/magento/)
Die abschließenden Slashes müssen angegeben werden!
Danach noch API-User und API-Key (die Informationen des API-Users den wir in Magento angelegt haben)

Hier kann dann auch angegeben werden, ob RealUrl automatisch aktiviert werden soll. Dies funktioniert jedoch nur, wenn Auto-Conf von RealUrl aktiviert und richtig konfiguriert ist.

Konfiguration für das TYPO3 Frontend

Um die von Typogento benötigten header-informationen einzubinden, tragen wir im Roottemplate der Shopseite folgendes TS ein:

includeLibs.user_tx_fbmagento_pi1 = EXT:fb_magento/pi1/class.tx_fbmagento_pi1.php
page.headerData.30 = USER_INT
page.headerData.30 {
userFunc = tx_fbmagento_pi1->main
block=typo3header
}

Prinzipiell sollte unsere Webseite in der Lage sein, nun Produkte aus dem Magento-Shop einzubinden.Bestellungen werden zu diesem Zeitpunkt noch nicht funktionieren.

 

Bilder im Bereich Produktdetails klickbar machen

Out of the box passiert beim klicken auf ein (weiteres) Bild in der Detailansicht eines Produktes, dass dieses Bild in einem neuen Fenster geöffnet wird. Das funktioniert auch, nur leider wird die komplette TYPO3 Seite um das Bild gelegt. 

Folgendes TS sollte das beheben:


[userFunc = tx_fbmagento_getvars(route|catalog)] && [userFunc = tx_fbmagento_getvars(controller|product)] && [userFunc = tx_fbmagento_getvars(action|gallery)]

page.10 >
page.10 = USER_INT

page.10 {
    userFunc = tx_fbmagento_pi1->main
    block=content
    route=catalog
    controller=products
    action=gallery
    nowrap=1
  }

[global]

Bei diesem TS ist zu beachten, dass hier das Objekt page.10 überschrieben wird. Wird ein anderes Objekt zum rendern der Seite verwendet (z.B. seite.5) muss dieses überschrieben werden.

Das Beispiel verwendet unter page.10 folgendes TS:

page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page

Der obere Schnipsel bewirkt, dass das hier verwendete TemplaVoila (zum Seiten rendern) nicht verwendet wird, wenn die Variablen (shop/catalog/action) gesetzt sind. Statt dessen, wird der entsprechende Block von Magento verwendet.

Einbinden von Blöcken aus Magento

Die TYPO3 Extension sollte in der Lage sein alle Blöcke aus Magento einzubinden. Wir werden das hier am Beispiel der Blocks „right“ demonstrieren. Der Block „right“ muss derzeit auch auf allen Seiten des Shops eingebunden werden da er ein für den Bestellprozess nötiges JS zur Verfügung stellt.
Wer mit der „normalen“ (alten) Template-Variante arbeitet kann diesen Block einfach in einen subpart einbinden. Das funktioniert mit dem folgenden TypoScript:

page.10.subparts.contentright = USER_INT
page.10.subparts.contentright {
      userFunc = tx_fbmagento_pi1->main
      block=right
      nowrap=1
    }


Hiermit wird nun der Subpart „contentright“ gefüllt.
Benutzt man TemplaVoila kann man einfach einen Bereich des Templates mit einem Element von Typ „include Typoscriptobjekt“ mappen und als lib z.B. fogenden Code angeben:


lib.contentright = USER_INT
lib.contentright {
      userFunc = tx_fbmagento_pi1->main
      block=right
      nowrap=1
    }


Standardmäßig werden von Magento verschiedene Elemente in den Block „right“ eingebunden. Diese kann man natürlich anpassen, jedoch muss der Teil, der für den Bestellablauf vorgesehen ist, eingebunden werden.
Eine weitere Bedingung ist, dass dieser Block „right“ in einem Div-Container mit der Klasse class=“ <div class=“col-right side-col“> “ liegt. Entweder platziert man den Subpart in diesem Container oder man baut Ihn in das TypoScript mit ein. Folgender Code bindet den Block inklusive dem zugehörigen Container ein. Verwendet wird ein COA:

Old Fashioned Templating:
page.10.subparts.contentright = COA
page.10.subparts.contentright {
10 = TEXT
10.value = <div class="col-right side-col">
20 = USER_INT
20{
userFunc = tx_fbmagento_pi1->main
block=right
nowrap=1
}
30 = TEXT
30.value = </div>
}


Templavoila Variante:
lib.contentright = COA
lib.contentright{
10 = TEXT
10.value = <div class="col-right side-col">
20 = USER_INT
20{
userFunc = tx_fbmagento_pi1->main
block=right
nowrap=1
}
30 = TEXT
30.value = </div>
}

Einbinden des Blocks top.links

Möchte man die Links "Mein Benutzerkonto | Mein Warenkorb | Zur Kasse | Anmelden" in sein Template einbinden kann man auch das per TS tun.
lib.toplinks = USER_INT
lib.toplinks{
    userFunc = tx_fbmagento_pi1->main
    block=top.links
    nowrap=1
}

Magento-Shop Frontend Plugin in TYPO3

Es gibt zwei Modelle, wie man den Magento-Shop in TYPO3 einbinden kann. In Modell Eins werden sowohl die Kategorien (wahlweise auch nur teile davon) als auch die jeweiligen Produktübersichten und Produktdetails eingebunden. Dieses Modell ist wohl das meist verwendete. Kategorisierung und das Pflegen der Produkte sowie deren Inhalte werden komplett über die Magento-Administration erledigt.

  
Das zweite Modell ist, dass nur einzelne Produkte in TYPO3 eingebunden werden. So wird quasi für jedes Produkt eine eigene Seite in TYPO3 angelegt und u.a. die Produkte eingebunden. Dies ist bei einer geringen Produktanzahl dann zu empfehlen, wenn man z.B. neben den Produkten noch Produktspezifische Inhalte für jedes Produkt einzeln präsentieren möchte. Diese Inhalte können dann per TYPO3 eingebunden werden, ohne dass sich der Redakteur mit der Administration von Magento auskennen muss.

Modell 1 – Einbinden einer Kategorienavigation und erstellen des benötigten Content-Elements für das Frontend

Einbinden einer Kategorienavigation
Man kann über TypoScript auch die komplette Kategorie-Navigation aus Magento einbinden. Dafür sollte man das folgende TypoScript verwenden:
includeLibs.user_tx_fbmagento_navigation = EXT:fb_magento/lib/class.tx_fbmagento_navigation.php
lib.magentonavi = HMENU
lib.magentonavi{ 
      special = userfunction
      special{
      userFunc = user_tx_fbmagento_navigation->categories
      pid=7
      startcategory=3
      }
   expAll = 0
   1 = TMENU
   1 {
      itemArrayProcFunc  = user_tx_fbmagento_navigation->clear
      wrap = <ul style="text-align: left">|</ul>
      noBlur = 1
      expAll = 1
      wrap = <ul id="sub-level1">|</ul>
      NO {
         wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
         }
     }
}


Hier muss die PID unter special auf die Seite gesetzt werden, in welcher magento eingebunden wird. Der Wert „startcategory“ gibt den „Punkt“ an, ab welchem die Kategorien aus Magento eingebunden werden sollen.
Es wird mit diesem TS also die Kategorie-Navigation eingebunden. Damit diese Funktioniert, müssen wir jetzt noch auf der Seite die wir unter special angegeben haben den Plugin platzieren. Hierfür wechseln wir ins Page-Modul und wählen als Inhaltselement den Plugin aus. Im Element selbst, wählen wir Produktliste aus und entscheiden ab welchem Punkt die Produktliste eingebunden werden soll. Sinnvoll wäre hier die gleiche Position die wir in der Kategorie-Navigation gewählt haben.

 

Vorsicht: Wird die Kategorienavigation innerhalt eines COA verwendet, darf die Anweisung includeLibs.user_tx_fbmagento_navigation = EXT:fb_magento/lib/class.tx_fbmagento_navigation.php ausserhalb dieses COA plaziert werden!

Sprachen

Nach dem Installieren der Extension in TYPO3 steht einem in TYPO3 beim Anlegen oder Editieren einer weiteren "Website Language" ein neues Feld zur Verfügung. Hier kann man für die jeweilige sprache eine Store-View aus Magento per dropdown angeben. Diese Store-View wird dann der jeweiligen TYPO3 Sprache zugewiesen.

RealUrl

Für diejenigen, die auto-conf verwenden gibt es hier nix zu tun. RealUrl funktioniert out of the box.

Für alle diejenigen die RealUrl anders konfigurieren wollen, hier ein Beispiel:

'postVarSets' => 
array (
'_DEFAULT' =>
array (
'shoparticle' =>
array (
0 =>
array (
'GETvar' => 'tx_fbmagento[shop][s]',
),
),
'shop' =>
array (
0 =>
array (
'GETvar' => 'tx_fbmagento[shop][route]',
),
1 =>
array (
'GETvar' => 'tx_fbmagento[shop][controller]',
),
2 =>
array (
'GETvar' => 'tx_fbmagento[shop][action]',
),
3 =>
array (
'GETvar' => 'tx_fbmagento[shop][id]',
'userFunc' => 'EXT:fbmagento/lib/class.tx_fbmagento_realurl.php:&tx_fbmagento_realurl->idRewrite',
),
4 =>
array (
'GETvar' => 'tx_fbmagento[shop][category]',
'userFunc' => 'EXT:fbmagento/lib/class.tx_fbmagento_realurl.php:&tx_fbmagento_realurl->categoryRewrite',
),
5 =>
array (
'GETvar' => 'tx_fbmagento[shop][product]',
),
),
'shoppage' =>
array (
0 =>
array (
'GETvar' => 'tx_fbmagento[shop][p]',
),
1 =>
array (
'GETvar' => 'tx_fbmagento[shop][order]',
),
2 =>
array (
'GETvar' => 'tx_fbmagento[shop][dir]',
),
),

Fragen?

Falls Ihr Fragen oder Anregungen habt, freuen wir uns über jegliche Rückmeldung. Bitte schickt uns einfach eine Email an docu(at)typogento.com.