Wie entferne ich den Standard "Anonym" aus dem Namen des Kommentars?
7
Im Feld für das Kommentarformular (Kernkommentarmodul) möchte ich den Namen des Kommentarautors leer lassen, um die Kommentatoren zu ermutigen, originelle Epitheta zu erstellen.
Entfernen Sie es aus dem Kommentarmodul - Inhaltsverwaltung -> Inhaltstypen und klicken Sie auf Bearbeiten für Ihren Knotentyp und aktivieren Sie "Anonyme Poster geben möglicherweise ihre Kontaktinformationen nicht ein".
Ich würde mich wahrscheinlich für Option 1 entscheiden, da dies eine größere Flexibilität bei der Änderung der Formulare bietet, um sie in Zukunft an andere Anforderungen anzupassen
Ermöglicht das Einhängen und Ändern eines Formulars, einschließlich des Festlegens des Standardtexts auf leer. Hier ist eine weitere Hilfe zu den gültigen Elementen:
Der beste Weg, um zu beginnen, besteht darin, die Formular-ID zu ermitteln, indem Sie eine mymodule_form_alter()Funktion erstellen und die $form_idVerwendung printso ausdrucken, dass sie oben auf der Seite angezeigt wird. (Oder noch besser, verwenden Sie das Entwicklungsmodul, um es in einer Drupal-Statusmeldung auszudrucken.) Sobald Sie die Formular-ID kennen, können Sie eine hinzufügen if, um sicherzustellen, dass Sie nur auf dieses Formular reagieren, und dann das Array ändern, um den nicht gewünschten Standardwert zu entfernen.
Schauen Sie sich so ziemlich jedes Modul für eine Beispielimplementierung an. Viele Module verwenden diesen Haken. Ich kann mir kein konkretes Beispiel vorstellen, aber es gibt jede Menge.
Wenn der Code für ein einzelnes Formular spezifisch ist, würde ich implementieren hook_form_FORM_ID_alter(), das vor jeder hook_form_alter()Implementierung aufgerufen wird und den Wert eines an die Hook-Funktion übergebenen Parameters nicht überprüfen muss.
Kiamlaluno
hook_form_FORM_ID_alter () ist nicht immer eine gute Alternative zu hook_form_alter (), da es Zeitprobleme gibt. Es wird nicht gleichzeitig mit hook_form_alter () ausgeführt und kann häufig dazu führen, dass nicht die richtige Version des Formulars geändert wird Zumindest war das meine Erfahrung.
Nur ein Hinweis für diejenigen, die sich für ein benutzerdefiniertes Modul entscheiden, aber ohne ersichtlichen Grund Anonym im Eingabefeld Name erhalten , und ihr hook_form_alter(oder hook_form_comment_form_alter) ist in Ordnung.
Stellen Sie sicher, dass Sie das comment_info_nameCookie entfernen , mit dem das commentModul Javascript den zuvor verwendeten Namen speichert. Ich habe einige Zeit gebraucht, um herauszufinden ...
Und wenn der Benutzer JavaScript deaktiviert hat, was dann?
Entschlüsseln Sie den
@Decipher: Ich würde sagen, dass die Box, in der immer noch AnonymousJavaScript deaktiviert ist, unter die Kategorie der anmutigen Verschlechterung fällt. Die Frage war "Was ist der einfachste Weg, es zu tun?" und ich denke, das Hinzufügen einiger Zeilen JavaScript zu einer Vorlage ist einfacher als das Schreiben eines Moduls.
Antworten:
Ich sehe einige Möglichkeiten, wie dies getan werden könnte:
Ich würde mich wahrscheinlich für Option 1 entscheiden, da dies eine größere Flexibilität bei der Änderung der Formulare bietet, um sie in Zukunft an andere Anforderungen anzupassen
quelle
hook_form_alter()
http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_form_alter/7
Ermöglicht das Einhängen und Ändern eines Formulars, einschließlich des Festlegens des Standardtexts auf leer. Hier ist eine weitere Hilfe zu den gültigen Elementen:
http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html
Der beste Weg, um zu beginnen, besteht darin, die Formular-ID zu ermitteln, indem Sie eine
mymodule_form_alter()
Funktion erstellen und die$form_id
Verwendungprint
so ausdrucken, dass sie oben auf der Seite angezeigt wird. (Oder noch besser, verwenden Sie das Entwicklungsmodul, um es in einer Drupal-Statusmeldung auszudrucken.) Sobald Sie die Formular-ID kennen, können Sie eine hinzufügenif
, um sicherzustellen, dass Sie nur auf dieses Formular reagieren, und dann das Array ändern, um den nicht gewünschten Standardwert zu entfernen.Schauen Sie sich so ziemlich jedes Modul für eine Beispielimplementierung an. Viele Module verwenden diesen Haken. Ich kann mir kein konkretes Beispiel vorstellen, aber es gibt jede Menge.
EDIT: Hier ist ein guter Lullabot-Blog-Beitrag zu diesem Thema ... es gibt in dieser Hinsicht keinen großen Unterschied zwischen Drupal 6 und Drupal 7, AFAIK: http://www.lullabot.com/articles/modifying-forms-drupal-5- und-6
quelle
hook_form_FORM_ID_alter()
, das vor jederhook_form_alter()
Implementierung aufgerufen wird und den Wert eines an die Hook-Funktion übergebenen Parameters nicht überprüfen muss.Nur ein Hinweis für diejenigen, die sich für ein benutzerdefiniertes Modul entscheiden, aber ohne ersichtlichen Grund Anonym im Eingabefeld Name erhalten , und ihr
hook_form_alter
(oderhook_form_comment_form_alter
) ist in Ordnung.Stellen Sie sicher, dass Sie das
comment_info_name
Cookie entfernen , mit dem dascomment
Modul Javascript den zuvor verwendeten Namen speichert. Ich habe einige Zeit gebraucht, um herauszufinden ...Hier wird alles an einem Ort behandelt: http://jan.tomka.name/blog/how-remove-anonymous-name-comment-form
quelle
Dies ist die Art von einfacher Optimierung, die ich mit JavaScript vornehmen würde.
Pop das irgendwo in Ihrem Thema und das Namensfeld wird gelöscht, wenn die Seite geladen wird.
quelle
Anonymous
JavaScript deaktiviert ist, unter die Kategorie der anmutigen Verschlechterung fällt. Die Frage war "Was ist der einfachste Weg, es zu tun?" und ich denke, das Hinzufügen einiger Zeilen JavaScript zu einer Vorlage ist einfacher als das Schreiben eines Moduls.