[gelöst] term ID einer node finden
Eingetragen von tomx (771)
am 18.03.2010 - 11:17 Uhr in
am 18.03.2010 - 11:17 Uhr in
Diese drupal Funktion soll alle term einer node finden:
<?php
taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid')
?>
Es soll die term id für die vergebenen terms gefunden werden (es ist immer nur einer/vocab vorhanden)
<?php
$vid = 9;
$terms = taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid');
print_($terms);
?>
Dies erzeugt nur
Array ( )
Wie erhält man die term ID zu einer node zu einem bestimmten vocab?
- Anmelden oder Registrieren um Kommentare zu schreiben
fast richtig
am 18.03.2010 - 11:27 Uhr
<?php
$vid = 9;
$terms = taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid');
foreach ($terms as $key => $term) {
print $term->tid;
}
?>
-----------
Luca Curella
Kooperative Netze - Berlin
Es gibt kein Ergebnis :-(
am 18.03.2010 - 12:17 Uhr
Es gibt kein Ergebnis :-(
Hmmm... An welcher Stelle
am 18.03.2010 - 12:55 Uhr
Hmmm...
An welcher Stelle rufst du das auf?
Ich arbeite mit diesem Aufruf in einer node-meintyp.tpl.php und das klappt wunderbar:
<?php
$tids = taxonomy_node_get_terms($node);
foreach ($tids as $key => $term) {
print $term->tid);
}
?>
-----------
Luca Curella
Kooperative Netze - Berlin
Im Block
am 18.03.2010 - 15:15 Uhr
Im Block
auch
taxonomy_node_get_terms($node);
ergibt nix:-(Hallo tomx
am 18.03.2010 - 19:53 Uhr
du hast ja schon mal vor kurzem gefragt: http://www.drupalcenter.de/node/26137
Aber es ist wahrscheinlich das gleiche Problem.
Schildere doch mal dein Vorgehen:
z.B.
du erstellt einen neuen Block unter "Strukturierung"-"Blöcke"-Block hinzufügen"
du .....usw.
Wichtig ist: WO GENAU trägst du deinen PHP-Code ein ? Hast du einen WYSISWG-Editor aktiv ?
Sepp
Sepp
Den code kommt in den manuell
am 19.03.2010 - 09:58 Uhr
Den code kommt in den manuell erstellten Block. Dieser soll den zuvor erstellten views Block aufrufen. Da es nicht klappt, den Block über terms arguments anzusprechen, versuche ich es über die term ID. Ich möchte den Block aufrufen wenn eine node mit einem bestimmten Begriff versehen ist.
Ein wysiwyg Editor ist installiert, aber für die Blockfelder deaktiviert. php print Anweisungen werden ausgegeben.
Was gibt es denn für andere Blöcke abhängig von node term IDs anzuzeigen?
$node
am 19.03.2010 - 10:04 Uhr
auch
taxonomy_node_get_terms($node);
ergibt nix:-(Mal so nebenbei gefragt ... hast Du in dem Block denn auch die Variable
$node
definiert?Für gewöhnlich verwendet man in Blöcken dann nämlich folgendes Konstrukt:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms($node);
// ... was auch immer Du mit $terms anstellen willst ...
}
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Tatsächlich fehlte
am 19.03.2010 - 12:02 Uhr
Tatsächlich fehlte
node_load()
So klappt es nun,
herzlichen Dank für die basics Hilfe :-)
<?php
$vid = 9;
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid');
foreach ($terms as $key => $term) {
print $term->tid;
}
}
?>
Hier das Ergebnis von
print_r($terms);
<?php
Array ( [241] => stdClass Object ( [tid] => 241 [vid] => 9 [name] => buch [description] => [weight] => 0 ) )
?>
Kann man nicht auch ohne die foreach Schleife auf das Objekt
tid
zugreifen? Wäre doch eleganter...Nur tid wird ja gesucht. Sollte das nicht so auch gehen?
print $terms[tid];
Object und Array
am 19.03.2010 - 12:40 Uhr
Kann man nicht auch ohne die foreach Schleife auf das Objekt
tid
zugreifen?Ja kann man.
Was tust Du jedoch, wenn mehrere Terms gesetzt sind?
Bei einem Term wäre es:
<?php
$terms = ...;
$first_term = reset($terms);
print $first_term->tid;
?>
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Wo gibts mehr Infos zu
am 19.03.2010 - 14:39 Uhr
Wo gibts mehr Infos zu drupalspezifischen Objekten und Array?
Danke nochmals für die guten Tipps!