¿Cómo deshabilitar finalmente los comentarios sobre el tipo de contenido?

12

Estoy tratando de deshabilitar los comentarios en el formulario web. Intenté todas las configuraciones que pude encontrar, pero:

  • El enlace al formulario de comentarios aún aparece
  • El campo de nombre y el botón de envío aún aparecen en el formulario de comentarios

¿Alguien podría darme algún consejo?

Codium
fuente

Respuestas:

11

Como escribió juampy , node_revision también debería actualizarse. Necesita ejecutar 2 consultas:

Paso 1:

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

Paso 2:

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

Paso 3: borrar el caché

Dawid Tomaszewski
fuente
1
Y si acaba de instalar algo como Disqus, puede ejecutarlo UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Trabajó para mi :-).
Nux
Si necesita eliminar comentarios de todos los tipos de nodos, simplemente use las consultas @Nux.
albertski
7

A veces es más fácil usar SQL. Este, creo, es uno de esos casos.

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

0 = deshabilitado

1 = solo lectura

2 = leer / escribir.

skomorokh
fuente
2
0 = deshabilitado, 1 = solo lectura, 2 = lectura / escritura. Creo que esta es la mejor respuesta :)
AyeshK
@AyeshK, bueno, he editado la respuesta.
niksmac 01 de
por un lado, si sabe cómo escribir / ejecutar una consulta como esta, probablemente no esté luchando por descubrir cómo desactivar los comentarios, por otro lado, en términos de velocidad / eficiencia, una solución basada en consultas de db es MUCHO mejor que el mío :)
David Meister
7

Cambiar la configuración predeterminada de comentarios para el tipo de contenido, como lo sugiere uwe999, solo cambia la configuración predeterminada para el tipo de contenido. Eso significa que no cambiará retroactivamente la configuración del contenido existente (ya que eso podría eliminar los comentarios existentes).

Tendrá que visitar la vista de edición de nodos para cada nodo existente para el que está tratando de deshabilitar los comentarios y actualizar la configuración allí. Si instaló un módulo como el módulo de columnas de formulario Nodo , que oculta / elimina elementos de las páginas de agregar / editar nodo, entonces tendrá que actualizar su configuración, aparecerá el cuadro de configuración de comentarios para los nodos.

David Meister
fuente
3

Ninguna de las soluciones anteriores funcionó para mí. El formulario de comentarios todavía se muestra en los nodos existentes a menos que también actualice node_revision.

Aquí está la implementación de hook_update_N () que funcionó para mí:

/**
 * 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();
}
Juampy NR
fuente
2

deshabilita los comentarios en "estructura / tipos de contenido / [nombre del tipo] / editar / configuración de comentarios. Establezca" Configuración de comentarios predeterminada para contenido nuevo "en oculto.

Si tiene comentarios existentes, puede eliminarlos en "contenido / comentarios" o simplemente anular su publicación.

uwe
fuente
Lo hice, pero el enlace al formulario sigue siendo, probablemente la única opción es cambiar la plantilla o simplemente css diplay: ninguno, extraño
Codium
¿Qué plantilla estás usando?
Uwe
1

No estoy seguro acerca de su problema, pero un truco sucio podría ser crear una plantilla especial para su tipo de contenido y eliminar las partes de comentarios.

tostinni
fuente
1

Deshabilite los comentarios aquí primero:

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

Para actualizar los nodos, desafortunadamente, debe volver a guardar cada nodo. Use hook_update a continuación:

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

No olvide reemplazar 'node_type' a su tipo de nodo.

mrded
fuente
1

La forma más simple de deshabilitar los comentarios en el formulario web es simplemente ir al formulario web EDITAR y en la parte inferior de la opción EDITAR hay una opción de Configuración de comentarios .

Por defecto su siempre abierta para hacerlo es cerrada y la sección de comentarios del formulario web va a desaparecer ...

Nitesh Sethia
fuente
1

Puede usar CSS para ocultar la sección de comentarios para que no se muestren comentarios retrospectivos.

Agregue código CSS a la pestaña Administrador> Apariencia> Avanzado> CSS personalizado. Tendría que mirar los nombres de clase de los divs para los tipos de página de su sitio específico. Aquí hay un ejemplo de mi sitio de prueba que usa el tipo de página de elemento de Noticias (nombre de máquina "artículo"):

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

Utilice las operaciones en masa de vistas, con la operación predeterminada: "Modificar / Cambiar valores de entidad". Aquí puede configurar comentarios para cerrar a los nodos existentes.

giorgio79
fuente
0

Es bastante sencillo, siga los pasos a continuación:

  1. Navegue a Estructura> Tipos de contenido> Formulario web
  2. Luego edite el formulario web y haga clic en Configuración de comentarios en la configuración del lado izquierdo.
  3. Cambie el valor "Configuración de comentario predeterminada para contenido nuevo" a "Cerrar" y guarde la configuración.

Gracias

Sandesh Manghale
fuente
0

Esto sucedió con alrededor de 50,000 registros que importé en 4 tipos de contenido diferentes. No quería borrar y reimportar o perder el tiempo con consultas SQL en la base de datos. Si desea eliminar la funcionalidad de comentarios de todos los nodos, simplemente desactive el módulo de comentarios.

MascotDB
fuente