Друпаловские комментарии «из коробки» выглядят печально, поэтому изначально к сайту я прикрутил комменты от ВК, потом перебрал еще кучу сервисов типа какла, дискаса и хиперкомментов, но ни один из них меня так и не удовлетворил, поэтому я решил все-таки добить друпаловские коменты под себя и навсегда (или хотя бы надолго) закрыть для себя этот вопрос.
Итак, плюсы:
- Есть готовый модуль коментов, в котором достаточно много функциональных возможностей, если покопаться.
- Комменты индексируются ПС и хранятся в вашей базе, т.е. вы полностью независимы от работоспособности сторонних сервисов.
- Есть какие-никакие мануалы по теме в сети.
Минусы:
- Дефолтные коменты выглядят совсем уж убого.
- В админке многое хрен настроишь, придётся ковыряться «внутрях».
- Для некоторых функций надо либо писать свои скрипты и пользоваться хуками, либо ставить дополнительные модули, например, для добавления коментов без перезагрузки страницы или для подписки на уведомления о новых ответах.
Начнем. Модуль Comment изначально входит в сборку друпала и включается так же как и остальные стандартные модули.
- Включаем модуль Comment.
- Настраиваем ему Права (/admin/people/permissions/), чтобы анонимы тоже могли видеть форму комментирования (по дефолту она видна только авторизованному пользователю).
- Теперь, если при создании документа мы откроем комментирование, у нас появиться форма комментирования. Комменты добавляются через перезагрузку старницы, ответы тоже на новой странице, галочки о уведомлении нет, капчи нет.
- Скачиваем и устанавливаем модули AJAX Comments (для оставление коментов и ответов без перезагрузки страницы), Comment Notify (для уведомлений об ответах) и CAPTCHA (для капчи в коментах).
Функционал настроили, теперь нужно настроить внешний вид. Форма комментариев занимает много места на странице, поэтому я решил скрыть ее и показывать лишь по клику на кнопке комментировать. Но сначала, темизируем шаблоны вывода комментариев.
- Идем в /www/modules/comment и находим там файл comment.tpl.php, он отвечает за вывод отдельных комментариев, с помощью правки этого шаблона можно привести коменты к желаемому виду. Можете править прямо в нем, предварительно заныкав где-то копию на случай провала, либо скопировать файл в папку со своей темой и править уже там, в безопасности.
- Идем в /www/modules/comment и находим там файл comment-wrapper.tpl.php, он отвечает за вывод всего списка коментов и формы комментирования, поступаем с ним так же, как и с предыдущим.
Теперь у нас есть более-менее красивые коменты (от вас зависит) и нам надо скрыть громоздкую форму под так скажем «спойлер», чтобы не занимала лишнего места и открывалась только по клику (как у нас сейчас с помощью AJAX Comments делается с кнопкой Ответить).
- Создаем в каталоге вашей темы файл hidecomment.js со следующим кодом
(function($) {$(function(){ $('.node-type-new #id-covax-comment-form').hide(); var jHeadline = $('#comments-hide h2'); jHeadline.html('' + jHeadline.html() + ''); var jLink = jHeadline.find('a'); jLink.css({'text-decoration':'none', 'border-bottom':'1px solid'}); jLink.click(function(){ $('#id-covax-comment-form').slideToggle('fast'); return false; }); }); })(jQuery); - Подключаем созданный скрипт через .info файл вашей темы.
- Идем в comment-wrapper.tpl.php, оборачиваем вывод формы комментарив дивом с id="id-covax-comment-form".
- Перед выводом формы добавляем див с id="comments-hide" в котором выводим нашу ссылку.
Должно получиться так:
<h2 class="title">
Комментировать
</h2>
</div>
<div id="id-covax-comment-form">
<?php print render($content['comment_form']); ?>
</div>
Таким образом, мы через js скрываем блок с id="id-covax-comment-form", в котором лежит наша форма, а по клику на ссылку, блок появляется. Для тех, у кого в браузере отключен js, форма будет показана изначально.
На этом все.