Добавляем ссылку к ноде в Drupal

23 апреля 2014 - 15:27

При создании сайта на Drupal может понадобиться добавить к стандартным ссылкам ноды («Подробнее», «Добавить комментарий» и т.д.) свою ссылку. Например, к нодам типа материала «Услуга» нужно добавить ссылку на форму заказа. Причем в качестве дополнительного параметра в ссылку нужно передать название услуги (заголовок ноды).

Для решения поставленной задачи нам понадобится в файле template.php нашей темы имплементировать хук hook_node_view_alter:

function THEME_node_view_alter(&$build) {
  if ($build['#node'] -> type == 'service') {
    $build['links']['node']['#links']['order-link'] = array(
      'title' => 'Заказать',
      'href' => 'node/10',
      'query' => array(
        'service' => $build['#node'] -> title,
      ),
    );
  }
}

Не забываем заменить THEME на название нашей темы и очистить кеш.

Как видно из приведенного выше кода, вначале мы проверили тип ноды и для всех нод с машинным именем service добавляем ссылку на страницу с формой (в нашем примере это node/10, адрес будет автоматически заменен на ЧПУ-псевдоним, если таковой имеется). Заголовок ноды передаем в массив дополнительных аргументов query. В целом мы можем использовать те же параметры для формирования ссылки, что и при использовании функций для работы с URL в Drupal.