Модуль Comment Notify в Drupal 5.x
Думаю, практически в каждом блоге, посвещенном IT-тематике, рано или поздно всплывает тема CMS, на которой он основан. Я не исключение. Поэтому напишу решение одной из проблем в Drupal, с которой я столкнулся. Интересно только "друпалерам".
Захотел я прикрутить к сайту отсылку комментариев для зарегистрированных и анонимных пользователей на почту. Примерно так, как это сделано в LiveJournal. Выяснилось, что модуль Comment Notify для реализации этого функционала находится в стадии dev (разработка). Что само по себе странно. Ни за что не поверю, что такая возможность не востребована.
После установке модуля обнаружилось, что у меня он работает крайне криво. Во первых, письма отсылаются не от email, прописанном в настройках сайта, а от системного email типа root@номер_площадки.название_хостера.ру. Во вторых, при ответе на комментарии пользователь получал кучу предупреждений вида:
* user warning: Table 'comments' doesn't exist query: update comments set notify = 0 where cid = 40 in database.mysql.inc on line 172.
* warning: array_merge() [function.array-merge]: Argument #2 is not an array in common.inc on line 1940.
* warning: Invalid argument supplied for foreach() in common.inc on line 1971.
* warning: array_merge() [function.array-merge]: Argument #2 is not an array in common.inc on line 1940.
* warning: Invalid argument supplied for foreach() in common.inc on line 1971.
* warning: array_merge() [function.array-merge]: Argument #2 is not an array in common.inc on line 1940.
* warning: Invalid argument supplied for foreach() in common.inc on line 1971.
Хочу сразу сказать спасибо участникам проекта drupal.ru. Меня направили в нужном направлении.
Но для решения проблемы понадобились навыки программирования. Потому что в модуле я обнаружил следующие баги:
- Один из SQL-запросов был составлен без учета префиксов таблиц. В случае, если префиксы не используются, все проходит нормально. Но у меня они как раз используются. Исправил.
- Вызов функции для генерации email происходил с передачей неинициализированного массива. Вообще говоря, мои скудные познания PHP говорят мне, что такая конструкция по идее должна бы работать. Возможно, дело в особенностях конкретной сборки PHP у хостера. В любом случае, принудительная инициализация массива, которую я добавил, лишней не будет. В результате письма стали генерироваться с правильным email и исчезли предупреждения, связанные с массивом.
В общем, в итоге все вроде заработало. Уведомления о комментариях рассылаются.
Если кому-нибудь нужно, то доработанный модуль comment_notify находится в приложении к этому посту.
| Прикрепленный файл | Размер |
|---|---|
| comment_notify-5.x-1.x-dev-solarwind.zip | 31.88 КБ |
Комментарии
По ходу, когда
По ходу, когда мне от admin (at) solargate.ru пришло уведомление о новых комментариях, Gmail воспринял письмо как спам.
Очень странно.
Очень странно. Странно, потому что у меня тоже гмыл и письма проходят нормально. С письмами о регистрации есть такие проблемы - действительно в спам отправляет. Но шаблон письма о регистрации я переформулирую...
Аналогичная
Аналогичная ситуация.
Я думаю, что это нормально. По моему опыту, письма, сформированные скриптами на многих форумах и прочих сайтах превентивно размечаются мейлерами как спам. Пометил письмо как "не спам", полагаю, последующие письма будут правильно восприняты.
___________________________________________________
freelib.ru - свобода выбора для читателей электронных книг :)
В том то и дело,
В том то и дело, что как минимум человек 5 отметили эти письма как не спам. Но они все равно туда сыпятся. Ну да ладно. Я пока вообще отменил подтверждение регистрации по емылу. А потом что-нибудь придумаю.
А вот и нет. Мне
А вот и нет.
Мне уведомление о новом комменте свалилось уже совершенно нормально. :)
Я пользуюсь клиентами, которым уж если сказано, что это "не спам" - никогда больше в спам письмо не закинут. Нормальная реализация технологии whitelist...
___________________________________________________
freelib.ru - свобода выбора для читателей электронных книг :)
Re: А вот и нет.Мне
Простите за офтоп...но эти молоточки из Стены Пинк Флойд? -)
Re: А вот и нет.Мне
Из неё, конечно. :)
В нормальном качестве не нашёл, потому отрисовал в "иллюстраторе".
Re: А вот и нет.Мне
Здорово что кто-то еще помнит этот чудный мюзикл, эту суперскую группу -)
Re: А вот и нет.Мне
Ну это уже классика, про них помнят. :-)
Re: А вот и нет.Мне
Роджер Уотерс - для меня любимый исполнитель и автор музыки и текстов.
Re: Аналогичная
Thanks for the information
Re: Модуль Comment Notify в Drupal 5.x
хм, поставил..и оригинальный модуль comment_notify-5.x-1.3.tar.gz
и ваш попробовал
что-то ни от того..ни от этого уведомления не приходят -(
где то настролил что-то неправильно?
в любом случае человеческое спасибо за доработку
Re: Модуль Comment Notify в Drupal 5.x
А email в свойствах сайта прописан? Ошибки какие-нибудь пишет?
Re: Модуль Comment Notify в Drupal 5.x
прописан.
скорее всего я где-то галочку не поставил -)
Re: Модуль Comment Notify в Drupal 5.x
Там еще у пользователя должна в профиле галочка стоять для получения емылов.
А какой хостинг, кстати? Может в нем дело? Потому что странно, должно работать. Вы же получаете с моего блога уведомления о каментах сейчас?
Re: Модуль Comment Notify в Drupal 5.x
хостинг www.knutov.net
с хостингом все норм.
мне ведь приходят уведомления о забытом пароле к примеру -)
а вот галочку ставил..проверял.
пробовал зайти просто с другого браузера и сам прокоментировать..и посмотреть за результатом
ничего не пришло..
с этого сайта мне приходят уведомления.
только почему-то в двойном размере.
Re: Модуль Comment Notify в Drupal 5.x
Странно, конечно. Ну тогда надо отлаживать по коду...
Re: Модуль Comment Notify в Drupal 5.x
А вы случаем не забыли comment.module для модуля comment заменить? :)
- replace the comment.module with the file comment.module.dp5
(and please VOTE here http://drupal.org/node/156475
for getting the comment.module fixed in Drupal 6 or 7 finally)
Re: Модуль Comment Notify в Drupal 5.x
Кстати, да. Этот модуль действительно требует замены comment.module. Я и запамятовал уже...
Re: Модуль Comment Notify в Drupal 5.x
А может быть вы подскажете, как:
а) убрать тему в комментариях;
б) заставить поля комментариев сохранять введённое имя, мыло, хоумпейдж.
А то drupal.ru лежит сегодня, а ночь длинна.
Re: Модуль Comment Notify в Drupal 5.x
Ну вот видите. О чем писал, то и забыл.
Ещё у вас таб перескакивает на кнопки форматирования - жуть как не удобно. :(
Re: Модуль Comment Notify в Drupal 5.x
>Ну вот видите. О чем писал, то и забыл.
Ну так вопрос то был задан почти через два месяца после того, как я пост написал. ;-) Я уже модуль у себя настроил и забыл про него. Работает и ладно. ;-)
>Ещё у вас таб перескакивает на кнопки форматирования - жуть как не удобно. :(
Не совсем понял - где именно перескакивает?
Re: Модуль Comment Notify в Drupal 5.x
Мда, бывает. На дату я совсем не смотрел. :)
А если из поля темы табнуться, то попадаешь не в поле с комментарием, а на иконки форматирования текста.
Re: Модуль Comment Notify в Drupal 5.x
>А если из поля темы табнуться, то попадаешь не в поле с комментарием, а на иконки форматирования
>текста.
А, да, есть такое дело. У меня BUEditor в качестве редактора прикручен. Походу, это особенность его реализации. Так с лету я даже не знаю, как пофиксить. Но поковыряю его на эту тему...
TAB - это же просто...
Так это же очень просто - последовательность перехода по форме-то задать.
Ключевое слово tabindex="3" - при нажатии на TAB курсор перепрыгивает по порядку номеров. Сначала номер 1, потом 2, потом 3 и тд, хотя распологатся они могут как угодно - хоть в порядке 3 2 1 - тогда при табе форма начнет заполнятся с низу вверх.
Все поняли?
Re: Модуль Comment Notify в Drupal 5.x
Насчет темы в комментариях - это устанавливается в админке, Управление сайтом -> Содержание -> Комментарии -> Настройка. Там есть соответствующий пункт.
А по поводу запоминания полей - есть такой модуль. Не помню, как называется. На drupal.org я точно видел. Посмотрю еще, вспомню и отпишу.
Re: Модуль Comment Notify в Drupal 5.x
Чтобы тему надежно похерить (не только из формы ответа, а вообще), лучше использовать следующий скрипт: http://drupal.ru/files/remover.zip Там только надо раскамментить нужное вам.
Re: Модуль Comment Notify в Drupal 5.x
б) заставить поля комментариев сохранять введённое имя, мыло, хоумпейдж.
http://drupal.org/project/comment_info делает это
Re: Модуль Comment Notify в Drupal 5.x
Спасибо за пост... только что я уже не пробывал, не могу всё равно настроить :(
прозьба, вы бы не могли мне рассказать как именно менять comment.module, где он ваще находится.. и что это такое?
Заранее благодарен :)
Re: Модуль Comment Notify в Drupal 5.x
comment.module находится в /modules/comment. Этот файл нужно заменить на тот, который входит в состав comment_notify.
Re: Модуль Comment Notify в Drupal 5.x
На сколько я вас правильно понял, в /modules/comment нужно заменить файл comment.module на файл comment_notify.module ? ведь в состав comment_notify именно он входит?.. или его нужно переименовать?
Заранее благодарен :)
Re: Модуль Comment Notify в Drupal 5.x
Нет, не так. В состав пакета comment_notify входит файл comment.module.dp5. Его нужно переименовать в comment.module и записать вместо comment.module в /modules/comment. А все остальное от comment_notify закинуть в /modules/comment_notify.
Re: Модуль Comment Notify в Drupal 5.x
Спасибо огромное :) кажись заработало :)
Re: Модуль Comment Notify в Drupal 5.x
Я вот все думаю на чем делать новый сайт. Склоняюсь к друпалу.
Что-то смотрю у народа большие вопросы вызывает. Это плохо.
Re: Модуль Comment Notify в Drupal 5.x
Вопросы возникают, потому что у друпала действительно достаточно высокий порог вхождения. Это не так CMS, которую за 5 минут поставил и все заработало именно так, как нужно. Зачастую требуется некоторое понимание основных принципов как минимум. Но это следствие исключительной гибкости системы. Сделать на нем можно все, что угодно. Чем меня друпал и радует.
Re: Модуль Comment Notify в Drupal 5.x
А новая версия такими же багами обладает?
Re: Модуль Comment Notify в Drupal 5.x
Не знаю, я новую версию не смотрел...
Re: Модуль Comment Notify в Drupal 5.x
SolarWind, спасибо за подробную инструкцию. Тоже не мог ранее решить проблему, сейчас поставил, всё работает :)
Re: Модуль Comment Notify в Drupal 5.x
Привет,
я запарился устанавливать этот модуль, пока разобрался, что к чему, как делать патчи, как что, семь потов сошло :)
В общем, установил оригинальный модуль, вроде бы в настройсках сайта он как положено активирован, галочки везде стоят, но
1) уведомления так и не приходят
2) после того, как отправляешь комментарий, не появляется страница с комментарием, который оставил, а просто пустое окно. Таже фигня возникает и когда удаляю комментарий.
В чем может быть проблема? Спасибо!
Re: Модуль Comment Notify в Drupal 5.x
А у вас какой друпал? Может из-за версии что-то не работает. Я делал этот модуль еще для друпала 5.2 вроде бы...
Re: Модуль Comment Notify в Drupal 5.x
5.7, вроде бы.
Оказывается уведомления по мылу таки работают. Вот только 2-я проблема остается: сделав запись в блоге или оставив коммент - возникает лишь пустое окно, хотя сама запись появляется.
Я и не ваш модуль ставил а тот, который нашел на друпал.орг или друпалер.ру
Re: Модуль Comment Notify в Drupal 5.x
После установки модуля Comment Notify (Drupal 6) с зарегистрированными пользователями все нормально, а вот с анонимными проблема - нету поля “Имя”, “E-mail” и соответственно “Уведомлять меня по email о новых комментариях”
Помогите советом, где нужно активировать необходимые настройки, что бы было к примерно так же как здесь.
Re: Модуль Comment Notify в Drupal 5.x
Проблема частично решена - опцию (галочку) нашел в типе материалов, все появилось даже больше чем нужно.
В этой связи есть еще несколько пожеланий.
1. Как корректно убрать поле “Домашняя страница” от псевдокоментаторов, тем более у меня установлен модуль http://drupal.org/project/blockanonymouslinks который блокирует все ссылки в поле “Комментарий”
2. Как сделать галочку “Уведомлять меня по e-mail о новых комментариях” по умолчанию не отмеченной. Мне кажется это будет более логично, кому надо подписаться тот ее отметит.
Re: Модуль Comment Notify в Drupal 5.x
1. С этим даже не знаю, не разбирался. Вообще вроде был для этого готовый модуль, но я не помню его названия.
2. Я бы посмотрел в исходниках модуля comment_notify. Там в описании формы (хук form_alter скорее всего) поменять дефолтный true на false у соответствующего пункта. Говорю сейчас навскидку, исходники не смотрел, но скорее всего где-то там оно и есть.
Модуль Comment Notify в Drupal 6.x
Возможно, это кому то поможет...
При установке comment_notify-6.x-1.4 на drupal 6.x в разделе "администрирование-установки сайта-уведомления о комментариях" могут возникать ошибки:
* warning: array_fill() [function.array-fill]: Number of elements must be positive in D:\WEB\www\freeyourself\htdocs\includes\database.inc on line 253.
* warning: implode() [function.implode]: Bad arguments. in D:\WEB\www\freeyourself\htdocs\includes\database.inc on line 253.
* warning: array_keys() [function.array-keys]: The first argument should be an array in D:\WEB\www\freeyourself\htdocs\modules\user\user.module on line 502.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 query: SELECT p.perm FROM role r INNER JOIN permission p ON p.rid = r.rid WHERE r.rid IN () in D:\WEB\www\freeyourself\htdocs\modules\user\user.module on line 502.
Причина ошибки:
При определенном условии форма администрирования данного модуля пытается сделать запись в системный лог. Для этого модуль использует права "пользователя по умолчанию" (uid=0). Зачем они это так делают - фиг знает. Но если пользователя с uid=0 в базе нет, то выскакивают эти ошибки.
Пользователя с uid=0 мне пришлось удалить при переносе сайта на хостинг, т.к. поле uid автоинкрементальное и может начинаться с 1. При попытке вставить запись с uid=0 sql-скрипт падает с ошибкой. С счел, что нулевой пользователь не нужен, т.к. у него все остальные поля пустые, и попросту удалил его.
Как исправить:
Найти в файле comment_notify.module в коде функции comment_notify_settings() следующий фрагмент:
if (isset($enabled_types[$type]) && $enabled_types[$type] && variable_get('comment_anonymous_'. $type, COMMENT_ANONYMOUS_MAYNOT_CONTACT) == COMMENT_ANONYMOUS_MAYNOT_CONTACT) {
$account = user_load(array('uid' => 0));
...
я просто заменил
'uid' => 0
на
'uid' => 1
это id админа, который уж точно имеет все права. В принципе, можно закоментировать всю строчку, ибо в раздел администрирования все равно может попасть только админ.
Отправить комментарий