Drupal → Добавляем контекстные ссылки для комментариев

26.12.2010

В семёрке контекстные ссылки (contextual links) есть у материалов и блоков, но отчего-то их нет у комментариев.

Код ниже добавляет к каждому комментарию ссылку на редактирование и удаление:

Контекстные ссылки у комментариев

/**
 * Implements hook_menu_alter().
 */
function mymodule_menu_alter(&$items) {
  $items['comment/%comment/edit']['context'] = MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE;
  $items['comment/%/approve']['context'] = MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE;
  $items['comment/%/delete']['context'] = MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE;
}

/**
 * Implements hook_comment_view().
 */
function mymodule_comment_view($comment, $view_mode, $langcode) {
  if ($view_mode == 'full') {
    $comment->content['#contextual_links']['comment'] = array('comment', array($comment->cid));
  }
}

Обычные ссылки за ненадобностью можно скрыть — в template.php добавить:

function THEMENAME_preprocess_comment(&$vars) {
  hide($vars['content']['links']);
}

Не забываем сбросить кэш.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

скрытие ссылок через template.php не работает в bartik.
А вообще можно спрятать и через comment.tpl.php строчкой hide($content['links']); и смотреть что бы не было строчки print render($content['links']);

Заметил что они работают только для админа. Хотя Contextual links и редактирование комментариев для пользователей включено. Какие ещё разрешения влияют на контекстные ссылки?

Если бы было всё так просто, я бы не спрашивал ))
Дело в том, что работать будет это только для тех групп, которым разрешено полное управление всеми комментариями. Если же пользователю разрешено только редактирование своего комментария, то контекстные ссылки не появятся.

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