Кнопка "новые сообщения" на drupal-форуме

Главные вкладки

Аватар пользователя Sander80 Sander80 2 августа 2010 в 10:08

Начал я делать форум на Друпале. Если точнее, контент на Друпале у меня уже имелся, но основывался на типе "заметка" - это были вопросы пользователей, на которые я отвечал. Соответственно, вся информация была неструктурирована. Захотелось из этого сделать форум.

В процессе запуска форума возникла такая проблема - очень хочется сделать кнопку "новые сообщения" или там "обновленные темы" - ну как на не-Drupal форумах. Так крутился, этак, никак не получается. Вроде и view создал с фильтром has new content, а все равно никак.

Короче, как выяснилось, в текущей версии advanced_forum есть баг. Сабмиттить я его не буду - он уже исправлен в alpha-релизе (правда, тот у меня не пошел, превратив главную в кучу ошибок).

Поэтому предлагаю решение, работающее с текущей версией advanced_forum. Результат можно посмотреть по адресу http://help.sander.su/

- Начинаем с исправления бага в версии advanced_forum 6.x-1.1. При отметке всех сообщений прочитанными он правит дату посещения пользователя у тех нод, у которых либо дата последнего комментария больше, либо дата создания. Но дело в том, что это не совсем верный подход — нода могла быть изменена, дата создания может быть меньше, а дата изменения — больше. Поэтому берем файл modules/advanced_forum/advanced_forum.module и правим в двух местах WHERE (n.created > %d на WHERE (n.changed > %d

- Далее создаем view, показывающее непрочитанные сообщения. Для этого скачиваем и включаем drupal.org/project/views (если вы еще жто не сделали), новый view типа материал/node, фильтр на тип материала=forum и has new content. Поля: материал — заголовок, материал — последний комментатор, материал — дата последнего коментария. Первые два поля сделать ссылками. В заголовке делаем ссылку на /forum/markasread — пометить все прочитанными

- Продолжение шаманства — встраиваем ссылку на непрочитанные сообщения (допустим, этот view мы разместили по адресу new_posts) в ссылки форума. Для этого в modules/advanced_forum/styles/naked/advf-forums.tpl в самом конце перед div class=«forum-top-links» пишем
<? php $links[«new_posts»]=array(«title»=>«Список обновленных тем»,«href»=>«адрес сайта/new_posts»);?>

Возможно, это не лучшее решение, но оно работает. Кстати, я про создание форума на Drupal сделал тему на Хабрахабре (http://habrahabr.ru/blogs/drupal/100720/), поддержите, если есть аккаунт и желание.

Комментарии

Аватар пользователя erbe erbe 2 августа 2010 в 12:10

Еще advanced_forum не отображает количество просмотров, хотя раздел такой есть. Не подскажите, как это исправить?

Аватар пользователя Sander80 Sander80 3 августа 2010 в 11:27

erbe wrote:
Еще advanced_forum не отображает количество просмотров, хотя раздел такой есть. Не подскажите, как это исправить?

А точно должен? Я вообще этот раздел найти не могу...

Аватар пользователя gerboss gerboss 2 августа 2010 в 14:25

все вроде работает, только глюк лезет - у админов все нормально отображается, у обычных пользователей результат views двоиться, не пойму, с чего так...

Аватар пользователя Sander80 Sander80 2 августа 2010 в 15:42

"gerboss" wrote:
все вроде работает, только глюк лезет - у админов все нормально отображается, у обычных пользователей результат views двоиться, не пойму, с чего так...

странно, у меня такого не проявилось. может, версия views старая?
а по типу материала точно ограничение сделано?
в любом случае, мне кажется, можно у view сделать distinct чтобы решить проблему

Аватар пользователя erbe erbe 3 августа 2010 в 11:57

"Sander80" wrote:
А точно должен? Я вообще этот раздел найти не могу...

ой, все в порядке уже, это я счетчик не включила..)) А вообще колонка есть такая, работает.

Аватар пользователя erbe erbe 3 августа 2010 в 13:05

При просмотре списка тем, отображается колонка с количеством просмотров этих тем. По крайней мере при установке стиля blue_lagoon она есть автоматом.