Modulaufbau / Modulprogrammierung

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Modulaufbau / Modulprogrammierung

Beitrag von yodatortenboxer » Sa 21. Jul 2012, 18:37

Hallo,

in der Alpha und in der SVN ist im Ordner cms der Ordner modules.
Dieser hat, soweit ich sehen konnte, einen gewissen Grundaufbau:
Ordner mit Name des Moduls, darin dann die Ordner
- css
- image
- js
- lang
- php
- template
und die Datei info.xml

Ist dies der Grundaufbau für die Module ab der 4.9 an den man sich als Programmierer orientieren soll oder ist dies jetzt nur wegen der besseren Entwicklung so?

Falls das der Aufbau ist, wie wird dann das Modul verarbeitet?
Werden die Dateien aus css, image, js dann automatisch aus dem Modulordner im Layout eingebunden?
Die CSS-Dateien könnte man dann aber nicht über den internen CSS-Editor bearbeiten, oder wird das hier dann noch eingebunden?
Wie ist das dann mit den JS-Dateien?
Wenn zum Beispiel ein Modul jQuery Version 1.3 und ein anderes 1.7 einbindet, wären dann theoretisch beide Dateien geladen?
Das könnte in einigen Sachen Probleme bereiten.

Wie soll es hier also ablaufen? Wie ist es geplant?

Schöne Grüße von Usedom
Ralf
Schöne Grüße von Usedom
Ralf

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Modulaufbau / Modulprogrammierung

Beitrag von xmurrix » Mo 23. Jul 2012, 22:34

Hallo yodatortenboxer,

Code: Alles auswählen

...Ist dies der Grundaufbau für die Module ab der 4.9 an den man sich als Programmierer orientieren soll oder ist dies jetzt nur wegen der besseren Entwicklung so?
Sehr wahrscheinlich wird das so bleiben. Zum einen ist die Entwicklung besser (Editiren von Modulen direkt in der IDE und Versionierung) und zum anderen ist das die vorgegebene Struktur.

Code: Alles auswählen

...Falls das der Aufbau ist, wie wird dann das Modul verarbeitet?...
Genauso wie früher, nur dass der Code nun aus dem Dateisystem kommt, anstatt aus der Datenbank.

Code: Alles auswählen

...Werden die Dateien aus css, image, js dann automatisch aus dem Modulordner im Layout eingebunden?...
Beim Generieren des Codes der Seite werden alle CSS- JS-Dateien ausgelesen und in den head-Bereich der Ausgabe eingebunden. Bilder in Modulverzeichnissen sollten regulär referenziert werden, also src="modules/myModuleName/image/foobar.png".

Code: Alles auswählen

...Die CSS-Dateien könnte man dann aber nicht über den internen CSS-Editor bearbeiten, oder wird das hier dann noch eingebunden?...
Es gibt im Backend dann im Modulbereich entsprechende Reiter zum Bearbeiten von CSS- JS-Dateien der Module.

Code: Alles auswählen

...Wie ist das dann mit den JS-Dateien?
Wenn zum Beispiel ein Modul jQuery Version 1.3 und ein anderes 1.7 einbindet, wären dann theoretisch beide Dateien geladen?
Das könnte in einigen Sachen Probleme bereiten....
Das ist richtig. CONTENIDO kümmert sich nicht darum, ob mehrere Module verschiedene/gleiche Versionen von JS Libraries/Frameworks einbinden. Das ist dann die Aufgabe des Administrators oder des Modulentwicklers. Man kann z. B. jQuery & Co nur dann laden, wenn es vorher nicht geladen wurde. Diese Arbeit lässt sich sehr schwer automatisieren, man muss sich also selber darum kümmern, dass verschiedene Module miteinander funktionieren.

Code: Alles auswählen

...Wie soll es hier also ablaufen? Wie ist es geplant?...
Bezieht sich die Frage auf das Auflösen von Abhängigkeiten in Scripten?

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Re: Modulaufbau / Modulprogrammierung

Beitrag von yodatortenboxer » Di 24. Jul 2012, 07:32

Hallo xmurrix,
Bezieht sich die Frage auf das Auflösen von Abhängigkeiten in Scripten?
Yep, und danke für die ausführlichen Antworten.

Da ich verschiedene spezielle Module und Plugins für Kunden umgesetzt habe, ist es für mich jetzt schon wichtig, den neuen Modulaufbau zu verstehen.
Immerhin muss ich dann diese Module eventuell umprogrammieren.
Neue Module kann ich dann gleich so umsetzen, das sie später sehr schnell in der neuen Version und vieleicht sogar alten Version funktionieren.

Was ist mit "class"/"function"-Dateien die momentan zum Beispiel in den Includes Ordner kommen/liegen?
Ist hier ebenfalls ein Ordner im Modulordner vorgesehen oder kann man dies individuell, also entweder in den includes oder in den Modulordner hinterlegen.
Aktuell können diese ja per

Code: Alles auswählen

cInclude("frontend", "includes/function.name.php");

eingeladen werden.
Würde hier dann auch ein

Code: Alles auswählen

cInclude("frontend", "modules/modulname/function.name.php");
funktionieren?

Gruß Ralf
Schöne Grüße von Usedom
Ralf

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Modulaufbau / Modulprogrammierung

Beitrag von xmurrix » Di 24. Jul 2012, 13:57

...Was ist mit "class"/"function"-Dateien die momentan zum Beispiel in den Includes Ordner kommen/liegen?...
Soweit mir bekannt ist, wurde dies noch nicht festgelegt, kann mir vorstellen, dass z. B. alle PHP-Scripte in den Ordner "php" reinkommen. Der "php" Ordner könnte also folgendermaßen aussehen:

Code: Alles auswählen

php
    myModule_input.php
    myModule_output.php
    includes
        myModule.functions.php
        myModule.other_functions.php
    classes
        class.myModuleFoo.php
        class.myModuleBar.php
Zusätzliche PHP-Scripte in Modulen können dann folgendermaßen eingebunden werden:

Code: Alles auswählen

cInclude('module', 'includes/myModule.functions.php');
cInclude('module', 'classes/class.myModuleFoo.php');
Das System weiß dann, welches Modul gerade ausgeführt wird, und kann den include-Pfad zur Laufzeit ermitteln.

Ein Sonderfall sind fest angegebene Pfadanaben zu Bildern oder anderen Recourcen im Modulcode oder in Templates. Falls die User das Modul umbenennen, das machen sie gerne und öfters, sind diese Pfade dann nicht mehr gültig...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Antworten