[gelöst] Kommentarfunktion als Gästebuch verwenden
am 14.08.2013 - 11:16 Uhr in
Hallo,
ein Gästebuch-Modul für D7 gibt es offenbar noch nicht - es wird empfohlen, das mit der Kommentarfunktion zu machen.
Das habe ich so gemacht:
- contentType guestbook angelegt
- davon einen node "Gästebuch" mit aktivierten Kommentaren, Kommentarfelder: Name, Nachricht, - als Menüpunkt eingehängt
- eine custom-template Datei page--guestbook.tpl.php - damit ich die Ausgabe in meinem theme besser unter Kontrolle habe
- eine view guestbook, das mir alle comments vom contentType guestbook ausgibt (die Felder postdate, commentName, commentBody) - mit pager und AJAX aktiviert
- in der page--guestbook.tpl.php die comment-form und die view-Ergebnisliste folgendermaßen eingebaut:
$guestForm = $page['content']['system_main']['nodes'][$node->nid]['comments']['comment_form'];
$guestView = views_get_view('guestbook');
$view = $guestView ->preview('default');
...
<div id="guestForm">
<?php print render($guestForm); ?>
</div>
<div id="guestList">
<?php print $view; ?>
</div>Das funktioniert soweit hervorragend.
Auf der Gästebuch-Seite habe ich das Formular und die vorhandenen Einträge - wenn ich einen neuen Eintrag sende, lande ich auf einer URL wie ../node/68#comment-19, die genauso aufgebaut ist, und der neue Eintrag steht oben als erster in der Liste.
Das Problem:
Das Feld comment_body ist ein Plichtfeld - wenn ich das Formular unausgefüllt sende, lande ich auf einer URL wie ../comment/reply/68, wo mir die comment-form mit entprechendem Fehlerhinweis angezeigt wird, aber nicht mehr die Liste der Einträge.
Außerdem erscheinen in dem Formular die Links "Gästebuch", "neuen Kommentar schreiben" und einer zum user-Profil.
Was bedeutet das?
Was ist ../comment/reply/68 für eine Seite?
Wie kann ich die beeinflussen bzw. erreichen, daß ich in diesem Fall auf der gleichen Seite "Gästebuch" lande - mit Error-Message und der Liste der Einträge und ohne zusätzliche Links?
Kann mir hier jemand weiterhelfen?
Gruß, Michael
- Anmelden oder Registrieren um Kommentare zu schreiben

Übliches Verhalten
am 14.08.2013 - 12:33 Uhr
Das hört sich nach dem üblichen Verhalten von Drupal an. Wenn im Formular ein Fehler ist, sieht man sonst auch nur die Fehler und das konkrete Kommentar-Formular auf einer einzelnen Seite. Das ist meiner Meinung nach auch die beste Lösung, damit andere Inhalte nicht davon ablenken, die Fehler zu korrigieren.
Du könntest versuchen, das Formular direkt im Browser zu überprüfen, etwa mit: https://drupal.org/project/clientside_validation
Warum dort Links zum Gästebuch, User etc. erscheinen, kann ich nicht sagen. Ich habe das eben mal mit einem Kommentar auf einer meiner Seiten ausprobiert. Dort erscheinen die Links nicht. Wird wohl am Theme / den Einstellungen liegen.
Ansonsten: Warum hast du dir da einen View gebaut? Grundsätzlich stellt Drupal die Kommentare ohnehin unter dem Beitrag dar. Du musst sie nicht extra herausfiltern.
Vielen Dank
am 14.08.2013 - 14:42 Uhr
für den Hinweis, das client-seitig zu machen.
Da es ja nur um das eine Feld im Gästebuch geht (oder vielleicht noch ein zweites), hab ich das selber mit jQuery erledigt (um noch ein weiteres Modul zu vermeiden):
$("#guestForm #edit-submit").click(function(evt){var msg = $("#guestForm #edit-comment-body textarea");
if($(msg).val()=='') {
evt.stopImmediatePropagation();
$(msg).addClass("error");
return false;
}
});
funktioniert bestens.
Trotzdem möchte ich nochmal nachfragen:
Was ist ../comment/reply/68 für eine URL? Wozu ist diese Seite gedacht und wie kann man die Darstellung beeinflussen?
mfG, Michael
Kommentar URLs
am 14.08.2013 - 15:19 Uhr
Das ist der Drupal-interne Pfad, um auf einen Kommentar zu antworten. Kannst du hier im Forum auch ablesen, wenn du auf einen Kommentar antwortest. Zum Beispiel: /comment/reply/47435/168956
Die erste Zahl ist die ID des Nodes, die zweite die ID des Kommentars, auf den du antwortest.
Was willst du denn verändern? Den Kommentar, der angezeigt wird, oder das Formular?
Für die Kommentare gibt es ein eigenes Template. Beim Formular käme es darauf an, was du machen willst.
ja klar,
am 14.08.2013 - 16:47 Uhr
das Problem ist wohl die zweckentfremdete Verwendung der Kommentare für das Gästebuch.
Wenn ich einen Kommentar abgeben will, komme ich auf eine spezielle Seite, und muß dann wieder irgendwie zurück - das will ich bei einem Gästebuch aber nicht, ich will das ohne Umweg alles auf derselben Seite abhandeln.
Das war ja mit der page--guestbook.tpl.php schon erledigt.
Seltsam fand ich nur, daß das bei gültigen Einträgen funktioniert, aber nicht bei ungültigen - also wenn ein Pflichtfeld fehlt.
Aber das ist ja nun mit der client-seitigen Überprüfung auch erledigt.
mfG, Michael