Module für Zikula bauen - Module erweitern

Zur automatischen Linkerstellung habe ich vor kurzem das Modul AutoLinks erstellt und darüber berichtet.

Nach einer kurzen Zeit der Nutzung habe ich gemerkt, dass mir etwas fehlt.

Kein Problem mit dem ModuleStudio.

Im folgenden Artikel zeige ich Dir, wie Du ein Modul und seine Funktionen weiterentwickelst.


Neue Felder hinzufügen - Was ist zu beachten?

Wenn Du ein neues Feld in Deinem Modul benötigst, erfordert das eine Update-Routine für das Modul.

Doch der Reihe nach.

Als Weiterentwicklung wollte ich die Möglichkeit, einen Titel für einen Link anzulegen und einen Link mit einem * zu versehen.

Das Modell im ModuleStudio habe ich also um 2 Felder erweitert; 'descriptionForLink' für einen Titel(title="") des Links und eine Checkbox 'setAsterisk' für die Option einen * hinzuzufügen. Beide Felder sind optional.

Modell im ModuleStudio

Andere Artikel in dieser Artikelserie


Module für Zikula bauen - So einfach gehts
Module erweitern die Funktionalität Deiner Homepage. Mit Zikula und dem #ModuleStudio#(MOST) ist das... Mehr

Damit das Modul nach dem Hochladen auf den Server ein Update erfordert, habe ich die Version von 1.0.0 auf 1.0.1 erhöht.

Modell im ModuleStudio

Damit man das Setzen des * für einen Link auch in der Übersicht abschalten oder anschalten kann, habe ich außerdem die Option Ajax Umschalter aktiviert.

AutoLinks Ajax Umschalter

Anpassungen nach Generierung

Nach der Generierung des Moduls waren ein paar geringfügige Anpassungen notwendig.

FilterHookProvider - Option setAsterisk checken

Zum einen habe ich den FilterHookProvider ein wenig erweitert. Der erweiterte Code fragt ab, ob beim Link die Option 'setAsterisk' gesetzt ist oder nicht und fügt ggf. das * ein.

Zu sehen im Detail auch auf Github: https://github.com/Portugao/AutoLinks/blob/9dda0a255419c8b67b45b07068bad6a5368fd324/MU/AutoLinksModule/HookProvider/FilterHooksProvider.php#L58

AutoLinks 2 FilterHook 1

Während ich dies schreibe, fällt mir auf, dass ich das ApiInterface von Zikula zum Abrufen von Modulvariablen gar nicht gebraucht habe; na ja, eine gute Übung und vielleicht benötige ich es später doch.

VariableApiInterface von Zikula

Die Variable '$variableApi' wird vorher definiert (siehe: https://github.com/Portugao/AutoLinks/blob/9dda0a255419c8b67b45b07068bad6a5368fd324/MU/AutoLinksModule/HookProvider/FilterHooksProvider.php#L32)

und dann im Constructor eingebaut (siehe: https://github.com/Portugao/AutoLinks/blob/9dda0a255419c8b67b45b07068bad6a5368fd324/MU/AutoLinksModule/HookProvider/FilterHooksProvider.php#L38 ).

Ganz unten wird die Variable dann mit einer Setter Funktion zugewiesen.

Dann habe ich noch das use Statement für das ApiInterface

AutoLinks 2 FilterHook 2

und den Service in der hooks.yml eingefügt.

AutoLinks 2 FilterHook 3

Update auf Version 1.0.1

Da neue Felder ins Modul Einzug gehalten haben, muss beim Update die Datenbank aktualisiert werden.

Durch die Änderung der Version des Moduls wird bei Aufruf des Extension-Moduls ein Schalter zum Update angezeigt, mit dem Hinweis 'Neue Version'.

Für das Update habe ich die Datei 'AutoLinksModuleInstaller.php' überschrieben.

Und zwar die Funktion 'upgrade'.

AutoLinks 2 Installer Update

Die Anweisung im try Block reicht aus, damit Zikula erkennen kann, was sich bzgl. der Felder verändert hat und aktualisiert, wenn notwendig, die Datenbank. Siehe auch: https://github.com/Portugao/AutoLinks/blob/9dda0a255419c8b67b45b07068bad6a5368fd324/MU/AutoLinksModule/AutoLinksModuleInstaller.php#L23

Der Code zum Aktualisieren der Datenbak wird in der Basis Datei 'AbstractAutoLinksModuleInstaller.php' auskommentiert zur Verfügung gestellt, also vom Modulestudio generiert. Diesen brauchte ich nur kopieren und die Kommentierung entfernen.

Wenn man nun den das Upgrade auslöst, wird die Datenbank aktualiert und das Modul ist mit der Version 1.0.1 nutzbar.

Fazit

Die Erweiterung eines Moduls geht mit dem ModuleStudio schnell, da bei Versionsänderung alle relevanten Dateien des Moduls aktualisert werden. Die Funktion 'upgrade' arbeitet mit der switch Anweisung.

Für eine Versionsänderung ist besonders dann nicht viel Aufwand notwendig, wenn keine Modulvariablen hinzukommen.

Bis jetzt kommt AutoLinks ohne eigene Variablen aus. Das kann sich natürlich noch ändern.

Du solltest nun gelernt haben, wie du bei Versionsänderung bzgl. Update vorgehen musst.

Ähnliche Artikel mit entsprechenden Themen


ModuleStudio - Basiswissen - Felder - String und Text
In 2 Tutorials habe ich anhand eines Beispielmoduls (Erweiterung) damit begonnen, zu zeigen, wie mit... Mehr
ModuleStudio - Felder - Datei-Upload, Liste und mehr
Auch im 3. Teil geht es um Felder im ModuleStudio, die ich persönlich immer wieder nutze. Neben dem... Mehr
ModuleStudio - Basiswissen - Felder - Stringfelder
Im 4. Teil meiner Tutorial Serie zu den Feldern im ModuleStudio wird es spezieller. Felder können... Mehr

Kategorien

  • ModuleStudio
  • Module

Erstellung und Aktualisierung

Erstellung
Erstellt von michael.ueberschaer am 27.10.2018, 21:09
Letzte Aktualisierung
Aktualisiert von michael.ueberschaer am 31.10.2018, 16:37
Kategorien im Blog
Werbung


Die neuesten Downloads
  • Bootstrap Standard Theme
    Für Zikula 2.0.11 oder höher - For Zikula 2.0.11 or higher. Dieses Theme ist als...
    Mehr lesen
  • Blogging 1.1.0
    Mehrsprachiges Bloggen - Multilingual blogging
    Mehr lesen
  • AutoLinks 1.0.1
    Automatische Linkerstellung - Automatic link creation
    Mehr lesen
  • Content 5.0.2
    Einige neue Features und Bugfixes. Some new features and bugfixes.
    Mehr lesen
  • Deutsche Übersetzung Core
    Dieser Download beinhaltet die deutsche Übersetzung für alle Versionen aus der Reihe...
    Mehr lesen