Найдено решение древнего бага со ссылкой на комментарии и пейджером.

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

Аватар пользователя Шалтай Шалтай 1 октября 2010 в 1:47

Проблема известная, тянущаяся ещё с четвёртой версии.

Суть: при использовании на сайте блока "последние комментарии" (встроенного или views), когда настроен пейджер и задано количество комментариев на страницу, то, если комментарии попадают на вторую и последующую страницы, то ссылка ведёт на саму ноду, а не на, собственно, комментарий.

Пример: у есть нода site.com/node/1, настройка пейджера - пять комментариев на страницу. Для первых пяти комментариев всё корректно, но для шестого ссылка будет http://site.com/node/1#comment-6 (хотя, корректная должна быть http://site.com/node/1?page=1#comment-6).

Внятного решения этой проблемы не существовало до недавних пор. Были достаточно корявые и не всегда работающие способы исправить это через javascript или патчами ядра.

Сейчас, наконец то, от этого бага на "шестёрке" удалось окончательно избавиться с помощью модуля Permalink (и патча к нему).

http://drupal.org/project/permalink

Этот модуль добавляет постоянные ссылки на каждый из комментариев вида:

http://site.com/comment/100#comment-100

Дополнительно к модулю необходимо скачать патч.

http://drupal.org/node/886886

Этот патч позволяет views использовать постоянные ссылки на комментарии.

Скачиваем модуль, распаковываем, скачиваем патч (он состоит из двух частей - собственно патча и дополнительного файла в директории /includes). Включаем. После этого остаётся только настроить стандартный view под названием comments_recent.

Два замечания:

1) Permalinks не очень хорошо работает, если комментарии имеют сложную древовидную иерархию. Эту проблему решает известный давно модуль flatcomments.
2) Модуль, фактически, при каждом создании комментария генерирует ещё один синоним для ноды. Не очень хорошая ситуация для поисковиков. Поэтому, в robots.txt советую добавить строчку:

Disallow: /comment/

Или привести к этому виду существующую там строчку

Disallow: /comment/reply/

Также, в настройках модуля есть возможность добавлять к ссылке дополнительные rel (noindex, nofollow), но, почитав ряд публикаций, я решил эти настройки отключить.

Надеюсь, это будет вам полезным.

Комментарии

Аватар пользователя Ch Ch 1 октября 2010 в 9:07

"Шалтай" wrote:
Внятного решения этой проблемы не существовало

Ну тут тоже костыли, модуль + 2 патча.

Аватар пользователя Шалтай Шалтай 1 октября 2010 в 10:39

"Ch" wrote:
Ну тут тоже костыли, модуль + 2 патча.

Два модуля и один патч, это раз. Второй модуль не всегда обязателен.
Решение, в отличие от предыдущих, универсальное и работает для любой конфигурации, это два.
Окончательно друпал избавится от этого бага только в семёрке - тем же способом, пермалинком на комментарии. Советы по robots.txt при этом для 7 даются те же, это три.

Аватар пользователя Sander80 Sander80 15 декабря 2010 в 20:05

Хороший пост!

А нет идеи, реально ли на основе этого во view, основанном на нодах, сделать ссылку на последний непрочитанный комментарий?

Аватар пользователя iNFerNo iNFerNo 26 декабря 2010 в 16:53

это решение относится к нодам кликая на которую вылезал бы последний комент. а не первый на первой странийце