Joomla ist ein Open Source Content Management System. Open Source (dt. offene Quelle) bedeutet, dass der Quellcode öffentlich zugänglich ist und von jedem verändert und weiterentwickelt werden darf, ohne dass es Probleme mit Lizenzen gibt.
Die zurzeit aktuelle Version von Joomla ist die 1.5. Parallel zu regelmäßigen Updates für diese Version wird an der Nachfolgeversion 1.6 gearbeitet, die zusätzlich zum alten Funktionalitätsumfang einige neue Funktionen mitbringen wird. Dazu gehört z.B. eine deutlich verbesserte und im Vergleich zur Version 1.5 detailiertere Userverwaltung, verschachtelbare Kategorien, neue Views in einigen Komponenten, neue Module und vieles mehr.
In den letzten Wochen haben auch wir an der Entwicklung von Joomla 1.6 mitgearbeitet.
Ein sehr wichtiger Aspekt ist der HTML-Output, also der Code, mit dessen Hilfe die Inhalte einer Website strukturiert und semantisch logisch ausgegeben werden sollen.
Ein Konzept für den Code zu entwickeln ist sehr aufwändig, braucht Zeit und muss vor allem für solch ein Projekt gut durchdacht sein. Es sollte so wenig Code wie möglich, aber so viel wie nötig sein. Überflüssige Elemente sollten entfernt werden, um den Code so schlank wie möglich zu halten um beispielsweise die Ladezeiten so möglichst gering zu halten. Trotzdem muss man den Code so gestalten, dass alle Elemente sinnvoll eingesetzt sind. Dabei muss der Code immer semantisch richtig sein und logisch strukturiert bleiben.
Besonders wichtig sind hier die Zuordnungen der Inhalte zu den einzelnen HTML-Elementen. Wichtige Fragen sind hier: Wie baue ich die Überschriftenstruktur logisch und sinnvoll auf, damit sie die Inhalte korrekt ausgeben und immer in der richtigen hierarchischen Reihenfolge aufeinander folgen (also eine h2 erst auf eine h1 folgt, und eine h3 auf eine h2). Welche Inhalte sollen in Listen oder Definitionslisten ausgegeben werden, bei welchen reicht einfacher Fließtext. Wie wird größtmögliche Zugänglichkeit der Inhalte erlangt. Wie viele divs oder andere HTML-Elemente sind wo nötig um das Layout möglichst flexibel zu halten, aber der Code nicht unnötig groß wird.
Das alles sind Fragen, die man sich immer wieder neu stellen und für jedes Element bzw. verschiedene Inhalte neu beantworten muss. Immer wieder entstehen daher konstruktive Diskussionen über das Für und Wider eines Elementes, man muss abwägen und sich letztlich für eine möglichst sinnvolle Lösung entscheiden.
In der 1.6 wird es keine Layouttabellen mehr geben, weder in den Komponenten noch in den Modulen oder Templates, sodass auf den Einsatz von Template-Overrides wie in der 1.5 verzichtet werden kann, um sauberen semantisch logischen Code auszugeben.
Außerdem wurden in der 1.6 die meisten Klassennamen geändert. Die Klassennamen orientieren sich nun stark an der Funktion des zugehörigen Elementes und sollen selbsterklärender sein, um die Verständlichkeit des Codes zu erhöhen und den Umgang mit ihm zu erleichtern, was zum Beispiel das Stylen mit CSS vereinfachen soll.
Neben dem HTML-Output, hier lag der Schwerpunkt auf der Ausgabe der Inhalte der com_content, haben wir ein Template für die 1.6 entwickelt, um den Code direkt zu testen. Das ist besonders wichtig bei einem solchen Projekt. Auf diese Art und Weise kann man testen, wie flexibel man mit dem Code arbeiten kann, es lassen sich Fehler in der Funktion oder dem Code frühzeitig entdecken und korrigieren. Außerdem merkt man im Einsatz und beim optischen Gestalten mit CSS ob alles so funktioniert, wie es gedacht ist, ob ausreichend Klassen vorhanden sind, ob die Elemente sinnvoll eingesetzt wurden, usw., oder noch Änderungen im Code erforderlich sind, denn mit dem Code sollen ja möglichst viele unterschiedliche Layouts realisiert werden können, ohne dass man mit Overrides arbeiten muss, in denen man zusätzlichen Code einfügen muss.
Auch im Template selber gibt es viele wichtige Dinge zu beachten und Fragen, die man sich stellen muss: Sind die Struktur und der Aufbau des Dokuments semantisch logisch, sind die Modulpositionsnamen sinnvoll und die Module gut positioniert. Bietet die Struktur des Codes ausreichend Flexibilität zum Gestalten. Gibt es keinen überflüssigen Code usw.
In der 1.6 wird es wieder ein Beez-Template, die Beez 2.0, geben. Die neue Beez wird einige Besonderheiten mitbringen: es wird voraussichtlich zwei Gestaltungsvarianten geben, der User kann beim Output zwischen HTML5 und XHTML wählen, die Navigationsspalte lässt sich entweder vor oder nach dem Hauptinhalt positionieren, die Module lassen sich ein- und ausblenden, genauso wie die gesamte rechte Spalte, außerdem lassen sich die Module in zugänglichen Tabs darstellen.
Die neue Beez wird voraussichtlich zwei verschiedene Gestaltungsvarianten mitbringen, zwischen denen man über die Template-Parameter wählen kann. Eine Variante wird nach aktuellem Stand Grün, die andere Schwarz. Ermöglicht wird dies durch eine wohl überlegte Aufteilung des CSS in unterschiedliche Dateien. Während die Positionierung in der position.css zu finden ist, werden alle anderen allgemeinen Befehle in die layout.css geschrieben. Die Informationen für die Farbe werden je in eine separate CSS-Datei geschrieben und nach Auswahl des Styles im Template-Manager im Backend geladen.
Mit dem Beez-Template bekommt der User aber die Möglichkeit beim HTML-Output zwischen XHTML und HTML5 zu wählen, standardmäßig wird das Template mit XHTML ausgegeben. Um HTML5 auszugeben, kommen wieder Overrides zum Einsatz, die sich im HTML-Ordner im Template-Verzeichnis befinden.
Im Template-Manager im Backend kann der User wählen, ob die Navigationsspalte vor oder nach dem Content ausgegeben werden soll. Beide Varianten haben Vor- und Nachteile. Befindet sich der Content vor der Navigationsspalte, hat die Website bei Google einen Vorteil. Wenn man aber nun die Website nur mithilfe der Tastatur besucht, fängt man im Content an zu lesen und geht erst dann z.B. zur Navigation, was das Lesen der Website für Menschen, die keine Maus benutzen können oder auf andere Hilfsmittel angewiesen sind, erschweren könnte.
Platziert man die Navigationsspalte vor dem Content und besucht die Website nur mithilfe der Tastatur, gelangt man zuerst zum Menü und erst danach zum Content.
Die Beez 2.0 bringt die Möglichkeit mit Module ein- bzw. auszuklappen, genauso wie die ganze rechte Spalte. Hierzu wurde zugängliches JavaScript eingebunden, das auch alleine mit der Tastatur und ohne Maus bedient werden kann. Genauso lassen sich Module in Form von Tabs darstellen, die ebenfalls im Sinne der Barrierefreiheit zugänglich und bedienbar sind. Hier wird zusätzlich das sogenannte WAI-ARIA eingesetzt. WAI-ARIA ist die Abkürzung für Accessible Rich Internet Applications der Web Accessibility Initiative. Mit der Hilfe von WAI-ARIA lassen sich Rollen, Zustände und Eigenschaften von Elementen beschreiben, die vor allem Nutzern assistiver Technologien einen großen Nutzen bringen und die Zugänglichkeit für sie steigern. So lässt sich zum Beispiel einer ungeordneten Liste, die als Menü dient die Rolle „navigation“ zuordnen oder einem Element kann der Status „checked“ gegeben werden.
Die Darstellungsformen der Module, sowohl die ein- und ausklappbaren Module, als auch die Darstellung von Modulen in Tabs, wird über das style-Attribut „beezHide“ bzw. „beezTabs“ beim Einbinden der Module in der index.php gesteuert:
Beispiel für ein- und ausblendbare Module:
<jdoc:include type="modules" name="position-4" style="beezHide"
headerLevel="3" state="0 " />
(Das state-Attribut gibt an, ob das Module beim ersten Besuch der Website ein- oder ausgeklappt angezeigt werden soll)
Beispiel für Module in Tabs:
<jdoc:include type="modules" name="position-5" style="beezTabs"
headerLevel="2" id="3" />
(Hier ist die ID besonders wichtig. Für jeden Bereich, in dem Tabs angezeigt werden sollen, muss eine eigene ID definiert werden.)
Die bisher gewohnte Form der Ausgabe lässt sich über das style-Attribut „beezDivision“ aufrufen.
Ein großes Problem beim Einbinden von JavaScript ist allerdings, dass es nach wie vor immer noch viele Menschen in ihrem Browser ausgeschaltet haben. Deshalb wurde besonders darauf geachtet, dass die Inhalte auch korrekt dargestellt werden und zugänglich sind, wenn das JavaScript im Browser deaktiviert ist.
Außerdem enthält dieses Template, ähnlich wie auch schon die Beez in der Version 1.5, Sprungmarken zur Navigation, zum Inhalt und zu den zusätzlichen Informationen, es ist auf ausreichend hohe Farbkontraste geachtet worden und der User kann alleine mit der Tastatur durch die Website navigieren.
