Использовать поле ссылки на термин в node--custom.tpl.php
Я создаю веб-сайт с помощью Drupal 7, этот веб-сайт содержит блог. По некоторым причинам я использую пользовательский тип контента для сообщений в блоге, называемый bog_post. В этом типе контента я добавляю поле "Ссылка на термин" (имя компьютера - "field_blog_categories").
Для настройки макета сообщения в блоге я переопределяю node--blog_post.tpl.php . Моя проблема состоит в том, чтобы отобразить поле ссылки на термин. Когда я печатаю php var, соответствующий этому полю "$field_blog_categories", я получаю :
Array ( [en] => Array ( [0] => Array ( [tid] => 8 ) ) )
Как вы можете видеть, название термина не отображается. Я думал узнать имя по tid. Я пытаюсь
taxonomy_term_load($field_blog_categories['en'][0]['tid'])
Но это ничего не возвращает.
Любая помощь в получении названия термина будет признательна!
2 answers
Если taxonomy_term_load()
возвращает false, то
- предоставленный аргумент (tid) является либо нечисловым
- Или нет термина с этим идентификатором.
Чтобы проверить, есть ли какой-либо термин против этого идентификатора, попробуйте
`taxonomy_term_load_multiple(array($tid), array());`
Если taxonomy_term_load_multiple()
возвращает пустой массив, то ясно, что с этим термином нет $tid
.
В качестве альтернативного подхода вы можете попробовать использовать функцию
<?php
/**
* Get a list of all taxonomy terms
*/
function taxonomy_node_get_terms($node, $key = 'tid') {
if(arg(0)=='node' && is_numeric(arg(1))) {
static $terms;
if (!isset($terms[$node->vid][$key])) {
$query = db_select('taxonomy_index', 'r');
$t_alias = $query->join('taxonomy_term_data', 't', 'r.tid = t.tid');
$v_alias = $query->join('taxonomy_vocabulary', 'v', 't.vid = v.vid');
$query->fields( $t_alias );
$query->condition("r.nid", $node->nid);
$result = $query->execute();
$terms[$node->vid][$key] = array();
foreach ($result as $term) {
$terms[$node->vid][$key][$term->$key] = $term;
}
}
return $terms[$node->vid][$key];
}
}
/* just guessing at this function - it might need tweaking! */
function theme_preprocess_page(&$variables) {
$node = node_load(arg(1));
$results = taxonomy_node_get_terms($node);
if(is_array($results)) {
foreach ($results as $item) {
$variables['your_taxonomy_terms'][] = $item->name;
}
}
}
?>
Затем вы можете вызвать $your_taxonomy_terms из шаблона страницы, и он должен вернуть имена.
Все это основано на теме здесь -> http://drupal.org/node/1072806