Wie kann ich Kommentare zum Inhaltstyp endgültig deaktivieren?


12

Ich versuche, Kommentare auf dem Webformular zu deaktivieren. Ich habe alle Einstellungen ausprobiert, die ich finden konnte, aber:

  • Link zum Kommentarformular wird weiterhin angezeigt
  • Das Namensfeld und die Senden-Schaltfläche werden weiterhin im Kommentarformular angezeigt

Könnte mir jemand einen Rat geben?

Antworten:


11

Wie juampy schrieb, sollte node_revision ebenfalls aktualisiert werden. Sie müssen 2 Abfragen ausführen:

Schritt 1:

UPDATE node SET comment = 0 WHERE type = 'your_content_type'

Schritt 2:

UPDATE node_revision nrev
INNER JOIN node nd ON nrev.nid = nd.nid AND nd.type = 'your_content_type'
SET nrev.comment = 0

Schritt 3: Cache leeren


1
Und wenn Sie so etwas wie Disqus installiert haben, können Sie es einfach ausführen UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Arbeitete für mich :-).
Nux

Wenn Sie Kommentare von allen Knotentypen entfernen müssen, verwenden Sie einfach @Nux-Abfragen.
Albertski

7

Manchmal ist es am einfachsten, nur SQL zu verwenden. Dies ist meiner Meinung nach einer dieser Fälle.

UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';

0 = deaktiviert

1 = schreibgeschützt

2 = lesen / schreiben.


2
0 = deaktiviert, 1 = schreibgeschützt, 2 = lesen / schreiben. Ich denke, das ist die beste Antwort :)
AyeshK

@ AyeshK, schön, ich habe die Antwort bearbeitet.
Niksmac

Einerseits, wenn Sie wissen, wie man eine solche Abfrage schreibt / ausführt, haben Sie wahrscheinlich nicht die Mühe, herauszufinden, wie man Kommentare abschaltet. Andererseits ist eine Datenbankabfrage-basierte Lösung in Bezug auf Geschwindigkeit und Effizienz einfach WEG besser als meins :)
David Meister

7

Durch Ändern der Standardkommentareinstellungen für den Inhaltstyp, wie von uwe999 vorgeschlagen, werden nur die Standardeinstellungen für den Inhaltstyp geändert . Das bedeutet, dass Einstellungen für vorhandene Inhalte nicht rückwirkend geändert werden (da dadurch vorhandene Kommentare gelöscht werden könnten).

Sie müssen die Knotenbearbeitungsansicht für jeden vorhandenen Knoten aufrufen, für den Sie Kommentare deaktivieren möchten, und die Einstellungen dort aktualisieren. Wenn Sie ein Modul wie das Modul " Spalten für Knotenformulare" installiert haben , mit dem Elemente auf den Seiten zum Hinzufügen / Bearbeiten von Knoten ausgeblendet / entfernt werden, müssen Sie die Konfiguration aktualisieren. Das Feld für die Kommentareinstellungen wird für die Knoten angezeigt.


3

Keine der oben genannten Lösungen hat bei mir funktioniert. Das Kommentarformular wird weiterhin in vorhandenen Knoten angezeigt, es sei denn, Sie aktualisieren auch node_revision.

Hier ist die Implementierung von hook_update_N (), die bei mir funktioniert hat:

/**
 * Implements hook_update_N().
 *
 * Disables comments in existing event nodes.
 */
function hook_update_7000(&$sandbox) {
  $content_type = 'event';

  // Update node table.
  db_update('node')
    ->fields(array('comment' => 1))
    ->condition('type', $content_type)
   ->execute();

  // Update node_revision table.
  $nids = db_select('node', 'n')
    ->fields('n', array('nid'))
    ->condition('type', $content_type)
    ->execute()
    ->fetchCol();
  db_update('node_revision')
    ->fields(array('comment' => 1))
    ->condition('nid', $nids)
    ->execute();
}

2

Sie deaktivieren Kommentare in den Einstellungen "Struktur / Inhaltstypen / [Name des Typs] / Bearbeiten / Kommentar". Setzen Sie "Standardkommentareinstellung für neuen Inhalt" auf "Ausgeblendet".

Wenn Sie bereits Kommentare haben, können Sie diese unter "Inhalt / Kommentare" löschen oder einfach die Veröffentlichung aufheben.


