Wymień wszystkie terminy ze słownika

25

Mam taksonomię zwaną usługami i chcę wymienić wszystkie warunki. Mogę załadować słownictwo

 $vocabulary = taxonomy_vocabulary_machine_name_load('Services')

ale nie widzę, aby wszystkie warunki zostały wyjęte.

LeBlaireau
źródło
umiesz napisać szczegółowy kod?
monymirza

Odpowiedzi:

43

Jest kilka sposobów, ale wolę entity_load():

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

Możesz także użyć:

Clive
źródło
Czy możesz wyjaśnić zalety korzystania entity_load?
niksmac
3
@NikhilM To mniej znaków do pisania niż taxonomy_term_load_multiple()dlatego osobiście wolę to. Użycie taxonomy_get_tree()wprowadza niepotrzebne poziomy złożoności do zaangażowanych zapytań, chyba że potrzebujesz konkretnych terminów w ich oryginalnej hierarchii (których OP nie określił)
Clive
Podoba mi się, ale myślę, że odpowiedź poniżej jest nieco łatwiejsza do odczytania.
LeBlaireau,
@welovedesign Naprawdę? Wolę 2 wiersze niż 6, ale to tylko osobiste preferencje :) Dopóki ma mniej niż 80 znaków, nadal przestrzegasz standardów kodowania Drupala
Clive
Moja +1 za przestrzeganie standardów kodowania Drupala
niksmac
18

Chciałbym użyć tego kodu.

$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

taksonomia_get_tree

niksmac
źródło
Jeśli masz witrynę wielojęzyczną, nie działa to zgodnie z oczekiwaniami. Jeśli chcę wszystkie warunki, niezależnie od języka, nie daje to odpowiednich wyników. „taxonomy_get_tree” przeanalizuje wyniki w oparciu o język. powyższa odpowiedź działa dla mnie
Vaibhav Jain