eliminar comentarios en masa

Respuestas:

7

AFAIK, VBO debería poder hacer el trabajo, pero no lo he intentado yo mismo para eliminar comentarios.

Otra forma es ejecutar algún código (en un módulo o en el bloque 'ejecutar php' del módulo Devel) que obtiene una lista de todas las consultas de la base de datos, crea una matriz de ID de comentarios y la pasa a la función comment_delete_multiple . Tenga en cuenta que esto puede tardar un tiempo en completarse (según el rendimiento del servidor y la cantidad de comentarios), por lo que puede solucionarlo, por ejemplo, utilizando set_time_limit (http://php.net/manual/en/function .set-time-limit.php) o la API por lotes de Drupal.

[actualización: vea la respuesta de Chris Cohen para un código de ejemplo basado en este enfoque.]

marcvangend
fuente
7

Esta no es una respuesta alternativa, más una elaboración de marcvangend's, pero no pude comentar su respuesta y dejar un código de ejemplo. Entonces, el enfoque manual, usando el bloque de código de ejecución de devel, se vería un poco como:


$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

comment_delete_multiple($cids);

Como señala marcvangend, esto se limitará al tiempo de ejecución en su servidor, por lo que deberá aumentarlo temporalmente si tiene muchos comentarios. Gracias a manarth e instanceofjamie por la ayuda de dbtng.

Chris Cohen
fuente
1
Gracias por la dirección, pero su sintaxis está desactivada. La tabla es commentque necesita un alias y los resultados del objeto sin procesar no se pueden alimentar directamentecomment_delte_multiple
brian_d
@brian_d ¿cómo procesaría los resultados del objeto sin procesar listos para comment_delte_multiple ()?
jackocnr
2

Personalmente, iría por el módulo de Operaciones masivas de Vistas .

Este módulo aumenta las vistas al permitir que se ejecuten operaciones masivas en las filas mostradas. Para ello, muestra una casilla de verificación delante de cada nodo y agrega un cuadro de selección que contiene las operaciones que se pueden aplicar. Se pueden usar las acciones de Drupal Core o Reglas.

Karl Jóhann
fuente
0

Honestamente, cuando necesitaba hacer esto, lo hice en la base de datos. Eliminas los comentarios, arreglas las estadísticas de comentarios y poof, todos los comentarios se han ido. Evitaría hacer esto si tiene módulos que interactúan con los comentarios de alguna manera extraña, de lo contrario, es lo que sugeriría.

TABLA TRUNCADA comentarios

ACTUALIZAR node_comment_statistics SET comment_count = 0

G.Martin
fuente
Creo que la ventaja de usar la llamada a la API de drupal comment_delete_multiplees que puede llamar a ganchos de drupal adicionales para usted, dejando su base de datos potencialmente más limpia.
brian_d
Por eso dije que sugeriría evitar hacerlo si tienes módulos que interactúan con los comentarios. De lo contrario, si tiene comentarios sobre acciones, nunca he notado ningún problema. Sin duda, es mucho más fácil de hacer si tiene un sitio que ha recibido spam con miles de comentarios.
G.Martin
También debe truncar la tabla 'field_data_comment_body', ya que es donde se almacena el contenido de los comentarios.
Creynders
0

Algunas herramientas de UI Puede instalar los módulos a continuación

Vistas - drupal.org/project/views

Creo que cada sitio de Drupal necesita ... Genera SQL en el backend y muestra resultados con configuraciones configurables, filtros, clasificación, paginación ... etc.

VBO - http://drupal.org/project/views_bulk_operations Para permitir operaciones masivas (es decir, eliminar comentarios para este hilo)

Vistas de administración: http://drupal.org/project/admin_views Aproveche las ventajas de Vistas y VBO, reemplace el contenido original, comentarios, páginas de administración de usuarios por menu_alter ...

  1. Después de habilitar los módulos anteriores, regrese a la página de administración de comentarios
  2. Marque seleccionar todo ( tenga cuidado , asegúrese de que desea eliminar todos los comentarios ...)
  3. Seleccione "Eliminar" y "Enviar" ( tenga cuidado , no más botones de confirmación más tarde ...)
Ck Poon
fuente
0

Se logró eliminar alrededor de 45,000 comentarios utilizando el módulo Copia de seguridad y migración. En la configuración avanzada en 'Excluir los datos de las siguientes tablas' - primero presione la tecla Ctrl y luego seleccione el comentario en la lista - (tenga cuidado porque aquí las tablas de caché innecesarias ya están seleccionadas) - copia de seguridad - restaurar desde este archivo respaldado. ¡Hurra!

VivMajor
fuente
0

Esta respuesta es similar a una respuesta ya enumerada, pero la modifiqué para evitar un "error de falta de memoria" para unos 27,000 comentarios. Esto tardará un tiempo en ejecutarse dependiendo de la cantidad de comentarios. Simplemente truncar la tabla de comentarios puede no ser una buena idea; Es mejor dejar que Drupal se encargue de eliminar el contenido.

Creé un script PHP:

$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

foreach($cids as $cid)
{
  comment_delete($cid);
}

... luego ejecutó el script con Drush

drush @my_alias php-script my_script.php
Parag
fuente
0

Por lo general, recomendaría usar VBO para eliminar comentarios o nodos en masa, pero si se encuentra en una situación en la que tiene cientos de miles de comentarios y no tiene demasiado tiempo, aquí hay una consulta SQL que eliminará todos los comentarios no aprobados junto con todas las revisiones y datos relacionados con esos comentarios que en mi caso ocupaban 1.2Gb de espacio en DB

DELETE c, rcb, dcb
FROM
    comment AS c
JOIN field_revision_comment_body AS rcb ON (c.cid = rcb.entity_id)
JOIN field_data_comment_body AS dcb ON (rcb.entity_id = dcb.entity_id)
WHERE
    c. STATUS = 0
Octano
fuente
-2

Habilite el filtro PHP y cree una página básica con el siguiente código:

<?php
  db_query("TRUNCATE TABLE {comment}");
  db_query("UPDATE {node_comment_statistics} SET comment_count = 0");
?>
jordi
fuente
1
nunca use el filtro PHP para cosas así (incluso para cualquier otra cosa, el filtro PHP es generalmente una de las peores ideas en Drupal)
Alejandro Moreno