Перечислите все термины из словаря

25

У меня есть таксономия, называемая сервисами, и я хочу перечислить все условия. Я могу загрузить Vocab с

 $vocabulary = taxonomy_vocabulary_machine_name_load('Services')

но не видно, чтобы получить все условия.

LeBlaireau
источник
ты можешь написать подробный код?
monymirza

Ответы:

43

Есть несколько способов, но я предпочитаю entity_load():

$vocabulary = taxonomy_vocabulary_machine_name_load('Services');
$terms = entity_load('taxonomy_term', FALSE, array('vid' => $vocabulary->vid));

Вы также можете использовать:

Клайв
источник
Можете ли вы объяснить преимущества использования entity_load?
niksmac
3
@NikhilM Символов меньше, чем печатать taxonomy_term_load_multiple(), поэтому я лично предпочитаю это. Использование taxonomy_get_tree()вводит ненужные уровни сложности в соответствующие запросы, если только вам не нужны термины в их исходной иерархии (которую ОП не указал)
Клайв
Мне это нравится, я думаю, что ответ ниже немного легче читать, хотя.
LeBlaireau
@welovedesign Действительно? Я предпочитаю 2 строки над 6, но это всего лишь личное предпочтение :) Пока это не более 80 символов, вы все еще придерживаетесь стандартов кодирования Drupal
Clive
Мой +1 за соблюдение стандартов кодирования Drupal
niksmac
18

Я хотел бы использовать этот код.

$name = 'YOUR_VOCAB_NAME';
$myvoc = taxonomy_vocabulary_machine_name_load($name);
$tree = taxonomy_get_tree($myvoc->vid);
foreach ($tree as $term) {
 echo $term->tid;
}

taxonomy_vocabulary_machine_name_load

taxonomy_get_tree

niksmac
источник
Если у вас есть многоязычный сайт, это не работает так, как вам нужно. Если я хочу все условия, независимо от языка, это не даст вам должных результатов. "taxonomy_get_tree" будет анализировать результаты на основе языка.
Приведенный