Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

Drupal: Better Formats

Drupal steuert über Eingabeformate, welche Textinhalte im Textkörper eines Nodes oder im Textfeld eines Kommentars erlaubt sind. Leider kann man in Drupal 6 nur ein Eingabeformat als Standard festlegen, welches dann überall und für jeden gilt.

Deswegen hatte ich lange Zeit das Modul Filter Default installiert, da mit diesem zumindest die Möglichkeit bestand, den Standard je nach Benutzerrolle zu ändern. Optimal war das Modul jedoch nicht, da nur das wer und nicht das wo bestimmbar ist.

Gevatter Zufall

Im Rahmen meiner regelmäßigen Updates hätte ich gestern das alte Modul aktualisieren müssen und deswegen habe ich mir einmal die Projektseite genauer angesehen. Am Modul selbst hat sich von den Features her nicht wirklich etwas getan, es gab nun jedoch einen Hinweis auf das Modul Better Formats im Text. Mit diesem kann man für jede Benutzerrolle für Nodes, Kommentare und Blöcke separat das Standard-Eingabeformat festlegen.

Der Umstieg selbst war völlig schmerzfrei:

  1. Deinstallation Filter Default
  2. Installation Better Formats 6.x Version 1.2
  3. Umstellung des Standard-Eingabeformats von Drupal (zurück) auf Filtered HTML
  4. Änderung für Nodes/Blöcke und angemeldete Benutzer in der Lasche Standards auf Full HTML
  5. Umstellung der Rollenreihenfolge in derselben Lasche mit der wichtigsten Benutzergruppe oben

Das Problem

Die neuen Features des Moduls funktionierten problemlos, doch leider tauchten in der Auswahl der Eingabeformate nun mehrere eigentlich versteckte Formate wieder auf.

Die Recherche

In meiner Testumgebung (lokales XAMPP) begann ich nun also Better Formats manuell zu debuggen. Ich stellte fest, daß das Modul genauso wie das betroffene Pingback einen speziellen Hook (hook_form_alter) verwendet.

An dieser Stelle verhält sich das Modul jedoch nicht wirklich sauber, da die aufgerufene Funktion better_formats_set_comment_format einen Teil des Kommentarformulars ($form['comment_filter']['format']) komplett neu über einen Aufruf der Funktion filter_formats erstellt (in der Funktion better_formats_filter_form) und hierbei den bisherigen Inhalt nicht berücksichtigt. Dieser Inhalt war jedoch schon durch das Modul Pingback verändert, um das Modul-interne Eingabeformat für anonyme Besucher zu verstecken (was durchs Überschreiben hinfällig war).

Die Lösung V1

Meine erste Lösung sah ein erneutes Ausführen der Hook-Integrationen der anderen Module am Ende der Funktion better_formats_form_alter vor. Dies ist auch durchaus möglich, auch wenn es hierfür keine fertige Funktion in der Drupal API gibt. Nach dem Vorbild der Funktion node_invoke_nodeapi kann man jedoch selbst etwas stricken. Nach der erfolgreichen Implementierung dieser Lösung und Meldung des Problems auf drupal.org störte mich jedoch die Gefahr einer potentiellen Endlosschleife.

Die Lösung V2

Der Modulautor dragonwize deutete in seiner Antwort auf meine Meldung an, daß Hooks abhängig von einem weight-Wert abgearbeitet werden. Eine Recherche mit Big G bestätigte, daß die Hooks abhängig von der Spalte weight in der system-Tabelle der Drupal-Datenbank abgearbeitet werden. Better Formats setzt den Wert derzeit leider fest auf die Zahl 100, besser wäre jedoch eine Festlegung auf Basis der derzeitigen Werte der anderen Module. Genau diese Möglichkeit habe ich mit Big G gefunden und dem Modul-Autor als zweite Lösung vorgeschlagen.

Die Lösung V3

Leider teilte mir dragonwize mit, daß der Wert absichtlich auf 100 gesetzt wurde, da einige andere Module vorher ihre Hooks abarbeiten müssen. Somit bleibt leider nur die Möglichkeit, daß alle betroffenen Module ebenfalls ihre weight anpassen müssen. Deswegen habe ich nun einen Feature Request für das Modul Pingback aufgemacht und hoffe auf eine positive Antwort.

Fazit

Nach diesem Debugging, welches mich mehr als einen halben Nachmittag gekostet hat, bin ich nun äußerst zufrieden mit dem neuen Modul und habe als Übergangslösung mittels phpMyAdmin für das Modul Pingback den Inhalt der weight-Spalte auf 200 gesetzt.

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als nofollow markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!