как узнат Id таксономии из page.tpl?

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

Аватар пользователя scild scild 14 января 2010 в 19:07

Как узнать id родительского термина таксономии со страницы вывода нод термина этой таксономии?

Раздел 1
Категория 1
Категория 2
Раздел 2
Категория 3

Допустим, при просмотре материалов, принадлежащих к "категории" - нужно узнать к какому "разделу" оно принадлежит...

Нужно в зависимости от этого вывод шаблона подправить...

Комментарии

Аватар пользователя yustos.com yustos.com 15 января 2010 в 13:04

Короче, в нужном месте создаете переменную $node=node_load(arg(1)); затем массив таксономии $node->taxonomy и из него извлекаете, что вам в голову придет.

Аватар пользователя Dan Dan 15 января 2010 в 22:23

Запросов делать не нужно. Если мы находимся на стрнице термина, то объект термина уже загружен. Получить его можно так:

if($term = menu_get_object('term')){
  // --> $term->tid
}

UPDATE: туплю. пропустил про родительский термин. тогда как советовали выше - taxonomy_get_parents или свой запрос.

$parent_tid = db_result(db_query("SELECT parent FROM {term_hierarchy} WHERE tid = %d", $term->tid));
Аватар пользователя scild scild 18 января 2010 в 16:54

Спасибо!

В общем, получилось следующее, может, правда, косое, решение:

    <?php 
    
if(arg(0) == 'image'){
    
$parent_tid db_result(db_query("SELECT parent FROM {term_hierarchy} WHERE tid = %d"arg(2))); 
    if(
$parent_tid == 6): ?>
Нужный HTML-код

    <?php endif;} ?>

у меня адреса страниц стоят как image/tid/номер - этогалерея картинок. Поэтому arg(0)=image - а номер таксономии - в arg(2).

А вот $term->tid почему то не вывел значение...%)

Аватар пользователя Dan Dan 19 января 2010 в 1:20

"scild" wrote:
А вот $term->tid почему то не вывел значение...%)

см. [ru-api=menu_get_object] -- для $position значение по умолчанию - 1, а у ВАс - 2, т.е. надо menu_get_object('term',2)

Аватар пользователя serious.vip@drupal.org serious.vip@dru... 19 января 2010 в 2:09

http://api.drupal.org/api/function/template_preprocess_node/6
никто не мешает запихать это в какую-либо переменную и потом как же легко достать, например, запишете в variables['tax_term'] и будет у вас $tax_term в шаблоне. препроцессор можно в модуль обернуть, ну или куда-нить запихать.