Wie bekomme ich den Taxonomiebegriffsnamen von tid?

32

Ein Großteil unserer Inhalte ist wie folgt formatiert site/taxonomy/XX, wobei XX eine Ganzzahl ist.

Ich fand eine Menge von Fragen wie „ wie die TID aus dem Namen zu bekommen? “, Aber ich mag den Namen von der bekommen TID. Ich versuche, ein Breadcrumb-Skript zusammenzustellen, und alles ist großartig, außer in diesen Fällen, in denen ich eine Spur wie " home > term" erhalte . Stattdessen möchte ich es wie " home > <TERM NAME>" haben.

Wie kann ich das machen?

Brodie
quelle
Tolle Antworten. Nur zur Info: Für diejenigen, die das Gegenteil tun möchten - dh vom Begriff Name erfahren möchten , gibt es auch dafür eine Frage und Antwort: Scheint die Reihenfolge nicht zu verstehen, die man in Bezug auf "von" und "bis" benötigt.
Therobyouknow

Antworten:

92

Wenn Sie Drupal 7 verwenden, können Sie verwenden taxonomy_term_load()

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

Wenn Sie eine Reihe von Term-IDs haben, können Sie sich sparen, indem Sie für jede Auslastung eine einzelne Abfrage ausführen taxonomy_term_load_multiple():

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

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

Wenn Sie mit Drupal 6 nicht weiterkommen, können Sie Folgendes verwenden taxonomy_get_term():

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

Es gibt keine Mehrfachladeoption für Drupal 6, die ich leider kenne.

Clive
quelle
Vielen Dank, ich wünschte, ich könnte extra Plus für die Unterstützung der Version: D
Brodie
zusätzliche Frage: Ich denke, dies ist in die gleiche Richtung, ist es ziemlich einfach, es so einzustellen, dass die URLs site / <term name> lesen? oder müsste ich das für jeden einzelnen begriff einstellen?
Brodie
3
Sie können es von Begriff zu Begriff tun, aber das ist ziemlich mühsam. Das pathauto-Modul wurde nur für diese Art von Situation geschrieben. Sie können es verwenden, um Muster zu definieren, um automatisch Aliase zu Begriffen / Inhalten / Benutzern / usw. zuzuweisen.
Clive
5

Die folgende Funktion gibt den Namen eines Taxonomiebegriffs basierend auf seiner ID zurück:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}
houmem
quelle
1
Es ist nicht ratsam, Datenbankfunktionen zu verwenden, wenn Sie mit einer API-Funktion dasselbe erreichen können.
Kartagis
4
In einigen Fällen ist es besser, die Datenbankfunktion zu verwenden, da die API-Funktionen eine große Datenmenge
laden
Auch nützlich, wenn Taxonomie-Zugriffsberechtigungsmodule den Zugriff einschränken
Dimetry
5

In Drupal 8 können Sie den Namen der Taxonomiebegriffe folgendermaßen abrufen:

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

$name = $term->label();

Oder um mehrere zu laden:

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

foreach($terms as $term) {
  $name = $term->label();
}
oknate
quelle
Ich erhalte diesen Fehler - Hinweis: Nicht definierte Eigenschaft: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana
1

Für D7:

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

    dpm($tid);  

  }  

Für D8:

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

Der Name des Begriffs in Drupal 8 kann folgendermaßen ermittelt werden:

//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
quelle