Использовать поле ссылки на термин в 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'])

Но это ничего не возвращает.

Любая помощь в получении названия термина будет признательна!

 1
Author: a.b.d, 2011-06-15

2 answers

Если taxonomy_term_load() возвращает false, то

  • предоставленный аргумент (tid) является либо нечисловым
  • Или нет термина с этим идентификатором.

Чтобы проверить, есть ли какой-либо термин против этого идентификатора, попробуйте

`taxonomy_term_load_multiple(array($tid), array());`

Если taxonomy_term_load_multiple() возвращает пустой массив, то ясно, что с этим термином нет $tid.

 1
Author: Shoaib Nawaz, 2011-06-15 17:46:58

В качестве альтернативного подхода вы можете попробовать использовать функцию

<?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

 1
Author: marblegravy, 2011-06-15 23:38:54