Вывод категорий через Views в меню

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

Аватар пользователя Тимофей Тимофей 22 мая 2015 в 19:42

Добрый вечер!

Дано: 2 уровня в словаре таксономии. 1 уровень "пустой" - служит только для структурирования 2 уровня.

Термин 1
---Термин 2: ноды
---Термин 3: ноды
---Термин 4: ноды
---Термин 5: ноды
Термин 6
---Термин 7: ноды
---Термин 8: ноды
---Термин 9: ноды
---Термин 10: ноды

На страницах нод надо вывести через views (?) в сайдбаре блок меню, который будет содержать список терминов текущего уровня.

Например, на странице любой ноды термина 2 будут выводиться в меню термины словаря 2, 3, 4, 5. (именно термины, а не ноды).
А на странице ноды термина 7 - термин 7, 8, 9, 10.

Как это можно сделать?

Спасибо!

Комментарии

Аватар пользователя Тимофей Тимофей 23 мая 2015 в 0:31

brusee wrote:
а зачем через виевс? можно же меню таксономии прикрутить с выводом блока на страницах по условию.

У материалов через pathauto ссылка вида: site.ru/nazvanie-materiala и поменять структуру нельзя Sad

Аватар пользователя brusee brusee 23 мая 2015 в 2:39

у блоков видимость для страницы можно настроить в режиме php: получаете термин таксономии текущей ноды, узнаете родительский термин и в соответствии с ним выводите или скрываете блок менюшки.

Аватар пользователя Тимофей Тимофей 23 мая 2015 в 10:13

Да я уже вроде через views почти сделал, как мне надо. Получаю tid для ноды и дальше мне нужен родительский tid. Но что-то не до конца работает.

//получаю tid для текущей ноды
$node = menu_get_object();
$tid = $node->field_page_taxonomy[$node->language][0]['tid'];
//дальше что-то идет не так
$parent_id=taxonomy_get_parents($tid);
return $parent_id;

Если просто вернуть номер родительско ноды (например, 40),то все показывается, как надо. Что я не так пишу для получения родительского tid?

Аватар пользователя Тимофей Тимофей 23 мая 2015 в 10:36

Что что-то не так из массива извлекаю:

Array ( [38] => stdClass Object ( [tid] => 38 [vid] => 2 [name] => Как развивать себя? [description] => [format] => filtered_html [weight] => 2 [uuid] => a67419df-c83f-4485-8719-ff065ada0369 [vocabulary_machine_name] => blog_categories [metatags] => Array ( ) [rdf_mapping] => Array ( [rdftype] => Array ( [0] => skos:Concept ) [name] => Array ( [predicates] => Array ( [0] => rdfs:label [1] => skos:prefLabel ) ) [description] => Array ( [predicates] => Array ( [0] => skos:definition ) ) [vid] => Array ( [predicates] => Array ( [0] => skos:inScheme ) [type] => rel ) [parent] => Array ( [predicates] => Array ( [0] => skos:broader ) [type] => rel ) ) ) )

Аватар пользователя Тимофей Тимофей 23 мая 2015 в 12:37

Вот такое в итоге вроде более-менее нормально работает:

$node = menu_get_object();
if ($node){
$field_values = field_get_items('node', $node, 'field_page_taxonomy');
$tid=$field_values[0]['tid'];

$parent_id=taxonomy_get_parents($tid);
if ($parent_id) {
$pid=array_shift($parent_id);
return $pid->tid;
}
else {
return $tid;
}
}