Не люблю я из-за каждого пустяка устанавливать дополнительный модуль. Кроме того, для создания гостевой книги я увидел лишь один модуль, но прочитав его возможности даже устанавливать не стал. Слишком уж он навороченным мне показался. Поэтому решил сделать гостевую книгу средствами самого Друпала.
За основу я взял модуль Comment. По сути дела это те же отзывы, которые можно просматривать в любом удобном виде, благо для этого есть настройки. Как правило, практически на каждом сайте задействован этот модуль и, скорее всего, в дополнение к нему установлено еще один-два модуля(наподобии captcha или comment_notify). В прочем comment_notify нам в гостевой книге не особо нужен, а вот captcha был бы не лишним.
Итак, для создания гостевой книги я для удобства завел новый тип материала "guestbook". Создаем материал данного типа с заголовком "Отзывы" или "Гостевая книга", кому как больше нравится, а поле с содержимым оставляем пустым. Нам ведь по большому счету не нужно ничего писать, т.к. предполагается что люди не будут комментировать наш материал, а будут оставлять комментарии(отзывы) о сайте вцелом. Так что получаем пустую страницу с заголовком "Гостевая книга" и с формой для отправки комментариев.
Но слова "Комментарии" и "Отправить комментарий" не очень то подходят для гостевой. Хотелось бы их заменить. Для этого нам потребуется внести изменения в файл template.php(файл, который лежит в папке вашей темы).
Допустим, что наша тема называется "my_theme", тогда в template.php пишем следующий код:
function my_theme_preprocess_comment_wrapper(&$vars) { if ($vars['content'] && $vars['node']->type != 'forum' && $vars['node']->type != 'guestbook') { $vars['content'] = '<h2 class="comments">'. t('Comments') .'</h2>'. $vars['content']; } if ($vars['content'] && $vars['node']->type == 'guestbook') { $vars['content'] = str_replace('<label for="edit-comment">'.t('Comment'), '<label for="edit-comment">'.t('Отзыв'), $vars['content']); $vars['content'] = str_replace('<h2>'.t('Post new comment').'</h2>', '<h2>'.t('Оставить отзыв').'</h2>', $vars['content']); $vars['content'] = str_replace('<li class="comment_reply', '<li class="comment_reply_hidden', $vars['content']); } }
Вполне возможно, что данная функция уже присутствует в вашем файле (т.к. в теме garland такая функция есть), если же нет, то тогда придется добавить. В этой функции мы как раз заменяем одно слово на другое. На всякий случай я делаю замену вместе с частью HTML кода, чтобы не попортить текст самих комментариев. Всего делается 3 замены:
- "Комментарий" заменяется на "Отзыв"
- "Отправить комментарий" заменяется на "Оставить отзыв"
- Ссылка "Ответить" делается невидимой
Вряд ли гостевая книга - это место для обсуждений, поэтому я считаю, что возможность оставлять ответы на чьи-то отзывы является в данном случае лишней, поэтому и возникает необходимость третьей замены. Для того, чтобы ссылка "Ответить" сделалась невидимой необходимо в файле style.css(опять же в вашей теме) добавить класс:
ul.links li.comment_reply_hidden { display: none; }
На этом все. Гостевая книга готова.
Интересное решение. Тоже искал что-нибудь простое. Попробую.
Недостаток пока вижу один: если на сайте несколько тем (например для мобильных пользователей, то template.php надо править для каждой темы
Отличный метод. сейчас протестю.
А где можно "Демо" глянуть ? Хотя б одним глазком.
Например, здесь: http://www.penetron12.ru/questions
Да прикольно. Попробую прилепить у себя.
Возник еще вопрос. У меня комментировать материалы могут только залогиненные пользователи. Как можно разрешить комментировать гостям именно тип материала guestbook ?
Тут кумекать надо. Стандартными средствами без дописывания по-моему не обойтись.
Да то то и оно. Хотелось что б соответственно теме "Простая гостевая книга на Drupal без дополнительных модулей". А похоже как не крути дополнения будут..
В вашем случае похоже что да. Просто сейчас вроде как тенденция к тому, что комментарии дают возможность оставлять без регистрации (чтобы юзеров не напрягать).
Хорошо. Какая версия друпала? Пробовал на D7 - ничего не произошло, даже ошибку не выдает.
Версия 6-я. Статья написана в январе 2011. На тот момент по-моему еще 7-я версия официально не вышла (беты на в счет).
Отправить комментарий