Пишите письма → alex@covax.me

Настройка и темизация комментариев [Drupal 7]

Друпаловские комментарии «из коробки» выглядят печально, поэтому изначально к сайту я прикрутил комменты от ВК, потом перебрал еще кучу сервисов типа какла, дискаса и хиперкомментов, но ни один из них меня так и не удовлетворил, поэтому я решил все-таки добить друпаловские коменты под себя и навсегда (или хотя бы надолго) закрыть для себя этот вопрос.

Итак, плюсы:

  • Есть готовый модуль коментов, в котором достаточно много функциональных возможностей, если покопаться.
  • Комменты индексируются ПС и хранятся в вашей базе, т.е. вы полностью независимы от работоспособности сторонних сервисов.
  • Есть какие-никакие мануалы по теме в сети.

Минусы:

  • Дефолтные коменты выглядят совсем уж убого.
  • В админке многое хрен настроишь, придётся ковыряться «внутрях».
  • Для некоторых функций надо либо писать свои скрипты и пользоваться хуками, либо ставить дополнительные модули, например, для добавления коментов без перезагрузки страницы или для подписки на уведомления о новых ответах.

Начнем. Модуль 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" в котором выводим нашу ссылку.

Должно получиться так:

<div 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, форма будет показана изначально.

На этом все.

Без инсайтов, пожалуйста

Канал в Телеге. Короткие заметки, текущие мысли, полезные ссылки.