CMS Drupal

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

За основу я взял модуль 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 надо править для каждой темы

Отличный метод. сейчас протестю.

А где можно "Демо" глянуть ? Хотя б одним глазком.

admin аватар

Например, здесь: http://www.penetron12.ru/questions

Да прикольно. Попробую прилепить у себя.

Возник еще вопрос. У меня комментировать материалы могут только залогиненные пользователи. Как можно разрешить комментировать гостям именно тип материала guestbook ?

admin аватар

Тут кумекать надо. Стандартными средствами без дописывания по-моему не обойтись.

Да то то и оно. Хотелось что б соответственно теме "Простая гостевая книга на Drupal без дополнительных модулей". А похоже как не крути дополнения будут..

admin аватар

В вашем случае похоже что да. Просто сейчас вроде как тенденция к тому, что комментарии дают возможность оставлять без регистрации (чтобы юзеров не напрягать).

Хорошо. Какая версия друпала? Пробовал на D7 - ничего не произошло, даже ошибку не выдает.

admin аватар

Версия 6-я. Статья написана в январе 2011. На тот момент по-моему еще 7-я версия официально не вышла (беты на в счет).

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".