Como obter o nome do termo de taxonomia de tid?

32

Muitas das nossas coisas têm uris formatados como site/taxonomy/XX, onde XX é um número inteiro.

Encontrei muitas perguntas como " como obter o TID do nome? ", Mas gostaria de obter o nome do TID. Estou tentando montar um script de trilha de navegação e tudo está ótimo, exceto nesses casos em que estou recebendo uma trilha como " home > term". Em vez disso, quero tê-lo como " home > <TERM NAME>".

Como posso fazer isso?

Brodie
fonte
Ótimas respostas. Apenas para informações: para quem deseja fazer o oposto - ou seja, se livrar do nome do termo, também há perguntas e respostas para isso: drupal.stackexchange.com/questions/36594/… Espero que isso seja útil como mecanismo de busca ao procurar respostas parece que não entendemos a ordem do que precisamos em termos de 'de' e 'para'.
22818 therobyouknow

Respostas:

92

Se você estiver usando o Drupal 7, poderá usar taxonomy_term_load()

$term = taxonomy_term_load($tid);
$name = $term->name;

Se você tiver vários IDs de termo, poderá economizar na execução de uma única consulta para cada carregamento usando taxonomy_term_load_multiple():

$tids = array(1, 2, 3);
$terms = taxonomy_term_load_multiple($tids);

foreach ($terms as $term) {
  $name = $term->name;
}

Se você estiver usando o Drupal 6, poderá usar taxonomy_get_term():

$term = taxonomy_get_term($tid);
$name = $term->name;

Infelizmente, não tenho opção de carregamento múltiplo para o Drupal 6.

Clive
fonte
muito obrigado gostaria de poder extra mais para o suporte de versão: D
Brodie
pergunta adicional: acho que da mesma maneira, é muito fácil configurá-lo para que os URLs leiam site / <term name>? ou eu teria que definir isso para cada termo individual?
Brodie
3
Você pode fazer isso termo a termo, mas isso é bastante trabalhoso. O módulo pathauto foi escrito apenas para esse tipo de situação, você pode usá-lo para definir padrões para atribuir aliases automaticamente a termos / conteúdo / usuários / etc.
Clive
5

A função a seguir retorna o nome de um termo de taxonomia com base em sua ordem:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}
houmem
fonte
1
Não é aconselhável usar funções de banco de dados quando você pode conseguir a mesma coisa com uma função de API.
Kartagis
4
Em alguns casos é melhor para a função de banco de dados uso, porque as funções da API carregar um grande volume de dados
houmem
Também é útil quando os módulos de permissão de acesso taxonomia restringir o acesso
Dimetry
5

No Drupal 8, você pode obter o nome dos termos de taxonomia da seguinte maneira:

$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($tid);

$name = $term->label();

Ou para carregar vários:

$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadMultiple($tids);

foreach($terms as $term) {
  $name = $term->label();
}
oknate
fonte
Eu recebo este erro - Aviso: propriedade indefinido: Drupal \ Core \ Entidade \ Plugin \ DataType \ EntityReference :: $ target
Diana
1

Para D7:

$term = taxonomy_get_term_by_name($term_name, $vocab_name);  
  foreach($term as $key => $data) {  
    $tid = $data->tid;  

    dpm($tid);  

  }  

Para D8:

$term_name = \Drupal\taxonomy\Entity\Term::load(2)->get('name')->value;  
dpm($term_name);  
Anupriya_vij
fonte
0

É possível obter o nome do termo no Drupal 8 da seguinte maneira:

//Obtain the term.
$tid=1;
$term= taxonomy_term_load($tid);

//get the field name
$term->label();

//or
$term->get('name')->value;
JHONATAN DAVID FERNANDEZ ROSA
fonte