Як отримати назву терміна таксономії від tid?


32

Багато наших матеріалів мають формат уриса, наприклад site/taxonomy/XX, де XX - ціле число.

Я знайшов багато питань, таких як " як отримати TID від імені? ", Але я хотів би отримати ім'я від TID. Я намагаюся скласти сценарій сухаря, і все чудово, за винятком випадків, коли я отримую слід на зразок " home > term". Натомість я хочу мати його як " home > <TERM NAME>".

Як я можу це зробити?


Чудові відповіді. Тільки для інформації: Для тих, хто хоче зробити зворотне - тобто отримати назву від назви терміна, є також питання щодо цього: drupal.stackexchange.com/questions/36594/… Сподіваюся, це корисно як пошукові системи, коли шукаєте відповіді схоже, не розуміють впорядкування того, що потрібно в термінах "від" і "до".
therobyouknow

Відповіді:


92

Якщо ви використовуєте Drupal 7, ви можете використовувати taxonomy_term_load()

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

Якщо у вас є купа ідентифікаторів терміна, ви можете заощадити, запустивши один запит на кожне завантаження, використовуючи taxonomy_term_load_multiple():

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

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

Якщо ви зациклювались на Drupal 6, ви можете використовувати taxonomy_get_term():

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

На жаль, для Drupal 6 не існує варіанту багаторазового завантаження.


дуже дякую, що я можу отримати додатковий плюс за підтримку версії: D
Броді,

додаткове запитання: я думаю, що це так само, чи досить легко його встановити, щоб URL-адреси читали сайт / <ім'я терміна>? чи я повинен був би встановити це для кожного окремого терміну?
Броді

3
Ви можете це робити щоденно, але це досить трудомістко. Модуль pathauto був написаний саме для такої ситуації, ви можете використовувати його для визначення шаблонів для автоматичного призначення псевдонімів термінам / контенту / користувачам тощо.
Клайв

5

Наступна функція повертає назву терміна таксономії на основі його одиниці:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}

1
Не доцільно використовувати функції бази даних, коли ви можете досягти того самого, використовуючи функцію API.
Картагіс

4
У деяких випадках краще використовувати функцію бази даних, оскільки функції API завантажують великий об'єм даних
houmem

Також корисно, коли модулі дозволу на доступ до таксономії обмежують доступ
Діметрія

5

У Drupal 8 ви можете отримати назву термінів таксономії таким чином:

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

$name = $term->label();

Або завантажити кілька:

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

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

Я отримую цю помилку - Примітка: Не визначене властивість: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

1

Для D7:

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

    dpm($tid);  

  }  

Для D8:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.