• статья
  • pantey

Добавляем свои контекстные ссылки

11.03.2015

Что такое контекстные ссылки? Это ссылки, которые позволяют администратору сайта быстро перейти к настройкам, например блока и каждый из вас их не однократно использовал. Но, что делать, если вы хотите добавить свои контекстные ссылки? Как всегда, разбираться будем на конкретном примере. Итак, в Drupal 7, по умолчанию идет модуль Search, который должен организовывать поиск по сайту и предоставляет для этого форму поиска в блоке. В самих контекстных ссылках данной формы, кроме как настроек блока, больше ничего не присутствует:

Видим, что для данного блока доступен лишь переход в настройки блока

Давайте добавим для данного блока ссылку, которая будет вести на страницу настроек модуля Search. Для переопределения контекстных ссылок, отвечает хук:

  1. hook_contextual_links_view_alter()

Как работать с хуками думаю вы знаете. Теперь нам лишь осталось добавить следующий код в файл template.php вашей темы или в ваш модуль, это кому как удобно.

  1. <?php
  2. /**
  3.  * Implements hook_contextual_links_view_alter()
  4.  */
  5. function hook_contextual_links_view_alter(&$element, &$items) {
  6. $block = isset($element['#element']['#block']) ? $element['#element']['#block'] : NULL;
  7. if (is_object($block) && $block->module == 'search') { // проверяем, что данный блок относится к модулю Search
  8. // добавляем контекстную ссылку
  9. $element['#links']['settings-search'] = array(
  10. 'title' => t('Settings search'), // заголовок контекстной ссылки
  11. 'href' => url('admin/config/search/settings', array('absolute' => TRUE)), // абсолютный путь контекстной ссылки
  12. );
  13. }
  14. }

После чего чистим кеш сайта и наблюдаем результат, думаю из комментариев в коде, вам все понятно.

Добавили контекстную ссылку для блока формы поиска

Как вы видите, новая контекстная ссылка ведет нас на страницу настроек модуля. На этом можно закончить, ибо с задачей справились.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (1)

Profile picture for user Алексей К
Денис
29.03.2015

А как добавить такое к определенному типу материала? Чтобы менять на странице ноды. И есть ли возможность определенным пользователям менять только часть информации в ноде, например у меня есть поле в ноде стату, он или открыт или закрыт, можно менять только его ?