Aussehen & HTML-Ausgabe des Kommentar-Formular ändern
am 10.08.2007 - 15:59 Uhr in
Hallo Community.
Erstmal möchte ich mich bedanken. Beschäfige mich seit ca. 2 Wochen mit Drupal und dieses Forum hat mir schon oft weitergeholfen.
Heute habe ich aber eine Frage deren Lösung ich nirgends finden konnte. Denke aber Ihr werdet mir sicherlich auch hier weiterhelfen können.
Ich möchte das Aussehen des Formulars zum Kommentieren von Nodes (speziell Blogposts) ändern. Allerdings nicht nur das Aussehen (könnte ich ja dann per CSS machen), sondern auch die Reihenfolge der Felder und auch das ausgegebene HTML.
Würde also eine Theme-Funktion schreiben, wie das bei den Breadcrumbs ja auch gut funktioniert.
function phptemplate_breadcrumb($breadcrumb) {
if (!empty($breadcrumb)) {
return '<div class="breadcrumb">'. implode(' › ', $breadcrumb) .'</div>';
}
}Allerdings finde ich einfach keinen Ansatz für das Formular. Hat das mal jmd gemacht und kann mir ein Beispiel geben, wie das mit einem Formular aussehen würde.
Da fehlt mir doch einfach noch der tiefe Einblick in Drupal.
Würde mich sehr über ein paar Tipps freuen, wo ich zu suchen habe. Oder am besten ein Beispiel.
Wäre sehr cool!
Danke schonmal!
- Anmelden oder Registrieren um Kommentare zu schreiben

FAQ
am 10.08.2007 - 16:49 Uhr
Schau mal hier:
http://www.drupalcenter.de/faq/4468
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
Per Template überschreiben
am 10.08.2007 - 17:02 Uhr
Hallo,
Du kannst das Formular per PHP Template überschreiben, dafür gibt es zwei Wege:
a) Nur Änderung in template.php durch Einfügen folgender Funktion:
function phptemplate_comment_form($form) {
... hier würde das Formular modifiziert !
$output = drupal_render($form);
return $output;
}
b) Änderung in template.php und Erstellen einer comment-form.tpl.php:
template.php:
function phptemplate_comment_form($form) {return _phptemplate_callback('comment-form', array('form' => $form));
}
comment-form.tpl.php:
<?php
... hier würde das Formular modifiziert !
drupal_render($form);
?>
Soweit sieht das Formular unverändert aus. Die Arbeit besteht jetzt darin, den Array FORM zu analysieren und nach Wunsch zu modifizieren. Am Besten Du fängst da mal mit einem var_dump ($form) an statt des drupal_render, dann siehst du die Struktur und ahnst vielleicht wo das hin führt.
Gruß,
Boris
Hallo, Danke! Das hat mir
am 10.08.2007 - 19:58 Uhr
Hallo,
Danke! Das hat mir schonmal ein Stückchen weitergeholfen.
Noch ein paar Sachen, die mir auf dem Weg des Verstehens helfen würden:
1.) Woher weiß ich denn, dass ich das Template comment-form.tpl.php bzw die Funktion xxx_comment_form nennen muss? (Außer jedes Mal hier zu fragen ;)
2.) Wie bekomme ich nun raus, wie ich welche Felder ansprechen kann, bzw welche Felder überhaupt existieren?
3.)Unter /modules/comment/comment.module in der Funktion comment_form werden die Felder erstellt (denk ich mal). Dort wird allerdings kein HTML-Code erzeugt. Es muss doch also noch irgendwo ein "Standard-Template" geben oder?
Danke!
Name für Template
am 10.08.2007 - 20:46 Uhr
Also, wenn wie hier http://www.drupalcenter.de/faq/4468 beschrieben die Template Engine den Namen nicht automatisch erkennt, dann funktioniert das eben über diesen Code:
<?phpfunction phptemplate_comment_form($form) {
return _phptemplate_callback('comment-form', array('form' => $form));
}
?>
Den Namen deines Templates kannst DU hier selber festlegen. Dort wo jetzt 'comment-form' steht, kannst du auch 'mein-kommentar-formular' schreiben. Dann muss dein Template 'mein-kommentar-formular.tpl.php' heißen.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
Wie gesagt, var_dump
am 10.08.2007 - 23:49 Uhr
2.) Wie bekomme ich nun raus, wie ich welche Felder ansprechen kann, bzw welche Felder überhaupt existieren?
Dazu dient eben der var_dump($form), der dir alle Felder des Formulars mit Feldnamen, Inhalten etc. ausgibt. Du kannst dann die Reihenfolge ändern über ...['weight'], oder Felder entfernen mittels unset(...), usw.
Gruß,
Boris
Kommt Zeit kommt Rat
am 11.08.2007 - 00:28 Uhr
Ok, ich seh schon. Da muss ich noch ein paar Stunden investieren bis ich da mitreden kann :-)
Danke schon mal soweit Euch beiden!
Mal schaun wie weit ich komme.
Falls zufällig jmd noch ein konkretes Beispiel (function theme_comment_form) parat hat, immer her damit.