Come disabilitare finalmente i commenti sul tipo di contenuto?


12

Sto cercando di disabilitare i commenti sul modulo web. Ho provato tutte le impostazioni che ho trovato, ma:

  • Il collegamento al modulo di commento appare ancora
  • Il campo del nome e il pulsante di invio vengono comunque visualizzati nel modulo dei commenti

Qualcuno potrebbe darmi qualche consiglio?

Risposte:


11

Come ha scritto juampy , anche node_revision dovrebbe essere aggiornato. È necessario eseguire 2 query:

Passo 1:

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

Passo 2:

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

Passaggio 3: svuota la cache


1
E se hai appena installato qualcosa come Disqus, puoi semplicemente eseguire UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Ha funzionato per me :-).
Nux,

Se è necessario rimuovere i commenti da tutti i tipi di nodo, utilizzare le query @Nux.
albertski,

7

A volte è più semplice usare solo SQL. Questo, penso, è uno di quei casi.

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

0 = disabilitato

1 = sola lettura

2 = lettura / scrittura.


2
0 = disabilitato, 1 = sola lettura, 2 = lettura / scrittura. Penso che questa sia la risposta migliore :)
AyeshK il

@AyeshK, bello, ho modificato la risposta.
Niksmac,

da un lato, se sai come scrivere / eseguire una query come questa, probabilmente non stai facendo fatica a capire come disattivare i commenti, d'altra parte, in termini di velocità / efficienza pura una soluzione basata su query db è MODO meglio del mio :)
David Meister,

7

La modifica delle impostazioni di commento predefinite per il tipo di contenuto, come suggerito da uwe999, modifica solo le impostazioni predefinite per il tipo di contenuto. Ciò significa che non modificherà retroattivamente le impostazioni per i contenuti esistenti (poiché ciò potrebbe eliminare i commenti esistenti).

Dovrai visitare la vista di modifica dei nodi per ogni nodo esistente per cui stai provando a disabilitare i commenti e ad aggiornare le impostazioni lì. Se è stato installato un modulo come il modulo Colonne modulo nodo , che nasconde / rimuove gli elementi dalle pagine di aggiunta / modifica del nodo, sarà necessario aggiornare la sua configurazione per i nodi.


3

Nessuna delle soluzioni sopra ha funzionato per me. Il modulo di commento viene ancora visualizzato nei nodi esistenti a meno che non si aggiorni anche node_revision.

Ecco l'implementazione hook_update_N () che ha funzionato per me:

/**
 * 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

disabiliti i commenti in "struttura / tipi di contenuto / [nome del tipo] / modifica / impostazioni commento. Imposta" Impostazione commento predefinita per nuovo contenuto "su nascosto.

Se disponi di commenti esistenti, puoi eliminarli in "contenuto / commenti" o semplicemente annullare la pubblicazione.


L'ho fatto, ma il collegamento al modulo è ancora, probabilmente l'unica opzione è cambiare modello o semplicemente diplay css puro: nessuno, strano
Codium

quale modello stai usando?
Uwe

1

Non sono sicuro del tuo problema, ma un trucco sporco potrebbe essere quello di creare un modello speciale per il tuo tipo di contenuto e rimuovere le parti di commento.


1

Disabilita i commenti qui prima:

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

Per aggiornare i nodi, sfortunatamente, è necessario salvare nuovamente ciascun nodo. Usa hook_update di seguito:

/**
 * 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'];
  }
}

Non dimenticare di sostituire 'node_type' con il tuo tipo di nodo.


1

Il modo più semplice per disabilitare i commenti nel modulo web è semplicemente andare al modulo web EDIT e nella parte inferiore dell'opzione EDIT c'è un'opzione di Impostazioni commenti .

Di default è sempre APERTO, quindi chiudilo e la sezione dei commenti dal modulo web scomparirà ...


1

È possibile utilizzare i CSS per nascondere la sezione dei commenti in modo che i commenti retrospettivi non vengano visualizzati.

Aggiungi il codice CSS all'Admin> Aspetto> Avanzate> Scheda CSS personalizzata. Dovresti guardare i nomi delle classi dei div per i tipi di pagina del tuo sito specifico. Ecco un esempio dal mio sito di test che utilizza il tipo di pagina dell'elemento Notizie (nome macchina "articolo"):

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

0

Utilizzare le operazioni in blocco di Views, con l'operazione predefinita: "Modifica / Cambia valori entità". Qui puoi impostare i commenti su chiusi su nodi esistenti.


0

È piuttosto semplice, segui i passaggi seguenti:

  1. Passare a Struttura> Tipi di contenuto> Modulo web
  2. Quindi modifica il modulo web e fai clic su Impostazioni commento nelle impostazioni a sinistra.
  3. Modificare il valore "Impostazione commento predefinito per nuovo contenuto" su "Chiudi" e salvare l'impostazione.

Grazie


0

Ho avuto questo caso a circa 50.000 record che ho importato in 4 diversi tipi di contenuto. Non volevo cancellare, reimportare o scherzare con le query SQL nel database. Se si desidera rimuovere la funzionalità di commento da tutti i nodi, è sufficiente disabilitare il modulo commenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.