(JQuery ist bei Drupal 6 bereits im Core und muss für die folgenden Arbeiten angeschaltet sein.)

Die Darstellung von Comments in Drupal kann von Haus aus „flat“ oder „collapsed“ sein. Die Einstellung hierfür (und die Möglichkeit, dies für die User freizugeben), wird je Content Type getroffen. Besonders für ein Forum sind beide Optionen beliebt.

Bei „collapsed“ wird dabei ursprünglich nur der Link zum Comment eingefügt – der Comment-Text selbst ist nicht verfügbar. Dies ist in der Core-Datei „comment-folded.tpl.php“ festgelegt. Bei einem Umbau zu JQuery muss dafür Sorge getragen werden, dass die Comments verfügbar sind.

Am einfachsten wird dafür die Datei „comment.tpl.php“ (für flat comments) in die Datei „comment-folded.tpl.php“ umkopiert und als Grundlage für die JQuery-Darstellung genutzt. Das Ziel ist, die einzelnen Comments über slideToggle zwischen collapsed und nicht-collapsed zu schalten.

Änderungen in comment-folded.tpl.php

Am Ende des PHP-Bereichs muss ein eindeutiger Key geliefert werden, damit jeder der Comments einzeln angesprochen werden kann (sonst werden alle auf einmal aufgeklappt). Dieser Key ist idealerweise der $title-Link:
$key = md5($title)

Dann wird der Link entsprechend erweitert, nämlich um einen onclick-Event mit dem jeweiligen Key und einem slideToggle.
<h3 onclick="$('#<?=$key?>').slideToggle()"><?php print $title ?></h3>

Zuletzt wird die div-Class ebenfalls mit dem eindeutigen Key versehen und der Display zunächst auf „none“ gesetzt. print $content wird zu print $comment->comment korrigiert.
<div class="content" id="<?=$key?>" style="display:none">
<?php print $comment->comment ?>

Die Comments werden jetzt als Links ausgegeben, bei deren Klick der Comment angezeigt wird. Die Formatierungen sind allerdings noch nicht korrekt. Dies resultiert aus dem Core-Module „comment.module“, das nicht dafür vorgesehen war, im Fall von collapsed Comments diese auch anzuzeigen. Es wird daher nicht das entsprechenden Markup angewendet.

Änderungen in comment.module

Um dies zu beheben, wird die Zeile 1584
if ($visible) { verschoben, und zwar nach unterhalb der check_markup-Anweisung:
$comment->comment = check_markup($comment->comment, $comment->format, FALSE);
if ($visible) {

Über diese Änderung (jaja, ein Core-Hack :) werden alle Comments nun korrekt formatiert angezeigt.

Tipp: Der ausführliche Inhalt des Comment-Objects $comment kann über die folgende Zeile erhalten werden.
<div style="display:none; border:1px solid black;background-color:#d0d0d0"><pre><? print_r($comment); ?></pre></div>

Share

  One Response to “Drupal – Comments mit JQuery”

  1. Sehr guter Artikel, vielen Dank für die Info. Werde deinen Blog gleich mal weiterempfehlen.

Sorry, the comment form is closed at this time.

   
© 2012 Doku-Hotline Suffusion theme by Sayontan Sinha