Tag-Cloud
Eingetragen von witzel (163)
am 19.09.2009 - 12:31 Uhr in
am 19.09.2009 - 12:31 Uhr in
Hallo zusammen,
ich benutze die Module community tags und tagadelic und ich möchte für einen speziellen Inhlatstyp eine Tagcloud einfügen, in der die Begriffe eines Vocabulars bezogen auf den aktuellen node angezeigt werden. In meiner node-typ.tpl.php steht derzeit:
<?php
drupal_add_css('/'.drupal_get_path('module','tagadelic').'/tagadelic.css');
$vocs= array(3,4); // ids of vocabs for which you want to build a tag cloud
$vids= implode(",",$vocs);
$tagcloud = "";
$tagcloud .= theme('tagadelic_weighted',tagadelic_sort_tags(tagadelic_get_weighted_tags($vocs, $steps = 6, $size = 12)));
$tagcloud .= theme('tagadelic_more', $vids);
print $tagcloud;
?>
Hiermit werden alle Begriffe der Vokabulare 3 und 4 angezeigt, aber alle Begriffe und nicht nur die, mit denen der aktuelle Node getaggt wurde. Kann mir jemand helfen, wie ich den code ändern muss, damit er sich nur auf den aktuellen Node bezieht?
- Anmelden oder Registrieren um Kommentare zu schreiben
taxonomy_node_get_terms_by_vocabulary
am 19.09.2009 - 12:42 Uhr
Moin.
Verwende die Funktion taxonomy_node_get_terms_by_vocabulary. Damit holst Du Dir pro Vokabular die zur Node gehörenden Terms, bildest die Schnittmenge der beiden erhaltenen Term-Arrays und hast dann alle Terms der Node, die in den gewünschten Vokabularen enthalten sind.
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ich weiß leider nicht, wie
am 27.09.2009 - 11:47 Uhr
Ich weiß leider nicht, wie ich das genau machen soll. Ich brauche nur die Begriffe aus meinem Vokabular Nr. 10.
Wie muss ich die Funktion ändern
<?php
function taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid') {
$result = db_query(db_rewrite_sql('SELECT t.tid, t.* FROM {term_data} t INNER JOIN {term_node} r ON r.tid = t.tid WHERE t.vid = %d AND r.vid = %d ORDER BY weight', 't', 'tid'), $vid, $node->vid);
$terms = array();
while ($term = db_fetch_object($result)) {
$terms[$term->$key] = $term;
}
return $terms;
}
?>
und wie mit dem Code von oben kombinieren? Sorry, ich stoße hier leider an meine Grenzen.