Module vs. Erweiterungen - der Unterschied
Ein Modul ist ein kleiner, wiederverwendbarer Baustein, der an einer benannten Position im Theme erscheint (z.B. sidebar, footer_widgets) - eine Erweiterung ist deutlich größer, bringt eigene Seiten, eigene Datenbanktabellen und oft eigene Admin-Bereiche mit.
Ordnerstruktur
repository/modules/MeinModul/
manifest.json
Module.php
templates/default/module.tpl
Ein Modul liefert AUSSCHLIESSLICH Daten über getViewData() - niemals HTML direkt. Wie das Modul aussieht, entscheidet immer das Template (templates/default/module.tpl als Fallback, oder eine Theme-eigene Override-Datei module-MeinModul.tpl). Diese Trennung sorgt dafür, dass jedes Theme ein Modul optisch an sich anpassen kann, ohne die Modul-Logik selbst anfassen zu müssen.
Module.php
namespace Modules\MeinModul;
use Nexis\Module\ModuleInterface;
class Module implements ModuleInterface {
public function __construct(private readonly array $config = []) {
}
public function getViewData(): array {
return [
'text' => $config['text'] ?? 'Standardtext',
];
}
public function getName(): string {
return 'Mein Modul';
}
}
templates/default/module.tpl
<div class="nx-card">{$text}</div>
Eigene Admin-Seite für ein Modul (optional)
Braucht ein Modul eine eigene Verwaltungsseite (z.B. um eingegangene Daten anzusehen), zusätzlich ModuleAdminInterface implementieren - dann erscheint automatisch ein eigener Menüpunkt im Admin-Bereich, ganz ohne manifest.json-Eintrag dafür.
Zuweisung zu einer Position
Über den Admin-Bereich unter "Modul-Positionen": Modul-Typ wählen, Zielposition (z.B. sidebar), Konfiguration als JSON, sowie den Anzeige-Modus (auf allen Seiten / nur auf bestimmten / auf allen außer bestimmten).
Vollständiges Beispiel zum Herunterladen
Eine konfigurierbare Hinweisbox - genau das oben gezeigte Muster, real installierbar und getestet.
ExampleModule.zip herunterladen
Hinweis: Wer ein eigenes Modul im NexisCore-Marktplatz veröffentlichen möchte, kann optional eine market.md beilegen und den Schnellupload nutzen, statt das Formular von Hand auszufüllen. Mehr dazu: Schnellupload & market.md →