Форма комментирования в Drupal
Стандартная форма комментирования в CMS Drupal настолько далека от идеала, что без некоторых доработок ее использование крайне нецелесообразно. Ниже распишу по пунктам, как с помощью дополнительных модулей и небольших изменений в коде привести ее в человеческий вид. Актуально для Drupal 6.x /в 5.x свои грабли, а 7.x стабильной версии пока еще нет/.
1. Разрешаем комментировать анонимным пользователям.
Управление пользователями/Разрешения/модуль comment
Здесь настраиваем права доступа для анонимусов.
2. По дефолту в форме комментирования есть всего два поля – тема комментария и сам комментарий. Добавляем поля имя, e-mail, url и убираем поле «тема»
Содержание/Типы материалов
Нажимаем «изменить» у интересующего нас типа и переходим на «Установки комментариев», где выставляем нужные опции.
Я обычно ставлю:
- Режим показа по умолчанию:
Плоский список – развёрнутый
- Порядок сортировки по умолчанию:
По дате - сначала старые
-Управление комментариями:
Не показывать
-Анонимные комментарии:
Анонимные пользователи должны указывать контактную информацию
-Поле темы комментария:
Отключено
-Просмотр комментария перед отправкой:
Необязательно
-Расположение формы отправки комментария:
Показывать ниже сообщения или комментариев
3. Капча
Встроенной капчи нет, поэтому устанавливаем модуль. Я предпочитаю математическую капчу, за нее отвечает модуль captcha. Качаем, ставим, настраиваем, переводим интерфейс/все делается в админке/.
4. Кнопка «ответить» в комментариях
Какой бы вид отображения мы бы не выбрали, плоский или древовидный, под каждым комментарием будет оставаться кнопка ответить. Чтобы ее убрать, качаем модуль flatcomments. После установки идем в Содержание/Типы материалов, переходим по «изменить» напротив интересующего нас типа материала и ставим галку напротив Do not show a reply link on comments.
5. Возвращаемся к полю «тема комментария». Хоть мы и убрали это поле, при публикации коммента она будет отображаться в виде первых слов комментария. Чтобы это исправить, открываем файл comment.tpl.php в папке с нашей темой и удаляем или закомментируем следующие строки:
<?php if ($title) echo $title; ?>
6. Для анонимусов под формой комментария будет дан выбор, какой фильтр ввода использовать, и приведена ссылка «Подробнее о форматировании».
Если первое решается через ограничение прав доступа анонимусов к изменению форматов ввода, то чтобы убрать ссылку на ф.а.к. по форматированию, придется лезть в код.
Открываем файл template.php в корне нашей темы и добавляем внизу пару строк:
- function phptemplate_filter_tips() { return ''; }
- function phptemplate_filter_tips_more_info() { return ''; }
7. После публикации комментария сразу за именем анонимуса всегда пишется (не проверено), даже если премодерация отключена. Чтобы эту надпись убрать, снова открываем template.php и вниз кода вставляем следующее:
- function phptemplate_username($object) {
- if ($object->uid && $object->name) {
- // Shorten the name when it is too long or it will break many tables.
- if (drupal_strlen($object->name) > 20) {
- $name = drupal_substr($object->name, 0, 15) .'...';
- }
- else {
- $name = $object->name;
- }
- if (user_access('access user profiles')) {
- $output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
- }
- else {
- $output = check_plain($name);
- }
- }
- else if ($object->name) {
- // Sometimes modules display content composed by people who are
- // not registered members of the site (e.g. mailing list or news
- // aggregator modules). This clause enables modules to display
- // the true author of the content.
- if ($object->homepage) {
- $output = l($object->name, $object->homepage);
- }
- else {
- $output = check_plain($object->name);
- }
- //$output .= ' ('. t('not verified') .')';
- }
- else {
- $output = variable_get('anonymous', t('Anonymous'));
- }
- return $output;
- }
8. Теперь вид информации о комментирующем приобрел такой вид «Опубликовано Гость в Вс, 2009-07-12 21:48». Красиво конечно, но хочется «Гость - 12/07/2009 в 21:48».
Для этого сначала открываем файл comment.tpl.php и заменяем <?php echo $submitted; ?> на <?php echo "$author - $date"; ?>.
Потом идем в Настройка сайта/Дата и время, выбираем Средний формат даты: Пользовательский формат и прописываем шаблон даты d/m/Y в H:i.
Вот и все. Теперь у нас человеческая форма комментирования.
PS
1. У шестого друпала очень агрессивное кэширование, поэтому чаще всего сделанные изменения вы не увидите без чистки кэша - Настройка сайта/Производительность/Очистить кеш данных.
2. Иногда вместо имени функции «phptemplate» надо вставить название шаблона/имя папки с шаблоном/. Так что если после вставки кода сайт не открывается или код не работает – заменяем phptemplate на название нашего шаблона.
3. Описанная реализация наиболее правильная, т.к. не приходится редактировать ядро и все изменения проводятся только в файлах шаблона.

С пунктами 6-7 разбирается модуль better_formats, добавляющий соответствующие разрешения.
Спасибо! Применил для своего сайта.
Отправить комментарий