Wie in einigen vorherigen Posts angedeutet nutze ich Contenido
sehr intensiv für Kunden. Ich arbeite dabei in größeren Netz-
werken, bestehend aus Designern, HTML-Layoutern und Programmierern.
Ich persönlich finde die Struktur und das Prinzip von Contenido
gut. Es erfüllt für mich die Dinge, die ich primär erwarte. Das
sind: Struktur, Benutzerverwaltung, Internationalisierung und
die Bereitstellung von Schnittstellen. Fertige Lösungen sind für
mich eher sekundär. Daher nutze ich Contenido auch für sehr
komplexe Anwendungen. Ich habe in den letzten Monaten Glossare,
Gästebücher, Foren und sogar komplexe Shops damit realisiert.
Ich habe mal einige Dinge, die mir aufgefallen sind gesammelt und
möchte diese nun schreiben. Für alle Lesefaulen wird das jetzt
hart werden.
----------------------------------------------------------------
1. Plugins.
Kürzlich habe ich mir das Blog-System bblog installiert. Das
System stellt an verschiedenen Stellen im Skript sogenannte
"Hooks" (deutsch: Haken) zur Verfügung, wo Plugins ansetzen
können.
Toll wäre es, wenn es im Contenido an allen relevanten Stellen,
d.h. Navigationen, Sub-Navigationen und Innereien "Hooks" gebe,
wo Plugins ansetzen könnten. Dann könnte man in der Kopf-
Navigation beispielsweise das "Newsletter-Plugin" einbetten.
Der Benutzer hätte aber auch die Möglichkeit, ein anderes
"Newsletter-Plugin" zu nutzen.
Ich persönlich finde, das das Newsletter-Modul im
krassen Gegensatz zur sonstigen Struktur von Contenido steht,
da es entgegen der sonst eher abstrakten Struktur von Contenido
doch sehr "konkret" wird.
Darüberhinaus finde ich den FCKeditor ungeschlagen. Unsere Kunden
sind ganz begeistert. Wäre toll, wenn der WYSIWYG über Plugins
gelöst wäre.
Bei bblog ist das so gelöst, das es einen zentralen /plugins-
Ordner gibt, in dem alle Plugins als .php enthalten sind. Jeder
Hook bekommt einen Namen, beispielsweise "main_navigation".
Jedes Plugin nimmt dann über den Dateinamen direkt Bezug auf
diesen "Hook"-Namen. Ein möglicher Dateiname wäre:
main_navigation.newsletter.php
Das würde den Vorteil bringen, daß man das System nicht dauernd
kompliziert patchen müßte. Diese Patches sind schwierig zu
veröffentlichen. Hinzu kommen dann noch Versionsunterschiede
etc.....
Man könnte die Plugins dann Gruppen-Nutzer-abhängig schalten.
Dann könnte der eine Kunden den tinyMCE und ein anderer den
FCKeditor nutzen. Je nach Geschmack!
Ein bißchen Träumerei: Meine Kunden haben oft Upload-Probleme
mit sehr großen Dateien. Ich hatte überlegt einen VPN-Server
zu installieren. Toll wäre es natürlich, wenn ich diesen
direkt in Contenido über ein von mir entwickeltes Plugin
konfigurieren könnte. Dann könnten alle Kunden auch bequem
und sicher VPN verwenden zum Datei-Upload. *schwärm*
----------------------------------------------------------------
2. smarty template engine.
Ich würde mich offiziell anbieten, Contenido auf die
"smarty template engine" zu portieren. Das bringt Vorteile:
2.1 Weniger und einfachere Templates
2.2 Eine ausgereiftere, perfomantere Engine, die ständig
weiterentwickelt wird
2.3 Eine einfachere Einbindung von Plugins (bblog basiert
auf smarty)
2.4 bessere Verknüpfung mit ebenfalls smarty basierten Systemen,
wie Newslettern, Shops etc.
2.5 Gründe, die ich in Punkt 3 nenne
Ich würde die Umstellung komplett nach Feierabend machen.

----------------------------------------------------------------
3. Templates & I18n
In letzter Zeit schreibe ich immer komplexere Module. Diese
erfordern teilweise die Nutzung von "Templates". Das HTML in die
Module zu schreiben bringt Nachteile:
3.1 Unübersichtlicher, unsauberer Module-Code
3.2 Keine oder erschwerte Internationalisierung
3.3 Probleme mit den Designern, die in meinem Code "wurschteln"
Darüberhinaus finde ich den Contenido-internen Namen
"Styles/Templates" nicht logisch. Templates sind im Normalfall
Inhalte mit Platzhaltern. Ich würde diesen Bereich eher
"Configurations" taufen, da dort ja Layouts mit Modulen
verknüpft und konfiguriert werden.
Man könnte dann einen Bereich "Styles/Templates" ins Leben rufen.
Dort könnten sprachabhängig Templates hinterlegt werden. Diese
könnte man dann später in die Module integrieren:
$template = "CMS_TEMPLATE[1]";
Nun könnte ich mit diesem Template arbeiten. Der Platzhalter
CMS_TEMPLATE[x] würde mit einem sprachabhängigen Template
gefüllt. Die Templates würden unter "Styles/Templates" vom
System automatisch durchnummeriert. Man kann dann einen
lesbaren Namen vergeben, mit Kommentar und Inhalt.
Ähnlich wie bei den Artikeln und Kategorien würde bei der
Erzeugung einer neuen Sprache einfach der "Ur-Inhalt"
einkopiert. Dann könnte man das Template übersetzen.
Ich hätte die Designer vom Hals. Die können sich mit dem Bereich
"Styles/Templates" und "Styles/Styleeditor" beschäftigen. Mein
PHP-Code bliebe unberührt.
Wenn man nun die smarty-template-engine schon integriert hätte,
könnte man in diesen Templates direkt diese Engine nutzen.
Die "Normal-Benutzer" bräuchten diesen Bereich ja nicht nutzen.
Das System würde nicht komplizierter, sondern im Gegenteil eher
mächtiger!
----------------------------------------------------------------
So! Das war es erstmal. Ich hoffe das Ganze ist einigermaßen
verständlich und nachvollziehbar.
Macht weiter so,
Stefan Jelner