Хлебные крошки через API, без модулей, помогите найти ошибку

Главные вкладки

Аватар пользователя сельский библиотекарь сельский библио... 6 февраля 2015 в 19:30

На сайте строго выдержана структура URL: каталог, в нем категории, в категориях ноды.
Поэтому заманчиво отразить именно эту структуру в хлебных крошках.

Например, для
domain/catalog/plastic/okno.htm
должно получиться
Главная / Каталог / Пластиковые окна / Окно такое-то

Категорий всего 10, поэтому прописать все вручную в template.php не должно быть проблемой.

Я пытаюсь получить путь к ноде и проверить вхождение в него ключа категории.
Но почему-то у меня не работает. Пример:

function my_theme_breadcrumb($variables) {
   if (arg(0) == 'node') {
      if (is_numeric(arg(1))) {
         $node = node_load(arg(1));
                 $path = drupal_get_path_alias($_GET['q']);
                 $key = strpos($path, 'plastic');
         if ($node->type == 'product_display' and $key === true) { // Проверям тип ноды и категорию по URL
            $variables['breadcrumb'][0] = '<a href="/">Главная</a>'; // Ссылка на главную
            $variables['breadcrumb'][1] = '<a href="/catalog/">Каталог</a>'; // Ссылка на Каталог
            $variables['breadcrumb'][2] = '<a href="/catalog/plastic/">Пластиковые окна</a>'; // Ссылка на категорию
            $variables['breadcrumb'][3] = $node->title; // Текущая страница без ссылки
         }
      }
   }
        return theme_breadcrumb($variables);
}

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

Помогите найти ошибку. Спасибо!

Комментарии

Аватар пользователя Plazik Plazik 6 февраля 2015 в 20:54

Меня всегда удивляют такие темы, зачем велосипед изобретать, если у вас простой сайт, поставьте path_breadcrumbs и не парьтесь.
Если была бы структура сложная или сайты высоко нагруженный, тогда можно было свое писать...

Аватар пользователя Plazik Plazik 7 февраля 2015 в 9:51

"сельский библиотекарь" wrote:
Path Breadcrumbs works only with non-aliased path (i.e. use node/1 (node/%node) instead of news/my-news-title).

Со всем он работает, и с node/%node и contact.
"сельский библиотекарь" wrote:
Может быть подскажете, что не так с моим кодом? Вопрос целесообразности - дело десятое. )

Поставьте модуль devel и в разных местах функции выводите dpm($variables) и смотрите какая там структура.