Come posso ottenere l'ID del termine tassonomia dal suo nome?


Risposte:


14

È taxonomy_get_term_by_name () che usi come nel seguente codice.

$term_array = taxonomy_get_term_by_name('Foo');
$term = reset($term_array); # get the first element of the array which is our term object
print $term->name;

1
Questo sembra darmi un array piuttosto che un TID. $foo[0]->tidnon fa nulla perché restituisce un array codificato con TID. Quindi per ottenere il TID ho bisogno del TID, o per fare un foreach()anche se è solo su un elemento? Altrimenti:Undefined offset: 0
Bet,

3
Restituisce un array in quanto nulla impedisce a più termini di avere lo stesso nome. Non puoi sapere che è solo un oggetto.
Letharion,

2
@beth, usa il secondo parametro per limitarti a un particolare vocabolario, oppure fai un ciclo con foreach ($terms as $term)e controlla il $term->vidper assicurarti di avere quello giusto.
mpdonadio

Ho appena digitato rapidamente la versione D6 a cui sono abituato. Vedo ora dai tuoi link / URL inclusi che stai eseguendo D7. I commenti sopra dovrebbero chiarire le cose per te.
Jimajamma,

22

taxonomy_get_term_by_name() farà il trucco:

$terms = taxonomy_get_term_by_name($row->field_term_name);
if (!empty($terms)) {
  $first_term = array_shift($terms);
  print $first_term->tid;
}

4
C'è anche un secondo argomento che è stato aggiunto a Drupal 7 per limitare questo a un particolare vocabolario. Ciò elimina la necessità di scorrere ciclicamente i risultati per trovare il termine desiderato quando si possono avere più maree che condividono lo stesso nome.
mpdonadio

2
Punto e virgola mancante nella riga$first_term = array_shift($terms);
Kevin Siji,

1

Questa funzione ha funzionato per me:

/**
 * Return the term id for a given term name.
 */
function _get_tid_from_term_name($term_name) {
  $vocabulary = 'tags';
  $arr_terms = taxonomy_get_term_by_name($term_name, $vocabulary);
  if (!empty($arr_terms)) {
    $arr_terms = array_values($arr_terms);
    $tid = $arr_terms[0]->tid;
  }
  else {
    $vobj = taxonomy_vocabulary_machine_name_load($vocabulary);
    $term = new stdClass();
    $term->name = $term_name;
    $term->vid = $vobj->vid;
    taxonomy_term_save($term);
    $tid = $term->tid;
  }
  return $tid;
}

Se stai usando un altro vocabolario (diverso dai tag), modifica nel codice sopra la riga:

$vocabulary = 'tags';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.