ZOO - CCK Komponente für Joomla! |
Geschrieben von Tom | ||||||||||
Samstag, 4. April 2009 | ||||||||||
Seite 3 von 8 Die Content Struktur von ZOOAnders als bei Joomla sind bei ZOO beliebig verschachtelbare Kategorien machbar. Man ist also nicht mehr an das limitierte Bereich/Kategorie Prinzip gebunden, sondern kann wenn nötig endlose Baumstrukturen definieren. Die erste Ebene dieser verschachtelten Kategorien heisst bei ZOO Katalog und ist nichts anderes, als eine Root-Kategorie. Die Unterscheidung in Kataloge und sich darin befindende Kategorien hilft beim Templating, ermöglicht ein paar spezielle Funktionalitäten und stimmt irgendwie sentimental, wenn man an die guten alten Bereich/Kategorie Zeiten denkt. Ich fand es ein wenig schade, dass bei der Realisierung der Kategoriestruktur auf Datenbankebene nicht das Nested Sets-Modell genutzt wurde, sondern ein gängiges Adjacency List Model. Wie mir mitgeteilt wurde, haben die Entwickler in einem Testszenario 10.000 Artikel und 1.000 verschachtelte Kategorien ohne Performanceeinbrüche am Laufen gehabt, was wohl am eingebauten Caching lag. Inwieweit sich dies bei der redaktionellen Pflege von hundertausenden von Artikeln im Backend ebenfalls auswirkt, bleibt abzuwarten. Wir haben bei der Realisierung von Kinotraum.de, welches eben solche Artikelmengen beinhaltet, unsere Komponente extrem optimieren müssen, um bei steigendem Datenumfang eine stabile Backendperformance zu gewährleisten. Selbstredend, dass sich in diesen Katalog/Kategorie-Strukturen ZOO-Artikel beliebigen Typs (ZOO Artikeltyps) befinden können. Sie können also (sinnloser Weise) durchaus Artikel des Artikeltyps "Download" in die Kategorie "Ferien auf Helgoland" einordnen. Die Frage ist, was im Frontend dabei rauskommt. Dies nämlich hängt maßgeblich von den zugeordneten Templates bzw. Overrides ab. Und hier hat ZOO einiges zu bieten. Event Handling von ZOOJeder kennt die nützlichen Plugins, welche man bei Joomla! installieren kann, um bestimmte Ergebnisse zu erzielen. Jede Joomla! Installation beinhaltet z. B. das "E-Mail Verschleierungs"-Plugin, welches eine im Artikeltext vorhandede E-Mail-Adresse so umwandelt, dass Spambots sich schwer tun, diese zu erkennen. Solche Plugins gibt es wie Sand am Meer und zu unglaublich vielen Zwecken. Diese können sich an verschiedene Events, welche bei der Erzeugung einer Joomla! Instanz ausgelöst werden, "dranhängen", um Aufgaben durchzuführen. Klare Sache, dass auch ZOO die Event-Architektur von Joomla! nutzt. Allerdings gibt es hier ein paar Sachen zu beachten, wie mir bei der Umsetzung eines Projekts auf ZOO-Basis aufgefallen ist.
ZOO definiert eine eigene
Plugin-Gruppe names...ZOO, wer hätte das gedacht. Wir wollten in einem
ZOO-Artikel durch ein eigens entwickeltes Content-Plugin einige
Operationen an dem Artikeltext vornehmen. Das klappte auch auf Anhieb,
was aber daran lag, dass ZOO bei Elementen des Typs Textarea (nicht
Text!) die Option gegeben wird, Joomla Content Plugins auszuführen. // trigger joomla content plugins if ($this->jplugins) { $this->value = ElementTextarea::triggerContentPlugins($this->value); } Was also tun, wenn man den gesamten ZOO-Artikel etwas umfassender mit einem Plugin, Event-basiert beeinflussen will? Na klar, wir müssen ein ZOO-Event nutzen! ZOO-Plugins wird nämlich nicht nur der gesamte Artikel mit allen Feldern übergeben, sondern auch der aktuelle View. Das sollte für die meisten Anwendungsfälle reichen. Die Events, die wir entdeckt haben, und an die man sich rannhängen kann, heissen
|