Das Örtchen RSS-Feed
Kategorie
Kategorie: Blog
Buttons & Statistiken
Neueste Kommentare

Drupal: Taxonomy-Theming-Problem nach Modul-Updates

Anfang dieser Woche hatte ich endlich etwas Zeit, um die längst überfälligen Sicherheits-Updates (Drupal-Core und Module) durchzuführen. Im Zuge dessen habe ich dann gleich alles auf einen aktuellen Stand gebracht, was die Aktualisierung von 18 Modulen und Drupal selbst bedeutete. Zunächst schien auch alles problemlos geklappt zu haben, doch dann musste ich ein Problem mit dem Theming meiner Taxonomy-Seiten feststellen.

Das Problem

Ich versuche auf allen Seiten dieses Blogs die Beiträge und Kommentare in abgerundeten Boxen mit wechselnden Hintergrundfarben darzustellen. Dies war nach den Updates auf den Taxonomy-Übersichtsseiten (beispielswiese für das Tag Drupal) plötzlich nicht mehr der Fall.

Leider hatte ich keine Ahnung mehr, wie ich das betreffende Theming umgesetzt habe, weswegen ich zunächst einmal meinen Code analysierte. Die Überprüfung ergab schnell, daß im HTML-Quelltext kein Element mehr vorhanden war, welches mittels CSS zu einer Box formatierbar gewesen wäre. Auf der Suche nach dem hierfür benötigten Hook, befragte ich mal wieder Big G und wurde bei wepopius.com mit nachfolgenden Angaben fündig:

  1. mytheme_taxonomy_term_page()
  2. phptemplate_taxonomy_term_page()
  3. sites/all/themes/custom/mytheme/taxonomy_term_page.tpl.php
  4. theme_taxonomy_term_page()

Nach einem Blick in meine template.php wurde schnell klar, daß ich mich damals für Variante 1 entschieden habe.

function mytheme_taxonomy_term_page($tids, $result) {
    $content = mytheme_taxonomy_render_nodes($result);
    $output = '<div class="node-results">' . $content . '</div>';
    return $output;
}

function mytheme_taxonomy_render_nodes($result) {
    $output = '';
   
    while ($node = db_fetch_object($result)) {
        $tax_zebra = ($tax_zebra == 'odd') ? 'even' : 'odd';
        $content = node_view(node_load($node->nid), 1); 
        $output .= '<div class="' . $tax_zebra . '">' . $content . '</div>';
        $has_rows = TRUE;
    }
    
    if ($has_rows) {
        $output .= theme('pager', array(), variable_get('default_nodes_main', 10), 0);
    } else {
        $output .= '<p>' . t('There are currently no posts in this category.') . '</p>';
    }
    
    return $output;
}

Hierdurch würde die gesamte Ausgabe aller Nodes mit einem div-Tag umschlossen und jeder einzelne Node mit einem weiteren div-Tag. Jedoch tauchte keines der beiden Tags mehr in meinem aktuellen HTML-Quelltext auf.

Die Lösung

Die weitere Recherche mit Big G und dem korrekten Namen des verwendeten Hooks ergab dann schnell eine Lösung für das Taxonomy-Theming-Problem.

Im Code des aktuellen i18n-Updates 6.x-1.7 wird somit nicht mehr der Theming-Hook taxonomy_term_page überschrieben, sondern stattdessen der neue Hook i18ntaxonomy_term_page definiert.

Der alte Hook ist in einem i18n-Umfeld nun komplett ohne Funktion!

Fazit

Eine solche Änderung hätte ich niemals in einem normalen Update erwartet und wäre auch nie auf die Idee gekommen, daß i18n Auswirkungen auf das Theming hat.

Korrekterweise muss ich jedoch zugeben, daß die Änderung durchaus im Changelog der Version 1.6 erwähnt wurde, welche ich jedoch dummerweise komplett übersprungen habe.

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.

Neuen Kommentar schreiben

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als rel="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, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne HTML-Tag in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.