views + breadcrumb = NULL

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

Аватар пользователя LiC LiC 3 февраля 2009 в 10:55

Облазил форум - решения так и не нашёл.
Везде описывается решение проблем с привязкой НОДЫ к "хлебным крошкам" (модули menu_breadcrumb, node_breadcrumb, custom_breadcrumb и т.д.)
но вьюс - это не нода.

подробнее:

есть такая структура:
пункт меню 1 (список)
подпункт 1.1 (список)
нода 1
нода 2
.....
подпункт 1.2 (список)
пункт меню 2 (список)
подпункт 2.1 (список)
подпункт 2.2 (список)

каждый подпункт - список материалов определённого типа. выводится вьюсом (по типу документа)
каждый основной пункт - список материалов определённого типа. выводится вьюсом (по типам документов обоих вложенных типов)

посредством node_breadcrumb добился того, что в ноде выводится её положение в структуре (например, "пункт меню 1 >> подпункт 1.1 >> нода 1" )

но на самих вьюсах (например, "пункт меню 1" или "подпункт 1.1") - пусто.
причём, отключть "скрывать крошки, если ссылка только на главную" - бесполезно.
мне-то надо, чтоб на "подпункт 1.1" в крошках выводилось "Главная >> пункт 1"

прошу о помощи
(прошу прощения за "многа букафф" - специально старался расписать ситуацию поподробнее)

Комментарии

Аватар пользователя T-34 T-34 22 февраля 2009 в 20:13

Присоединяюсь... Со включенным видом taxonomy_term на страницах терминов в строке breadcrumbs отображается только "Главная", никакие модули не помогают. В пятом друпале эта проблема как-то решалась, в шестом видимо все сложнее из-за нового модуля Views.

Кстати, интересен комментарий разработчика по этому поводу:

"merlinofchaos" wrote:
Breadcrumbs are created automatically by the menu system, Views doesn't get involved with this process.
(http://drupal.org/node/362366)
Views не вмешивается в процесс создания крошек из меню, но и не дает вмешаться в процесс их создания сторонним модулям...

Аватар пользователя LiC LiC 23 февраля 2009 в 0:13

хотел уже попробовать переопределить "крошки" вручную (через template.php)...
грубо, но я уже и на такое согласен.
но....

не могу поймать в каком событии это можно сделать ((
попробовал прямо в breadcrumb(), но там почему-то переменная variables - пуста...
продолжаю копать...

Аватар пользователя spam123456 spam123456 6 марта 2009 в 11:18

можно попытаться в phptemplate_preprocess_page перехватить (только нужно море условий, т.к. через неё выводятся все страницы), но мне лень было и я использовал
в самом Views у страницы поле
«Заголовок: PHP code»

<?php
    $breadcrumb = array();
    $breadcrumb[] = l(t('Home'), "<front>");
    $breadcrumb[] = l('Портфолио', 'portfolio');
    if(arg(1) && $term1 = taxonomy_get_term(arg(1))){
        $breadcrumb[] = l($term1->name, 'portfolio/'.$term1->tid);
        if(arg(2) && $term2 = taxonomy_get_term(arg(2))){
            $breadcrumb[] = l($term2->name, 'portfolio/'.$term1->tid.'/'.$term2->tid);
        }
    }
    drupal_set_breadcrumb($breadcrumb);

?>

по аналогии можно и дерево терминов вытащить через taxonomy_get_tree... думаю общую идею передал - где можно переопределить крошки для views..

для крошек в ноде лучше всего нарисовать свой модуль, в котором через hook_nodeapi() при $node->type = 'тип ноды', $op = 'view', $a4 = true (страница) вставить свои крошки... но хочется вообще без модуля обойтись (как нибудь через template.php)..

Аватар пользователя spam123456 spam123456 10 марта 2009 в 13:49

кстати - почему dreadcrumb (- крошки Дреда получается можно тогда уж написать deadcrumb Wink ) эту страницу невозможно будет найти через google, пока будет стоять такой заголовок.. Константин (LiC) или модеры - исправьте заголовок пожалста..