Ich schreibe ja immer wieder einmal ein Tutorial, in dem es darum geht, eigene Anpassungen in den OXID Shop zu integrieren. Oft braucht es minimale Anpassungen, die jedoch am saubersten als eigenes Modul umgesetzt werden. Damit ich dann nicht jedes Mal erklären muss, wie so ein Modul aufgebaut sein muss (und Sie vielleicht am Ende noch langweile), habe ich mich entschlossen, einen Grundlagen-Artikel dazu zu verfassen.

Zu diesem Artikel gehört ein „Blanko“ Modul, das Sie sich unten herunterladen und dann als Vorlage für Ihre OXID Anpassungen nutzen können. Ich will hier keine Programmierschulung mit Ihnen machen, sondern ich möchte Sie in die Lage versetzen, die Anpassungen in meinen anderen Blog-Artikeln bei Bedarf selbst einfach und schnell umsetzen zu können. Daher werde ich mich in diesem Artikel auf die nötigsten Anpassungen im Modul beschränken und nicht jeden Schritt erklären.

Nichtsdestotrotz – sollten Sie an einer Stelle Fragen haben, oder nicht weiterkommen, schreiben Sie mir bitte hier im Kommentar. Ich versuche, alle Kommentare zu beantworten, wenn sie nicht zu speziell sind – und hänge gerne bei Bedarf noch den einen oder anderen vertiefenden Artikel an.

Noch ein Tipp vorab, wenn Sie selbst für Ihren Shop hin und wieder minimale Erweiterungen erstellen: Legen Sie sich dafür ein zentrales „Sammel“ Modul an. Denn viele Dinge sind in OXID ja mit der Anpassung von ein, zwei Dateien erledigt. Und dafür dann jedes Mal ein separates Modul zu erstellen, ist nicht nötig.

So, nun geht es aber los.

Schnell-Navigation

Um ein eigenes Modul zu erstellen, müssen Sie verschiedene Dinge wissen – manches ist einfach und man braucht es nur ein-zweimal machen, damit es „sitzt“, wie die Verzeichnisstruktur. Anderes ist komplexer, und man muss immer wieder nachschlagen, wie das jetzt gleich nochmal war, wie die metadata. Daher habe ich den Beitrag in folgende Abschnitte gegliedert, zu denen Sie rasch per Klick hüpfen können.

Vorbereitungen

  1. Entwickeln Sie neue Module grundsätzlich in einem Testsystem. Am besten duplizieren Sie dazu Ihren Shop (mit separater Datenbank). Wir erstellen auch OXID Testsysteme.
  2. Erstellen Sie sicherheitshalber ein Backup von der Datenbank, insbesondere der Datei oxconfig. Hier finden Sie ein kostenloses Backup Modul von uns.

Wichtig – die Modul ID

Jedes Modul benötigt eine eindeutige ID. Diese ID wird Ihnen immer wieder begegnen und Sie müssen Sie wirklich konsequent in Ihrem Modul verwenden, damit alles korrekt geladen wird und keinerlei Konflikte auftreten.

Die ID sollte (um wirklich Fehler zu vermeiden)

  • nur aus Kleinbuchstaben und ggf. einem Unterstrich bestehen,
  • den Shopnamen oder eine Abkürzung dafür enthalten,
  • keine Umlaute oder Sonderzeichen, möglichst auch keine Ziffern verwenden,
  • möglichst maximal 10 – 12 Zeichen (damit Sie die ID auch in allen Dateinamen verwenden können).

Wenn Sie z. B. ein „Sammel“ Modul für diverse Kleinstanpassungen in Ihrem Shop erstellen, und Ihr Shop heißt „Meine Shopurl“, nennen Sie das Modul meineshopurl oder meine_shopurl. Wenn Ihr Modul einen bestimmten Zweck hat, z. B. die Preisberechnung verändert, dann lassen Sie das im Namen ruhig durchklingen, damit Sie es später leichter zuordnen können, also z. B. mshurl_preise (mshurl ist die Abkürzung für Meine Shopurl – ich empfehle, immer ein eigenes Kürzel zu verwenden).

Die Anfangskürzel für Module sind teilweise bestimmten Entwicklern zugeordnet. Aber wenn Sie die Modul ID nach diesen Regeln erstellen (und meine anderen Hinweise zur Namensvergabe von Dateien beachten), dürften keine Namenskonflikte auftreten.

In der Modul-Vorlage, die Sie unten herunterladen können, ersetzen Sie modulid durch Ihre individuelle Modul ID.

Modulverzeichnis

Sie wissen sicherlich, dass Module in OXID eShop im Verzeichnis /modules liegen. Darin gibt es für jedes Modul ein Unterverzeichnis (manchmal ist noch ein Vendorverzeichnis dazwischen, das ist hier aber nicht nötig).

Der Name dieses Verzeichnisses, in das dann alle Modul-Dateien gehören, entspricht exakt (!) Ihrer Modul ID.

Um also bei obigem Beispiel zu bleiben, legen wir ein Verzeichnis /meineshopurl direkt im Verzeichnis /modules an.

Verzeichnisstruktur & Unterverzeichnisse

Innerhalb des Modulverzeichnisses dürfen beliebige Unterverzeichnisse erstellt werden, die vor allem der Gruppierung der verschiedenen Moduldateien dienen. Die Struktur darf dabei nach Lust und Laune erstellt werden – es ist nur wichtig, dass die Pfade in der metadata stimmen (siehe unten).

Einige Regeln sind dabei aber zu beachten:

  1. Die metadata.php muss immer direkt im Modulverzeichnis liegen.
  2. Die menu.xml ebenfalls, falls Sie diese mal brauchen (damit wird das Menü im Administrationsbereich erweitert).
  3. Die Übersetzungsdateien (siehe unten) für den Shop (Frontend) gehören in /translations/de (en, fr usw.)
  4. Die Übersetzungsdateien für den Administrationsbereich (Backend) gehören in /views/admin/de (en, fr usw.)

