Comment enfin désactiver les commentaires sur le type de contenu?


12

J'essaie de désactiver les commentaires sur le formulaire Web. J'ai essayé tous les paramètres que j'ai pu trouver, mais:

  • Le lien vers le formulaire de commentaire apparaît toujours
  • Le champ de nom et le bouton d'envoi apparaissent toujours sur le formulaire de commentaire

Quelqu'un pourrait-il me donner des conseils?

Réponses:


11

Comme l'a écrit juampy , node_revision devrait également être mis à jour. Vous devez exécuter 2 requêtes:

Étape 1:

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

Étape 2:

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

Étape 3: vider le cache


1
Et si vous venez d'installer quelque chose comme Disqus, vous pouvez simplement exécuter UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. A fonctionné pour moi :-).
Nux

Si vous devez supprimer des commentaires de tous les types de nœuds, utilisez simplement les requêtes @Nux.
albertski

7

Parfois, il est plus simple d'utiliser simplement SQL. Je pense que c'est l'un de ces cas.

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

0 = désactivé

1 = en lecture seule

2 = lecture / écriture.


2
0 = désactivé, 1 = lecture seule, 2 = lecture / écriture. Je pense que c'est la meilleure réponse :)
AyeshK

@AyeshK, chouette j'ai édité la réponse.
niksmac

d'une part, si vous savez comment écrire / exécuter une requête comme celle-ci, vous n'avez probablement pas de mal à trouver comment désactiver les commentaires, d'autre part, en termes de vitesse / efficacité, une solution basée sur une requête db est Beaucoup mieux que le mien :)
David Meister

7

La modification des paramètres de commentaire par défaut pour le type de contenu, comme suggéré par uwe999 ne modifie que les paramètres par défaut pour le type de contenu. Cela signifie qu'il ne modifiera pas rétroactivement les paramètres du contenu existant (car cela pourrait supprimer les commentaires existants).

Vous devrez visiter la vue de modification des nœuds pour chaque nœud existant pour lequel vous essayez de désactiver les commentaires et de mettre à jour les paramètres à cet endroit. Si vous avez installé un module comme le module Colonnes de formulaire de nœud , qui masque / supprime des éléments des pages d'ajout / modification de nœud, vous devrez mettre à jour sa configuration, la boîte de paramètres de commentaire apparaîtra pour les nœuds.


3

Aucune des solutions ci-dessus n'a fonctionné pour moi. Le formulaire de commentaire est toujours affiché dans les nœuds existants, sauf si vous mettez également à jour node_revision.

Voici l'implémentation hook_update_N () qui a fonctionné pour moi:

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

vous désactivez les commentaires dans "structure / types de contenu / [nom du type] / modifier / paramètres de commentaire. Définissez" Paramètre de commentaire par défaut pour le nouveau contenu "sur masqué.

Si vous avez des commentaires existants, vous pouvez les supprimer sous "contenu / commentaires" ou tout simplement les publier.


Je l'ai fait, mais le lien vers le formulaire est toujours, probablement que la seule option est de changer le modèle ou simplement l'affichage CSS pur: aucun, étrange
Codium

quel modèle utilisez-vous?
uwe

1

Je ne suis pas sûr de votre problème, mais une mauvaise astuce pourrait être de créer un modèle spécial pour votre type de contenu et de supprimer les parties de commentaire.


1

Désactivez d'abord les commentaires ici:

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

Pour mettre à jour les nœuds, malheureusement, vous devez réenregistrer chaque nœud. Utilisez hook_update ci-dessous:

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

N'oubliez pas de remplacer 'node_type' par votre type de nœud.


1

Le moyen le plus simple de désactiver les commentaires dans le formulaire Web consiste à simplement accéder au formulaire Web MODIFIER et au bas de l'option MODIFIER , il y a une option de Paramètres des commentaires .

Par défaut est toujours OUVERT alors faites fermé et la section des commentaires du formulaire électronique va disparaître ...


1

Vous pouvez utiliser CSS pour masquer la section des commentaires afin que les commentaires rétrospectifs ne s'affichent pas.

Ajoutez du code CSS à l'onglet Admin> Apparence> Avancé> CSS personnalisé. Vous devriez regarder les noms de classe des divs pour les types de page de votre site spécifique. Voici un exemple de mon site de test qui utilise le type de page d'élément News (nom de la machine "article"):

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

0

Utilisez Views Bulk Operations, avec l'opération par défaut: "Modify / Change Entity Values". Ici, vous pouvez définir le commentaire sur fermé aux nœuds existants.


0

C'est assez simple, suivez les étapes ci-dessous:

  1. Naviguez vers Structure> Types de contenu> Formulaire Web
  2. Ensuite, modifiez le formulaire Web et cliquez sur Paramètres des commentaires dans les paramètres de gauche.
  3. Modifiez la valeur «Paramètre de commentaire par défaut pour le nouveau contenu» sur «Fermer» et enregistrez le paramètre.

Merci


0

Je suis arrivé à environ 50 000 enregistrements que j'ai importés dans 4 types de contenu différents. Je ne voulais pas effacer et réimporter ou jouer avec les requêtes SQL dans la base de données. Si vous souhaitez supprimer la fonctionnalité de commentaire de tous les nœuds, désactivez simplement le module de commentaires.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.