Ich habe es getan, aber der Link zum Formular ist noch, wahrscheinlich ist nur die Option Vorlage ändern oder nur reine CSS-Anzeige: keine, seltsam
Codium

Welche Vorlage verwenden Sie?
Uwe

1

Ich bin mir über Ihr Problem nicht sicher, aber ein Trick könnte darin bestehen, eine spezielle Vorlage für Ihren Inhaltstyp zu erstellen und die Kommentarteile zu entfernen.


1

Deaktiviere zuerst die Kommentare hier:

structure->content types->{node_type}->edit->comment settings

Um die Knoten zu aktualisieren, müssen Sie leider jeden Knoten neu speichern. Nutze hook_update unten:

/**
 * Disable comments on node_type
 */
function hook_update_N(&$sandbox) {
  $content_type = 'node_type';

  // Initialize batch.
  if (!isset($sandbox['total'])) {
    $query = db_select('node');
    $query->addExpression('COUNT(*)');
    $query->condition('type', $content_type);

    $sandbox['total'] = $query->execute()->fetchField();
    $sandbox['progress'] = 0;

    if (empty($sandbox['total'])) {
      $sandbox['#finished'] = 1;
      return t('No %type nodes exist in database.', array('%type' => $content_type));
    }
  }

  // Get and update nodes.
  $nids = db_select('node')
    ->fields('node', array('nid'))
    ->condition('type', $content_type)
    ->range(0, 10)
    ->execute()
    ->fetchCol();

  if (!empty($nids)) {
    $nodes = node_load_multiple($nids, NULL, TRUE);

    foreach ($nodes as $node) {
      $node->comment = 1; // I set comments as 1 where value of 2 enables the comments.
      node_save($node);   // Re-save the node.
    }
  }

  // Increment & check progress.
  $sandbox['progress'] += count($nids);
  if (empty($nids) || $sandbox['progress'] >= $sandbox['total']) {
    $sandbox['#finished'] = 1;
    return t('Updated @count nodes.', array('@count' => $sandbox['progress']));
  }
  else {
    $sandbox['#finished'] = $sandbox['progress'] / $sandbox['total'];
  }
}

Vergessen Sie nicht, 'node_type' durch Ihren Knotentyp zu ersetzen .


1

Die einfachste Möglichkeit , Kommentare im Webformular zu deaktivieren, besteht darin, einfach das Webformular BEARBEITEN aufzurufen. Im unteren Bereich der Option BEARBEITEN gibt es eine Option für die Kommentareinstellungen .

Durch Standard seines immer OPEN so macht es geschlossen und der Kommentarbereich aus dem Webformular wird verschwinden ...


1

Mit CSS können Sie den Kommentarbereich ausblenden, sodass nachträgliche Kommentare nicht angezeigt werden.

Fügen Sie CSS-Code zur Registerkarte Admin> Darstellung> Erweitert> Benutzerdefiniertes CSS hinzu. Sie müssten sich die Klassennamen der divs für die Seitentypen Ihrer spezifischen Site ansehen. Hier ist ein Beispiel von meiner Test-Site, die den Seitentyp "Nachrichten" (Maschinenname "Artikel") verwendet:

.node-article .comment-wrapper{
 visibility: hidden;
 display: none;
 }

0

Verwenden Sie Ansichten-Massenvorgänge mit der Standardoperation "Ändern / Ändern von Entitätswerten". Hier können Sie festlegen, dass Kommentare für vorhandene Knoten geschlossen werden sollen.


0

Es ist ziemlich einfach, folge den Schritten unten:

  1. Navigieren Sie zu Struktur> Inhaltstypen> Webformular
  2. Bearbeiten Sie dann das Webformular und klicken Sie in den Einstellungen auf der linken Seite auf Kommentareinstellungen.
  3. Ändern Sie den Wert für "Standardkommentareinstellung für neuen Inhalt" in "Schließen" und speichern Sie die Einstellung.

Vielen Dank


0

Ich hatte dies mit ungefähr 50.000 Datensätzen zu tun, die ich in 4 verschiedene Inhaltstypen importiert habe. Ich wollte nicht mit SQL-Abfragen in der Datenbank löschen und neu importieren oder herumspielen. Wenn Sie die Kommentarfunktionalität von allen Knoten entfernen möchten, deaktivieren Sie einfach das Kommentarmodul.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.