Как в Drupal 6 удалять свои комментарии?

Есть такая больная мозоль у drupal — это модуль комментариев.

Ситуация как в анекдоте — прислали индусам из России танк. Как ни собирают — получается комбайн. Перечитывают инструкцию по сборке — «после сборки доработать напильником».

С комментариями в Drupal ситуация такая же. В 6ке — удаление комментариев пользователем без прав «администрирования комментариев» не предусмотрено! Казалось бы такая мелочь… Но проблема там в том, что удаляемый комментарий может иметь целый хвост из ответов, которые могут принадлежать другим пользователям, и удалять их нельзя. В некоторых социалках, где поддерживается иерархия ответов, поступают так — вместо удаленного коммента пишут, что «комментарий удален». А ответы остаются. Я же считаю что, если автор решил удалить коммент, то и ответы надо удалять, ибо что это за ответы на удаленный комментарий?

То как разрешить эту ситуацию — это дело вкуса. Нужно хотя бы преодолеть «правовые» установки, а там уж делать, что душе угодно.

Альтернативное удаление.

Мы разобрались, что штатно удалить свои записи в комментариях нельзя (если вы только не администратор комментов), значит нужно создать альтернативную версию страницы удаления. Добавим в hook_menu страничку:

Пример из действующего проекта (гений места), не стал ничего придумывать. Код находится в отдельном файле модуля — comments.php. Там подправленная версия функции comment_delete из модуля comment. Выглядит она вот так.

А где же вариант с заменой drupal-овского удаления всей ветки?

Если же вам надо поменять логику работы встроенного удаления, то нужно скопировать и поправить еще пару функций из модуля comment. А именно ф-цию comment_confirm_delete — которая создаёт диалоговую форму подтверждения удаления, и comment_confirm_delete_submit, реализующую само удаление.

Тут уж все в ваших руках :).

Корректируем шаблон

Так как прав на администрирование комментариев мы не собираемся выдавать нашим пользователям, то и список ссылок в шаблоне комментариев не изменится, т.е. ссылка «удалить» волшебным образом не появится. Нужно скопировать в свою тему файл-шаблон comment.tpl.php из модуля comment, и немного его доработать напильником.

Вместо:

Может получиться что то вроде:

Это не самый универсальный подход, так мы можем потерять модификации переменной $links, которые могут выполняться в других модулях. Если у вас дело обстоит именно так, тогда стоит пойти через использование hook_link_alter.

Написать комментарий

Мало букафф? Читайте есчо !

Меняем сортировку комментариев в Drupal 7 без views

Декабрь 2, 2016 г.

Комментарии в Drupal выводятся от старых к новым. Т.е. чтобы увидеть последний (свежий) комментарий нужно идти на самую последнюю страницу (если комментарии разбились на несколько страниц) в самый конец списка комментариев. Как изменить порядок вывода ...

Читать

Оповещение о новом комментарии в Drupal

Август 28, 2015 г.

Модуль комментариев в Drupal - это не паханное поле для настройки, темизации и программирования. Ситуация с ним не меняется, от версии к версии ядра он остаётся обделенным вниманием разработчиков. Одна из задач - настроить оповещения модератору или админу ...

Читать

 

Комментарии к «Как в Drupal 6 удалять свои комментарии?»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: