Jak wyświetlić listę terminów ze słownika

Właśnie stanąłem przed zadaniem, jak wyświetlić alfabetycznie listę terminów z konkretnego słownika (kategorii). Po przeszukaniu strony Drupal.org znalazłem rozwiązanie i trochę je zmodyfikowałem.

Na początku musimy znać numer naszego słownika, aby go poznać należy w Panelu Administracyjnym wybrać Kategorie z menu ZarządzajZarządzanie zawartością. Następnie po wybraniu Edytuj słownik przy naszym słowniku, w pasku URL dostaniemy jego numer.

Link powinien wyglądać podobnie do przedstawionego poniżej, ostatni znak jest numerem słownika.

http://twoja.strona.pl/admin/content/taxonomy/edit/vocabulary/5

Następnie w Bloku lub Artykule (zależnie od tego, gdzie będziemy otrzymać listę terminów) wpisujemy poniższy kod:

<?php
$vocabulary_id = 5;
$result = db_query("SELECT d.tid, d.name, MAX(n.created) AS updated, COUNT(*) AS count FROM {term_data} d INNER JOIN {term_node} USING (tid) INNER JOIN {node} n USING (nid) WHERE d.vid = $vocabulary_id AND n.status = 1 GROUP BY d.tid, d.name ORDER BY d.name");
 $items = array();
  while ($category = db_fetch_object($result)) {
    $items[] = l($category->name .' ('. $category->count .')', 'taxonomy/term/'. $category->tid);
  }
print theme('item_list', $items);
?>

Do zmiennej $vocabulary_id przypisujemy numer słownika.

Od tej pory możemy cieszyć się Listą terminów w formacie: Nazwa Terminu (w nawiasie liczba artykułów w terminie)

Oczywiście nie należy zapomnieć o włączeniu w Formacie danych opcji PHP Code.

Sprawdzone działanie na wersji 5, natomiast według opisu na Drupal.org powinno też działać w wersji 4.7

Sposób wyświetlania odpowiedzi

Wybierz preferowany sposób wyświetlania odpowiedzi i kliknij "Zachowaj ustawienia", by wprowadzić zmiany.

Dzieki! Działa, ale jak zrobić listę terminów w poziomie?

Terminy wyświetlają się w pionie, jeden pod drugim. A jak zrobić, żeby wyświetlały się w poziomym ciągu, jeden obok drugiego?

Portret użytkownika archetwist

CSS

moderator

To już zależy od tego, jakie reguły CSS nadasz tym elementom. Ważna będzie deklaracja display: inline;. By dodać odstępy między elementami, można jeszcze dodać margin-right: 1em;.

Przykład:

li {
  display: inline;
  margin-right: 1em;
  }

Trzeba tylko pamiętać o dodaniu do selektora klas lub ID tych elementów, bo inaczej wszystkie listy będziesz mieć poziomo.

design www drupal

Wiem że temat stary, ale

Wiem że temat stary, ale może ktoś pomoże.<br> Chciałbym aby skrypt wyświetlał również puste kategorie i nie wiem za bardzo jak to zrobić. W PHP jestem cienki i wczelkie modyfikacje kończyły się błędami.<br> Liczę na pomoc. Pozdrawiam.

na szybko bo brak czasu

nie łącz w zapytaniu SQL(JOIN) z zawartością (node) tylko zapytaj o same słowniki. na razie tylko tyle mam czasu, jak sam zrobię to wkleje kod

Moduł Vocabulary Index załatwi to za nas

Po długim przeszukiwaniu różnych modułów znalazłem najciekawszy – Vocabulary Index POLECAM !!!