© svetabelaya/Shutterstock.com
Modulentwicklung mit dem OXID-Shop

Next Level für das Shoppingvergnügen


Im ersten Teil der Kurzreihe zu OXID Version 6 haben wir die Neuerungen des Shoppingsystems kennen gelernt und den OXID-Shop Version 6 installiert. In diesem Teil der Kurzreihe tauchen wir in die Modulentwicklung mit dem OXID-Shop ein. Wir entwickeln unser erstes Modul und lernen die dazugehörigen Grundlagen kennen.

Das Modul, das wir entwickeln werden, soll ein Badge an einem Artikel auf der Kategorie „Seite“ sowie auf der Artikeldetailseite anzeigen. Dazu müssen wir das Artikelmodell erweitern, eine Möglichkeit zur Auswahl am Artikel im Admin Backend einbauen, um den Badge auszuwählen und eine Modulkonfiguration erstellen, in der wir die Badges hinterlegen. Zu guter Letzt passen wir die Templates im Frontend an und erweitern diese mit der Ausgabe der Badges.

Verzeichnisstruktur

Als Allererstes legen wir unseren Vendor-Ordner und den Ordner des Moduls im Verzeichnis /source/modules an. Wir nennen unsere Ordner phpmag/badges. Wobei phpmag das Akronym des Modulherstellers und badges der Name des Ordners ist, der die Dateien des Moduls beinhaltet (Abb. 1). Jeder Modulhersteller kann sein Akronym auf https://oxidforge.org [1] hinterlegen und dort auch andere Modulhersteller identifizieren. Damit das Vendor-Verzeichnis korrekt funktioniert, müssen wir eine Datei im Ordner phpmag erstellen. Diese Datei heißt vendormetadata.php – der Inhalt dieser Datei ist sehr kurz. Es muss lediglich die Variable $sVendorMetadata gesetzt werden (Listing 1).

bauer_oxid_1.tif_fmt1.jpgAbb. 1: Verzeichnisstruktur

Listing 1: „vendormetadata.php“

 <?php /**  * Metadata version  */ $sVendorMetadataVersion = '1.0';

Einrichtung der „metadata.php“

Zunächst benötigen wir für unser Modul die metadata.php. Im ersten Teil der Kurzreihe haben wir bereits einige Details zur metadata.php erhalten. In dieser Datei geben wir Informationen zu unserem Modul sowie technische Verweise an – die Datei ist sozusagen das Herzstück des Moduls. Unser Modul erhält die ID phpmag_badges, diese wird für die interne Benutzung durch das Framework benötigt.

Wir geben dem Modul einen Titel und eine Beschreibung auf Deutsch sowie auf Englisch. Zusätzlich können weitere Informationen zum Autor, der Version und ein Thumbnail für das Admin-Backend hinterlegt werden (Listing 2).

Listing 2: „metadata.php“-Grundversion

<?php $sMetadataVersion = '2.0'; $aModule = [  'id' => 'phpmag_badges',  'title'  => [  'de' => 'PHP-Magazin :: Artikel-Badges',  'en' => 'PHP-Magazin :: Article-Badges',  ],  'description' => [  'de' => 'Anzeige eines Artikel-Badges auf der Kategorie und Detailseite',  'en' => 'Display of an article badge on the category and detail page',  ],  'version' => '1.0',  'author' => 'Code.Commerce - Christopher Bauer',  'email' => 'info@codecommerce.de',  'url' => 'http://www.codecommerce.de',  'thumbnail' => '../logo.jpg', ];

Wenn wir die metadata.php richtig eingerichtet haben, sehen wir das Modul im Admin-Backend unter dem Menüpunkt Erweiterungen | Module (Abb. 2). Im Reiter Stamm stehen die eingetragenen Informationen aus der metadata.php. Als Nächstes müssen wir Composer einrichten, damit wir den Namespace verwenden können.

bauer_oxid_2.tif_fmt1.jpgAbb. 2: Modul im Admin Backend

Einrichtung von Composer

Unser Modul ist zwar bereits auswähl- und aktivierbar, aber aktuell macht es noch nichts. Da OXID in Version 6 mit Composer arbeitet, müssen wir noch Composer und unseren Namespace einrichten.

Für das Modul nutzen wir den Namespace /PhpMagazin/. Wir erweitern die composer.json im Root-Verzeichnis mit einem neuen repositories-Tag, den wir auf unsere composer.json im Modulverzeichnis verweisen, und einem neuen require-Eintrag (Listing 3).

Listing 3: „composer.json repository“/„require“

"require": { ...  "phpmagazin/badges": "*", ... }, ... "repositories": { "phpmagazin/badges": { "type": "path", "url": "./source/modules/phpmag/badges" } }

Die composer.json in unserem Modulverzeichnis erhält Informationen zu unserem Namespace und dem Modul (Listing 4). Abschließend führen wir auf dem Terminal im Root-Verzeichnis den Befehl composer update aus, um Composer das neue Modul bekannt zu machen.

Listing 4: Modul „composer.json“

{ "name": "phpmagazin/badges", "description": "Anzeige eines Artikel-Badges auf der Kategorie und Detailseite", "type": "oxideshop-module", "keywords": ["oxid", "modules", "eShop", "PhpMagazin"], "homepage": "https://www.codecommerce.de", "license": [ "MIT" ], "autoload": { "psr-4": { "PhpMagazin\\Badges\\": "../../../source/modules/phpmag/badges" } }, "minimum-stability": "dev", "prefer-stable": true, "extra": { "oxideshop": { "target-directory": "phpmag/badges" }  } }

Moduleinstellungen einrichten

Damit wir mehrere Badges für unseren Artikel auswählen können, müssen wir diese...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang