Если вы имеете в виду term id, то они лежат в $node->taxonomy.
Я когда-то у себя в блоге сделал небольшое описание полей объектов $user, $node, $term и $file, там есть и про это.
Только учтите, что arg(1) - это не совсем безопасная конструкция и хотя в taxonomy_node_get_terms_by_vocabulary уже используется плейсхолдер в запросе к БД, лучше предварительно валидировать возврат arg(). Например через ctype_digit.
Комментарии
Если вы имеете в виду term id, то они лежат в $node->taxonomy.
Я когда-то у себя в блоге сделал небольшое описание полей объектов $user, $node, $term и $file, там есть и про это.
Спасибо за статью в блоге, действительно может оказаться очень полезной.
Я наверное не объяснил основную проблему.
Каждая нода состоит в 2-ух словарях.
мне нужно вывести в ноде её termID в словаре vocalbuaryID=1
Ну так можно например в лоб:
<?php
foreach ($node->taxonomy as $tid => $term) {
if ($term['vid'] == 1) {
print $tid;
}
}
?>
Если терминов не много, то вполне нормально. Нет?
Ну и если так не нравится, то есть функция taxonomy_node_get_terms_by_vocabulary, она то же самое делает, но с дополнительным запросом к БД.
Большое спасибо, сейчас попробую Надеюсь поможет
в ноду вставляю сл. код
print_r(taxonomy_node_get_terms_by_vocabulary($nid, $vid, $key = 'tid'));
получаю вывод пустого массива
вставляю вот этот:
print_r(taxonomy_node_get_terms_by_vocabulary($nid, 1, $key = 'tid'));
получаю вывод пустого массива
Попробуйте так:
print_r(taxonomy_node_get_terms_by_vocabulary($node->nid, 1, 'tid'));
Если снова что-то не так, сделайте
print_r($node->taxonomy); и посмотрите, что там.
Влияет ли на работу функции тот факт, что ноды не являются типом материала page?
А при использовании кода, который Вы привели в своем комментарие, получаю ошибку:
warning: Invalid argument supplied for foreach() in Y:\home\www\******.ru\includes\common.inc(1486) : eval()'d code on line 3.
print_r($node->taxonomy); ничего не выводит
А. Ну так это потому что ноду надо загрузить или хотя бы nid узнать. print_r($node); ведь тоже ничего не выводит?
print_r(taxonomy_node_get_terms_by_vocabulary($nid, 1, 'tid'));
Извините за вынос мозга, большое спасибо, всё работает
Круто! Тепрь я вижу вот это:
Array ( [3] => stdClass Object ( [tid] => 3 [vid] => 1 [name] => Выполнен [description] => [weight] => 10 ) )
Можно еще вопрос?
как теперь вывести только [3]
Чтобы вывести все термины, возвращенные функцией, вместо print_r(...) надо:
<?php
$terms = taxonomy_node_get_terms_by_vocabulary($nid, 1, 'tid');
foreach ($terms as $tid => $term) {
print $tid;
}
?>
Только учтите, что arg(1) - это не совсем безопасная конструкция и хотя в taxonomy_node_get_terms_by_vocabulary уже используется плейсхолдер в запросе к БД, лучше предварительно валидировать возврат arg(). Например через ctype_digit.
Таким способом выводится ошибка
warning: Invalid argument supplied for foreach() in Y:\home\www\***.ru\includes\common.inc(1486) : eval()'d code on line 6.
Ошибка пропала, спасибо за ответы огромнейшеЕ спасибо вообще
Думаю, эта ветка будет полезной еще для кого-нибудь