Условие вывода блока PHP по родителю в таксономии ноды

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

Аватар пользователя lexa174 lexa174 29 января 2015 в 14:23

Приветствую всех! Уже голову сломал как сделать...

Есть структура древовидная со свободным выбором, как пример:

Разное
-Фрукты
--Яблоки
---зеленые
---желтые
--Груши
---синие
---белые

У меня отдельно идут материалы на каждый термин, т.е. может материал принадлежать одновременно к яблокам, грушам и синим.

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

Т.е. мне надо выводить менюшку по принадлежности к "фруктам" и ниже по цепочке на автомате

Комментарии

Аватар пользователя lexa174 lexa174 29 января 2015 в 15:16

Нашел похожее, но для шестёрки, на семерке ошибки вылазят...

http://www.drupal.ru/node/66872

«Я так понял что автор хочет отображать блок не на страницах термина таксономии,
где задача легко решается с помощью pathauto, а именно в зависимости от того, к какому термину принадлежит нода, выводить блок.
Например если нам надо выводить блок на страницах с нодами с термином таксономиии с ID 1
php-код для показа блока на нужных нодах - внизу, в настройках блока.»

<?php

// Vocabulary term ID for which to display the block:
$displayTermID =1;

// This will show on the index page for that term
if ((arg(0) == 'taxonomy') && (arg(1) == 'term') && (arg(2) == $displayTermID)) {
return TRUE;
}

// Get all taxonomy terms for current node:
$currNodeTerms = taxonomy_node_get_terms(node_load(arg(1)));

// If there are no terms, fail-fast:

if (is_null($currNodeTerms) || 0 == count($currNodeTerms)) {
return FALSE;
}

// For each term of the current node, get all the ancestor terms:
foreach($currNodeTerms as $term) {

$ancestors = taxonomy_get_parents_all($term->tid);

// Check for each ancestor term whether it is the term we are looking for.
// If it is, return TRUE immediately:
if (!is_null($ancestors) && 0 < count($ancestors)) {
foreach($ancestors as $ancestor) {
if ($displayTermID == $ancestor->tid) {
return TRUE;
}
}
}
}

// If we didn't find our term of interest, return FALSE:
return FALSE;
?>