[fixed] Tags der aktuellen Kategorie auslesen
am 09.06.2007 - 20:29 Uhr in
Ich hab meinen alten unübersichtlichen Thread zu dem Thema mal gelöscht. Hier noch mal das Problem:
info: ich benutze das Category Modul und Drupal5.1
1. Ich möchte einen php code in einen Block schreiben, der mir alle Tags aus einer definierten Liste von Vokabularen auflistet.
2. Ich möchte das hinter dem Tagnamen immer in Klammern die anzahl der zugehörigen Artikel steht.
3. Die Zahl der ausgegeben Tags soll begrenzbar auf 30 sein.
4. Wenn möglich soll die Liste so geordnet sein, das das Tag mit den meisten zugehörigen artikeln als erstes kommt.
die ausgabe soll dann so aussehen:
Computer(50)
grafik(32)
politik(22)
internet(13)
Ich habe bis jetzt dazu folgenden code, mit dem ich dies alles(außer das begrenzen und sortieren) für ein einzelnes vokabular tun kann. Da mein php so gut wie garnicht vorhanden ist, wäre ich für weitere Hilfe dankbar. :-)
<?php
$vid=11;
$items = array();
$terms = taxonomy_get_tree($vid);
foreach ( $terms as $term ) {
$count = db_result(db_query("SELECT COUNT(nid) FROM {category_node} WHERE cid = %d", $term->tid));
$items[] = l($term->name, "node/$term->tid") . " ($count)";
}
if ( count($items) ) { print theme('item_list', $items);}
?>
rapsli hatte mir bereits gesagt, das man mit dem nun folgenden code das ganze begrenzen könnte, aber ich weiß nicht ganz, wie man das zusammenfügt:
<?php
$counter = 0;
foreach(...){
...
...
if($counter >= 30){
break;
}
$counter++;
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
*push*
am 18.06.2007 - 08:51 Uhr
*push*
Auch wenn ich hier mehr ofder weniger ein Selbstegespräch führ
am 06.07.2007 - 13:17 Uhr
Der folgende Code gibt mir genau die Tags mit anzahl aus, die ich brauche. Jetzt bekomme ich es allerdings nicht hin, mir auch den passenden Link ausgeben zu lassen, denn im Moment kommt da nur Text raus.
Jemand ne Idee?
<?php
$res = db_query("SELECT t.name, count(*) as anz, c.cid FROM {term_data} t INNER JOIN {category_hierarchy} ch ON ch.cid=c.cid AND ch.parent!=22 INNER JOIN {category_node} c ON c.cid=t.tid GROUP BY t.tid ORDER BY anz DESC");
while ($tag = db_fetch_object($res)) {
print "".$tag->name." -> (".$tag->anz.")<br />";
}
?>
Probiers mal so: <?php$res =
am 06.07.2007 - 13:21 Uhr
Probiers mal so:
<?php
$res = db_query("SELECT t.name, t.tid, count(*) as anz, c.cid FROM {term_data} t INNER JOIN {category_hierarchy} ch ON ch.cid=c.cid AND ch.parent!=22 INNER JOIN {category_node} c ON c.cid=t.tid GROUP BY t.tid ORDER BY anz DESC");
while ($tag = db_fetch_object($res)) {
print l($tag->name.' -> ('.$tag->anz.')', 'taxonomy/term'.$tag->tid).'<br />';
}
?>
gruß pebosi
gruß pebosi
--
https://pebosi.net
Ja man!!! Extremen Dank an dich!
am 06.07.2007 - 13:44 Uhr
Ich musste noch ne kleinigkeit ändern, aber du hast mir die entscheidende Hilfe gegeben! Super!
Hier noch mal das ganze, für menschen mit dem selben nervigen Problem. :-)
<?php
$res = db_query("SELECT t.name, t.tid, count(*) as anz, c.cid FROM {term_data} t INNER JOIN {category_hierarchy} ch ON ch.cid=c.cid AND ch.parent!=22 INNER JOIN {category_node} c ON c.cid=t.tid GROUP BY t.tid ORDER BY anz DESC");
while ($tag = db_fetch_object($res)) {
print l($tag->name.' -> ('.$tag->anz.')', 'node/'.$tag->tid).'<br />';
}
?>