Da die Struktur für Übersetzungsdateien zwingend ist, finden Sie sowohl für Frontend als auch Backend je eine leere Übersetzungsdatei für Deutsch in der Vorlage. Benennen Sie diese Dateien aber noch um, indem Sie auch hier modulid durch Ihre Modul ID (siehe oben) ersetzen.

metadata.php

Eine zentrale Rolle für die Integration der Module in OXID spielt die metadata.php, die direkt ins Modulverzeichnis gehört. Achtung – Fehler in dieser Datei können zum Shop-Crash führen, daher sollten Sie bei der Erstellung und späteren Änderung dieser Datei besondere Sorgfalt walten lassen.

Ersetzen Sie bei „id“ die Modul ID.

Bei „title“ können Sie einen Modul-Titel angeben, der Ihnen dann in der Modulübersicht angezeigt wird. HTML ist erlaubt.

Bei „description“ können Sie eine etwas längere Modul-Beschreibung angeben, die Ihnen dann für das Modul auf dem Tab „Stamm“ angezeigt wird. Auch hier ist HTML erlaubt.

Bei „extend“ gehören die Klassen-Erweiterungen rein, die Sie für Ihr Modul benötigen.

Alle anderen metadata-Angaben habe ich zur Vereinfachung aus der Vorlage entfernt.

Erweiterungen

Kommen wir zum kompliziertesten Teil der Übung. Ich versuche mal, das einigermaßen allgemeinverständlich zu erklären, ohne Sie mit Details zu langweilen.

Wenn Sie ein Modul für OXID eShop schreiben, dann in aller Regel, um eine oder mehrere der OXID Klassen durch eigene Funktionalitäten zu erweitern. Sie können natürlich auch eigene Klassen erstellen, darauf will ich hier aber nicht eingehen, denn das geht schon zu sehr ans Eingemachte.

Jede Erweiterung, die Sie erstellen, muss in das Array „extend“ in der metadata.php in folgender Form eingetragen werden (Sie können dabei beliebig viele Einträge untereinander anfügen):

"Klassenname-in-OXID" => "Pfad-und-Name-der-Moduldatei-ohne-Endung",

Für die zweite Angabe empfehle ich, die Moduldatei immer so zu bezeichnen, dass der Name aus der Modul ID sowie dem Original Klassennamen in OXID besteht. Der Pfad ist immer relativ zum /modules Ordner gemeint.

Wenn Sie also z. B. die Klasse oxrssfeed (wie in einem meiner nächsten Beiträge) erweitern, dann lautet der Eintrag wie folgt:

"oxrssfeed" => "meineshopurl/meineshopurl_oxrssfeed",

Beachten Sie das Komma am Ende, insbesondere, wenn Sie mehrere Erweiterungen eintragen!

Die erweiternde Datei heißt also meineshopurl_oxrssfeed.php und liegt direkt im Modulverzeichnis. Wenn Sie sie in ein Unterverzeichnis legen, muss dieses natürlich im Pfad mit angegeben werden! Also wenn die Datei im Unterverzeichnis /models liegt:

"oxrssfeed" => "meineshopurl/models/meineshopurl_oxrssfeed",

Die Datei meineshopurl_oxrssfeed.php sieht dann wie folgt aus (die … sind dann durch die eigentliche Erweiterung zu ersetzen):

<?php
class meineshopurl_oxrssfeed extends meineshopurl_oxrssfeed_parent
{
...
}

Dieser Aufbau ist immer gleich, Sie müssen hier nur anstelle von meineshopurl_oxrssfeed (vorn + hinten) Ihren eigenen Dateinamen (ohne Endung) einsetzen.

Übersetzungsdateien

Vorab noch ein Hinweis: Für eigene Module benötigen Sie die Übersetzungsdateien nicht zwingend. Alle Übersetzungen können auch direkt in die cust_lang.php Ihres Themes integriert werden.

Sowohl für den Shop (Frontend) als auch für den Administrationsbereich (Backend) liefere ich Ihnen in der Vorlage bereits eine Beispieldatei. Benennen Sie sie bitte entsprechend Ihrer Modul ID um.

Das Encoding der Datei ist entscheidend, damit später keine Umlautfehler auftreten. Damit Sie prüfen können, ob die Datei im richtigen Encoding geöffnet wurde, habe ich oben in Zeile 3 der Dateien ein paar Umlaute eingefügt. Sehen diese seltsam aus, muss die Datei im richtigen Encoding (hier ISO-8859-15) geöffnet werden. Das können Sie in der Regel in Ihrem Editor einstellen.

Eigene Übersetzungs-Strings können Sie nach folgendem Prinzip anfügen:

...
'charset'       => 'ISO-8859-15',
'STRING_NR_1'   => 'Übersetzung Nr. 1',
'STRING_NR_2'   => 'Übersetzung Nr. 2',
}

Vorlage (Download)

Hier können Sie die Vorlage herunterladen. Bitte beachten Sie unbedingt meine Hinweise, vor allem bezüglich der Modul ID.

Bitte Fragen möglichst hier in die Kommentare schreiben, damit alle etwas von der Antwort haben :) Danke schön – und viel Spaß beim Programmieren.

kostenloses eBook SEO für OXID eShop

10 SEO Tipps für Ihren OXID eShop - kostenlos

Laden Sie sich Ihr kostenloses eBook herunter und optimieren Sie Ihren Shop ganz einfach selbst.

 

Thema: Aus dem Nähkästchen | Stichworte: , , ,