xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

В семёрке контекстные ссылки (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
Похожие записи

Комментарии RSS

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

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

admin/people/permissions/list#module-contextual

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании