Что такое контекстные ссылки? Это ссылки, которые позволяют администратору сайта быстро перейти к настройкам, например блока и каждый из вас их не однократно использовал. Но, что делать, если вы хотите добавить свои контекстные ссылки? Как всегда, разбираться будем на конкретном примере. Итак, в Drupal 7, по умолчанию идет модуль Search, который должен организовывать поиск по сайту и предоставляет для этого форму поиска в блоке. В самих контекстных ссылках данной формы, кроме как настроек блока, больше ничего не присутствует:
Давайте добавим для данного блока ссылку, которая будет вести на страницу настроек модуля Search. Для переопределения контекстных ссылок, отвечает хук:
hook_contextual_links_view_alter()
Как работать с хуками думаю вы знаете. Теперь нам лишь осталось добавить следующий код в файл template.php вашей темы или в ваш модуль, это кому как удобно.
<?php /** * Implements hook_contextual_links_view_alter() */ function hook_contextual_links_view_alter(&$element, &$items) { if (is_object($block) && $block->module == 'search') { // проверяем, что данный блок относится к модулю Search // добавляем контекстную ссылку 'title' => t('Settings search'), // заголовок контекстной ссылки 'href' => url('admin/config/search/settings', array('absolute' => TRUE)), // абсолютный путь контекстной ссылки ); } }
После чего чистим кеш сайта и наблюдаем результат, думаю из комментариев в коде, вам все понятно.
Как вы видите, новая контекстная ссылка ведет нас на страницу настроек модуля. На этом можно закончить, ибо с задачей справились.
Комментарии (1)
А как добавить такое к определенному типу материала? Чтобы менять на странице ноды. И есть ли возможность определенным пользователям менять только часть информации в ноде, например у меня есть поле в ноде стату, он или открыт или закрыт, можно менять только его ?