drupal
Die maximale Menütiefe in Drupal ist auf 9 gesetzt. Das kann schnell zuwenig sein, denn z.B. auch das Book-Module/Buch-Modul entleiht viel Code aus dem Menü-Modul. Die Menütiefe auf kleinere Werte zu beschränken ist ganz einfach mit
define(MAX_MENU_DEPTH, 9);
anzupassen. Schwieriger wird es, wenn man einen höheren Wert benötigt, um z.B. tiefer verschachtelte Bücher oder Dokumente mit dem Book-Modul zu erstellen. Hier kommt man um einen Core-Patch nicht herum.
Mal ganz ehrlich: Was soll der Quatsch? Seit Monaten ist die Drupal Community, speziell die Modul-Seiten, voll von dem motivierten Versprechen: "I pledge that [Name des Moduls] will have a full Drupal 7 release on the day that Drupal 7 is released." Das war das riesige Problem beim Wechsel von Drupal 5 auf 6. Selbst 1 Jahr nach dem Release von Drupal 6 waren viele der wirklich wichtigen Drupal Module (wie z.B. XML Sitemap) noch nicht stabil für D6 verfügbar. Produktivseiten auf Drupal 6 zu releasen war quasi unmöglich.
Endlich ist es soweit. Drupal 7 ist seit heute in seiner ersten offiziellen Version da. Vor ca. 1 Jahr kam die erste Alpha Version heraus. Jetzt hat das vermutlich flexibelste und umfangreichste aller Open Source Content Management Systeme es geschafft: http://drupal.org/project/drupal
Alle Entwickler, die mit Aptana arbeiten, haben vermutlich sehr früh die sogenannten Snippets kennengelernt. Auf der Seite timonweb.com findet sich ein Satz toller Drupal Snippets.
Die erste funktionierende Version eines SmartRunner Drupal Moduls ist fertig. Da der Feed, der von SmartRunner zur Verfügung gestellt wird, etwas chaotisch ist, habe ich mit Hilfe des Aggregator-Moduls und Views Formatted Field ein kleines Modul geschrieben, das den Feed ausliest und auf einer eigenen Seite jeweils den Titel und die Streckenkarte anzeigt. Wie immer gibts noch viele Probleme (vor allem mit der Sortierung beim ersten Import), aber funktionieren tut es schon mal. Datei findet ihr im Anhang.
Wie man ein Formular erstellt und wie man dieses dann gestalten kann, war bereits Thema vergangener Artikel. Die Form API stellt aber noch weitere nützliche Funktionen zur Verfügung. Eine davon nennt sich hook_form_alter und kann dafür genutzt werden Tabellen vor ihrem Rendering zu verändern. Das kann nützlich sein, wenn man zwei Module geschrieben hat, wovon Modul A ein Formular bereitstellt und Modul B - wenn aktiviert - dieses Formular verändern oder erweitern soll. Hier ein Beispiel...
Wie man eigene Formulare in Drupal erstellt, wurde in diesem Artikel hier gezeigt. Wenn man in einem Formular aber viele Daten abfragen möchte, kann es Sinn machen das Formular als eine Tabelle darzustellen. Wie man das macht, möchte ich am Beispiel eines Moduls zeigen, das ich vor kurzem programmiert hab: die Iconbar.
Das Views-Modul für Datenbankabfragen zu verwenden kann einige Vorteile haben. Die Datenbankstrukturen in einer Drupal Installation sind nicht immer besonders beständig. Das CCK Modul beispielsweise erstellt oft sehr komische Querverweise und generiert neue Spalten in bereits bestehenden Tabellen. Eine Datenbankabfrage dafür selber zu erstellen wird wahrscheinlich dazu führen, das beim nächsten CCK Update nichts mehr funktioniert. Die Views API hingegen meistert so etwas tadellos. Aber genug um den heißen Brei herum geredet.
Oft kommt man bei der Programmierung von Modulen nicht darum herum, Veränderungen in der Datenbank vorzunehmen. Sei es um Platz für Benutzereingaben zu schaffen, oder um Tabellen zu erstellen die Verbindungen zwischen anderen Inhalten herstellen sollen. Da man es dem Anwender eines Moduls nicht zumuten kann, alle notwendigen Tabellen per Hand zu erstellen, kann man einem Modul eine Installationsdatei hinzufügen, die diese Arbeit übernimmt.
Was wir zuerst brauchen ist ein Taxonomie-Vokabular, in dem unsere Tags gespeichert werden können. Also einfach eins anlegen unter admin/content/taxonomy. Name, Beschreibung, Inhaltstypen sind alle egal. Stellt es so ein, wie ihr es braucht. Unter Einstellungen macht einen Haken bei Tags und Mehrfachauswahl und lasst Erforderlich frei. Wir wollen den Benutzer ja nicht zwingen etwas einzugeben, sondern wollen automatisch Tags hinzufügen, wenn er es nicht tun will oder vergisst.

