Selezionare un nodo a caso associato ad un termine

3 contenuti / 0 new
Ultimo contenuto
Selezionare un nodo a caso associato ad un termine

Ciao a tutti,
ho la necessità di caricare un nodo a caso di una particolare categoria.

Supponendo di avere a disposizione su $termine il mio id del vocabolario, come prendo questo nodo?
Ho provato a fare

<?php
$count
= 1;
$sql = "SELECT n.title, n.nid FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid in ($termine) AND n.status=1 ORDER BY n.created DESC";
$result=db_query(db_rewrite_sql($sql), 0, $count);
while (
$anode = db_fetch_object($result)) {
 print
$anode->title;
}
 
?>

ma $anode sembra non contenere niente (tralasciando il fatto che non è una scelta casuale).

Cosa mi consigliate?

tramite sql o tramite views?
Nel secondo caso la cosa da fare mi sembra banale, nel primo caso cercherei un nid nella tabella term_node e poi carichi il relativo nodo:

<?php
$termine
= 10;
$nid = db_fetch_object(db_query("SELECT nid FROM {term_node} WHERE tid = %d LIMIT 1", $termine));
$node = node_load(array('nid' => $nid));
print
theme('node', $node);
?>

non è random e non l'ho testato , ma dovrebbe andare.

PS: ovviamente mancano un pò di controlli, tipo nodo pubblicato, ...

Ciao
Marco
--
My blog
Working at @agavee

alla fine ho utilizzato:

<?php
$terms
= $node->tid;
   
$termine = $terms;
   
$nid = db_fetch_object(db_query("SELECT nid FROM {term_node} WHERE tid = %d LIMIT 1", $termine));
   
$nodea = node_load($nid);
 
?>