Вы здесь

Как вывести хлебные крошки на основе $_GET параметра?

0

Вебформа имеет адрес booking?event=XX, где
XX=NID сторонней ноды с событием.

Мне нужно вытянуть из этой ноды title и taxonomy field value (category name).

Есть замечательный модуль Path Breadcrumbs который позволяет зазгшрузить ноду по ID из URL. Но вот беда: он не поддерживает GET параметры в URL.

Я вижу два варианта решения:
1. Передавать clean аргумент типа booking/XX . Но как это сделать? Такого пути для страницы в Друпал не существует, и он отдает 404 ошибку. Панели?
2. Устанавливать breadcrumbs вручную. Установка должна быть не в теме, так логики в теме быть не должно. Как?

Версия Drupal: 
7.x
Вопрос задан 26.12.2015 - 21:17
Аватар пользователя Artu
Artu
24

Ответы

1

Задавайте в модуле:

function MODULE_preprocess_page(&$variables) {
  if ( /* нужная проверка на текущую страницу, форму и т.п., при которой будут меняться хлебные крошки */) {
    $breadcrumb = array();
    $breadcrumb[] = l(t('Home'), '<front>'); // главная страница

    // Достаем ноду по ID
    $my_node_id = (int)($_GET['event']);
    if($my_node_id) {
      $my_node = node_load($my_node_id);
      $my_title = check_plain($my_node->title); // заголовок ноды. Из $my_node достанете и нужную таксономию

      // Добавляем в хлебные крошки текущую страницу с загруженным заголовком ноды:
      $breadcrumb[] = l($my_title, 'booking', array('query' => array('event' => $my_node_id)));
    }
    drupal_set_breadcrumb($breadcrumb);
  }
}

Код не запускал — могут быть ошибки. Написал, чтобы показать направление.

Ответ дан 26.12.2015 - 21:54

Спасибо. Похоже работает.
Почему-то немного примеров гуглится для программного задания крошек.
Только одна проблемка тут: я не вижу текущий путь страницы.

Комментарий оставлен 26.12.2015 - 22:48

Что вы имеете ввиду под текущем путем страницы?
Что именно не получается достать?

Комментарий оставлен 26.12.2015 - 23:09