Как сделать ссылку на первый непрочитанный комментарий ноды

Казалось бы, проблем нет - просто добавить якорь #new к ссылке на ноду, и при заходе в ноду будет пролистывать сразу до нового комментария. Однако это неверно - если комментариев много и они разделены постранично, то вместо того, чтобы попадать на нужную страницу с непрочитанным сообщением вы всегда будете оставаться на первой.
Чтобы решить эту проблему, нужно воспользоваться функцией comment_new_page_count. http://api.ubercart.me/api/drupal/drupal%21modules%21comment%21comment.m...
Как ей пользоваться - личное дело каждого, например у меня эта проблема была в списке тем форума, который выводился через views, поэтому я использовал хук _pre_render и добавил к каждой ссылке на тему форума еще параметр ?page=X#new при наличии новых сообщений:

function rota102_stuff_views_pre_render(&$view) {
  foreach($view->result as $key => $row) {
    if (isset($row->node_new_comments) && $row->node_new_comments > 0) {
      //Если есть новые комменты, то меняем ссылку на заголовке форумного топика - ссылаемся сразу на последний коммент
      $page = comment_new_page_count($row->node_comment_statistics_comment_count, $row->node_new_comments, $row->_field_data['nid']['entity']);
       $link = '';
       if ($page) $link = '?page=' . $page['page'];
       $link .= '#new';
       $view->result[$key]->nid .= $link;
    }
 }
}

Удачи!

Drupal 7

Комментарии

Добавить комментарий