[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
OFF-TOPIC: Kommunizierende Module II - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
webseitengeschichten
Beiträge: 12
Registriert: 7. Nov 2009, 19:47
Kontaktdaten: Website

OFF-TOPIC: Kommunizierende Module II

16. Feb 2018, 01:49

Ungeachtet all der aktuellen Entwicklungen bin ich noch gut mit 4.2.1 und einem eigenen Modulsystem unterwegs. - Ein ungewöhnlicher Ansatz, den ich schon vor längerer Zeit beschrieben habe. Da das Ganze jetzt ausgereift ist und wirklich klasse funktioniert, dachte ich, ich stell's nochmal rein:

Mein Ziel war es, ein besonders flexibles und gleichzeitig einfaches System für kleine, textorientierte Websites zu entwickeln. Da ich viel mit Veranstaltungen zu tun hatte, war es mir zudem wichtig, dass ich alles auch per Zeitsteuerung ansprechen kann. Um eine größtmögliche Flexibilität zu erreichen, habe ich die drei Basisfunktionen Überschrift, Text und Bild durch drei verschiedene Module realisiert, die frei miteinander kombiniert werden können. Zudem enthält das Modulsystem zwei Hilfsmodule für die Markierung von Listen-Bereichen (Anfang und Ende). Auf diese Weise lassen sich beliebig kleine Abschnitte – wie z. B. einzelne Listenpunkte – über je ein Modul ausgeben und unabhängig über die Zeitsteuerung ein- und ausblenden.

Damit trotz dieser feinen Aufteilung passgenauer HTML-Code herauskommt, können meine Module miteinander „kommunizieren“: Sie erkennen den Kontext in dem sie stehen, reagieren darauf entsprechend und geben ihrerseits Informationen an nachfolgende Module weiter. Ein Text-Block z. B. „erkennt“, wenn er innerhalb einer Liste steht und gibt dann den eingegebenen Text z. B. als einzelnen Listenpunkt anstelle eines Absatzes aus. Zudem setzt er eine Variable, durch die das Modul am Ende der Liste „weiß“, dass die Liste Listenpunkte enthält; also nicht leer ist. Wird der Text-Block hingegen über die Zeitsteuerung deaktiviert, verhält er sich passiv. Nach dem gleichen Prinzip wird ein Text, der direkt auf ein Bild folgt, mit einer anderen CSS-Klasse ausgegeben, als ein Text hinter einer Überschrift. Ein Bild, das über CSS „gefloatet“ ist, gibt diese Information an nachfolgende Module weiter, welche ihre Ausgabe entsprechend anpassen. Folgt z. B. ein Text, stellt dieser über ein „div“-Element mit der CSS-Eigenschaft „clear“ den normalen Elementfluss wieder her. Tatsächlich lassen sich so alle Module beliebig und fehlerfrei miteinander kombinieren und unabhängig voneinander über die Zeitsteuerung ansprechen. Zudem hat sich das Prinzip der „kommunizierenden Module“ auch dafür bewährt, um mehrere Module zu funktionalen Einheiten – wie z. B. Abschnitten (sections) – zusammenzufügen und über das Startmodul gesammelt anzusprechen.

Damit die Performance nicht unter der größeren Anzahl an Blöcken leidet, werden alle Nutzer-Eingaben bereits vor der Modul-Ausgabe über entsprechende Aktionen in fertige HTML-Bausteine umgewandelt. Eine sorgfältige Überprüfung und Verarbeitung der Daten aus der Eingabe sorgt dabei für eine hohe Sicherheit bei der Einhaltung von (HTML-)Standards sowie eine hohe Fehlerfreundlichkeit gegenüber Nutzereingaben. Eine weitere Besonderheit ist das Text-Modul auf Textile-Basis, welches die umfangreichen Funktionen von Textile unter anderem um das Erkennen von URLs und E-Mail-Adressen erweitert und das direkte Einfügen von HTML-Code ermöglicht.

Mein System ist wirklich sorgfältig programmiert. Da man damit kaum etwas falsch machen kann und es mit einem sehr überschaubaren Funktionsumfang auskommt, eignet es sich für Nutzer mit wenig PC-Erfahrung. Gleichzeitig ermöglicht insbesondere das Text-Modul erfahrenen Nutzern über die Textile-Funktion sowie die Direkteingabe von HTML eine große Flexibilität bei der Gestaltung jeder einzelnen Webseite.

Hier einige Screenshots, die die Arbeitsweise meines Modulsystems veranschaulichen.

In der Praxis hat sich die Zeitsteuerung für mich als sehr hilfreich erwiesen: Ich stelle die Veranstaltungen, die meine Kundin mir schickt, einmalig online und muss mich erst dann wieder um die Website kümmern, wenn sie sich mit neuen Veranstaltungen bei mir meldet. Ein Vorteil des Systems ist auch die hohe Performance des von mir optimierten Frontend-Kerns und der insgesamt sehr geringe Resourcenbedarf: Im Pingdom Speed Test hat das CMS – z. B. bei der Ausgabe einer Seite mit 40 Blöcken – einen Anteil von lediglich 40 % (ca. 40 ms) an der Wartezeit des Clients auf die Serverantwort ("WAIT" = ca. 100 ms; getestet von Stockholm) und unterscheidet sich damit kaum von einer statischen Website (Die gleiche Seite als statisches HTML hat einen Wert für "WAIT" von ca. 60 ms.) [ * ][ ** ]. Zudem ist das System PHP 7.1-kompatibel und ich muss mich natürlich auch nicht um das Einspielen von Updates kümmern.

Sollte sich jemand für mein Modulsystem interessieren, kann er oder sie sich gerne an mich wenden. Ich lese gerne auch sonstige Rückmeldungen.

Viele Grüße an die REDAXO-Community,

Michael

[ * ] Die jeweils gemessenen Werte sind von der aktuellen Auslastung der Server abhängig.
[ ** ] Seit kurzem verfügt das System über einen Seitencache, der jede Seite einmal täglich beim ersten Aufruf in einem Cache-Ordner hinterlegt. Ein 3 kB großes Cache-Skript erledigt dann für den Rest des Tages die Auslieferung der gecachten Seite ohne, dass das CMS überhaupt erst geladen wird. Durch dieses einfache Cache-System ist die Seiten-Performance natürlich völlig unabhängig von der Anzahl der pro Seite verwendeten Blöcke ("WAIT" = ca. 60 ms für alle Seiten) und ich konnte mit „Pingdom“ keinen Unterschied zu rein-statischen Seiten messen. – Ein CMS muss also nicht zwangläufig die Performance beeinträchtigen.
Zuletzt geändert von webseitengeschichten am 26. Apr 2018, 01:34, insgesamt 67-mal geändert.

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

Re: OFF-TOPIC: Kommunizierende Module II

16. Feb 2018, 18:10

Wie kann es sein, dass 4.2.1 mit PHP 7.1 läuft?

Benutzeravatar
webseitengeschichten
Beiträge: 12
Registriert: 7. Nov 2009, 19:47
Kontaktdaten: Website

Re: OFF-TOPIC: Kommunizierende Module II

16. Feb 2018, 20:11

Wie kann es sein, dass 4.2.1 mit PHP 7.1 läuft?

Ich wollte von PHP 5 unabhängig sein, hatte Lust zu programmieren und habe mir die Zeit genommen, um alles auf PHP 7 umzustellen.

Da meine Module nicht mit REX5 kompatibel sind und ich bereits einiges im 4.2.1-Core angepasst hatte, war es einfacher, das mir vertraute System Schritt für Schritt zu überarbeiten, als das Ganze komplett neu in 4.7 umzusetzen. Die Umstellung auf PHP 7 war auf diese Weise ein eher kleiner und überschaubarer Teil - gemessen an dem, was ich da bis dahin schon an Zeit und Energie reingesteckt hatte. In der Regel tauchen zwei oder drei Arten von Fehlern massiv auf; dann ist da noch die Umstellung auf MySQLi und das wars im Großen und Ganzen. Wo ich selbst nicht weitergekommen bin, konnte ich Code aus 4.7.2 verwenden. Am Ende war ich dann doch positiv überrascht, dass plötzlich alles wieder funktionierte :).

Joachim.Dörr
Beiträge: 1403
Registriert: 7. Apr 2006, 01:49
Kontaktdaten: ICQ Website

Re: OFF-TOPIC: Kommunizierende Module II

17. Apr 2018, 12:38

Hast du schonmal mit MBlock gearbeitet? Mit MForm in Kombination ist es ohne weites möglich unterschiedliche MBlock-Typen zu definieren. So könntest du mit nur einem Modul dein ganzes System abbilden.
lg
Joachim
Doerr Softwaredevelopment | GitHub
Beati pauperes spiritu.

Zurück zu „Sonstiges“