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.

Was ist der einfachste Weg, dies zu tun?

Daphshez
quelle
Meine aktuelle Site ist D6, aber ich beginne mit dem Übergang zu D7, daher sind Antworten für beide hilfreich.
Daphshez

Antworten:

1

Ich sehe einige Möglichkeiten, wie dies getan werden könnte:

  1. Benutzerdefiniertes Modul - jemand hat es sogar für Sie geschrieben - http://drupal.org/node/240610#comment-1096024
  2. Verwenden von Zeichenfolgenüberschreibungen - Ändern Sie Anonym in [leere Zeichenfolge].
  3. 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".
  4. Verwenden Sie Javascript - jemand hat dies auch geschrieben - http://drupal.org/node/240610#comment-2051378

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

wiifm
quelle
Ich habe Option 1 verwendet.
Daphshez
Außerdem beantwortet Option 3 meine Frage nicht wirklich - ich möchte anonymen Benutzern erlauben, Kommentare zu hinterlassen.
Daphshez
Beachten Sie schließlich, dass diese Änderungen überschrieben werden, wenn Sie das Realname-Modul verwenden.
Daphshez
3

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_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.

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

Greg
quelle
2
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.
Entschlüsselung
Vielen Dank. Die $ form_id ist "comment_form". Unter drupal.org/node/240610#comment-1096024 finden Sie einige detailliertere Anweisungen für dieses spezielle Formular .
Daphshez
2

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 ...

Hier wird alles an einem Ort behandelt: http://jan.tomka.name/blog/how-remove-anonymous-name-comment-form

Jan Tomka
quelle
1

Dies ist die Art von einfacher Optimierung, die ich mit JavaScript vornehmen würde.

$(document).ready(function() {
    var editbox = $('#edit-name');
    if (editbox.val() == 'Anonymous' {
        editbox.val('');
    }
});

Pop das irgendwo in Ihrem Thema und das Namensfeld wird gelöscht, wenn die Seite geladen wird.

Paul Jones
quelle
1
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.
Paul Jones