Jak uzyskać nazwę terminu taksonomia z Tid?

32

Wiele naszych rzeczy ma format uris, np. site/taxonomy/XXGdzie XX jest liczbą całkowitą.

Znalazłem wiele pytań, takich jak „ jak uzyskać TID z nazwy? ”, Ale chciałbym uzyskać nazwę z TID. Próbuję utworzyć skrypt nawigacyjny i wszystko jest świetne, z wyjątkiem tych przypadków, w których otrzymuję ślad typu „ home > term”. Zamiast tego chcę mieć to jak „ home > <TERM NAME>”.

Jak mogę to zrobić?

Brodie
źródło
Świetne odpowiedzi. Tylko dla informacji: dla tych, którzy chcą zrobić odwrotnie - tj. Uzyskać porządek od nazwy terminu, jest też pytanie : drupal.stackexchange.com/questions/36594/… Mam nadzieję, że jest to pomocne jako wyszukiwarki, gdy szukasz odpowiedzi wydaje się, że nie rozumie kolejności tego, czego potrzeba w kategoriach „od” i „do”.
therobyouknow

Odpowiedzi:

92

Jeśli używasz Drupala 7, możesz użyć taxonomy_term_load()

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

Jeśli masz kilka identyfikatorów terminów, możesz zaoszczędzić konieczności uruchamiania jednego zapytania dla każdego ładowania, używając taxonomy_term_load_multiple():

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

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

Jeśli utkniesz przy użyciu Drupala 6, możesz użyć taxonomy_get_term():

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

Niestety, nie znam żadnej opcji wielokrotnego ładowania dla Drupala 6.

Clive
źródło
dziękuję bardzo, chciałbym móc dodatkowo plus za wsparcie wersji: D
Brodie
dodatkowe pytanie: Myślę, że w ten sam sposób, czy ustawienie go jest tak łatwe, aby adresy URL odczytywały stronę / <nazwa terminu>? czy musiałbym to ustawić dla każdego poszczególnego terminu?
Brodie
3
Możesz to robić okresowo, ale jest to dość pracochłonne. Moduł pathauto został napisany właśnie dla tego rodzaju sytuacji, można go używać do określenia wzorów Aby automatycznie przypisać aliasy Warunki / content / użytkowników / etc.
Clive
5

Poniższa funkcja zwraca nazwę terminu systematyki na podstawie jego tid:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}
houmem
źródło
1
Nie zaleca się korzystania z funkcji bazy danych, gdy można osiągnąć to samo za pomocą funkcji API.
Kartagis,
4
W niektórych przypadkach lepiej jest użyć funkcji bazy danych, ponieważ funkcje API ładują dużą ilość danych
houmem,
Przydatny również, gdy moduły zezwoleń na dostęp do systematyki ograniczają dostęp
Dimetry
5

W Drupal 8 możesz uzyskać nazwę terminów taksonomicznych w następujący sposób:

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

$name = $term->label();

Lub załadować wiele:

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

foreach($terms as $term) {
  $name = $term->label();
}
oknate
źródło
Pojawia się ten błąd - Uwaga: Niezdefiniowana właściwość: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana
1

Dla D7:

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

    dpm($tid);  

  }  

Dla D8:

$term_name = \Drupal\taxonomy\Entity\Term::load(2)->get('name')->value;  
dpm($term_name);  
Anupriya_vij
źródło
0

Nazwę tego terminu można uzyskać w Drupal 8 w następujący sposób:

//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
źródło