ciao a tutti, se potete darmi due dritte
voglio realizzare un menù che venga visualizzato quando vengono visualizzati dei contenuti che contengono 2 termini particolari di tassonomia.
penso sia una cosa abbastanza semplice, ma sono agli inizi con drupal, mysql e php.
Bhè, tanto semplice no, ma si può fare 
<?php
if(arg(0) == 'node' && arg(1) != 'add' ) {
// Ovviamente aggiungere i controlli per essere sicuri
// che non cerchino di iniettare codice strano
$nid = arg(1);
// Ora devi controlare se i tuoi termini con tid1 e tid2
// sono collegati al nodo in questione, ci sono tanti modi
// più o meno performanti, possiamo farlo, per esempio,
// usando le API di taxonomy:
$tid1 = 10;
$tid2 = 13;
// Recupero i termini legati al NID
$terms = taxonomy_node_get_terms($nid);
// Devo fare un confronto tra i termini, prima recupero tutti
// i tid collegati al nodo
$value_term = array();
foreach($terms as $term) {
$value_term = $term->tid;
}
// Controllo se i termini sono presenti nell'array
if (in_array($tid1, $value_term ) && in_array($tid2, $value_term ) ) {
return true;
} else {
return false;
}
} else {
return false;
}
?>
__________________
ciao,
ti ringrazio per la risposta,
nel frattempo ho fatto un po' di prove,
utilizzando phpMyAdmin sono andato a vedermi i database usati da drupal
e ho provato a fare delle query; ho ottenuti del codice che funziona, ma
ho deciso di mettere su il tuo, decisamente molto più elegante
nel sito www.arthenaweb.org, ora ho messo un menù che viene visualizzato soltanto quando si selezionano contenuti con questi due tag
grazie ancora, ettore
<?php
$match = FALSE;
if (arg(0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
//
// ottengo tid tag1
//
$name1 = "\"Laboratorio\"";
$query_tag1 = "SELECT tid FROM {term_data} WHERE name = ".$name1;
$tid1 = db_result(db_query($query_tag1));
//
// ottengo tid tag2
//
$name2 = "\"Scrittura Creativa\"";
$query_tag2 = "SELECT tid FROM {term_data} WHERE name = ".$name2;
$tid2 = db_result(db_query($query_tag2));
//
//
//
$query3 = "SELECT COUNT(*) FROM term_node WHERE nid = ".$nid." AND tid = ".$tid1;
$row1 = db_result(db_query($query3));
if($row1 > 0)
{
$query4 = "SELECT COUNT(*) FROM term_node WHERE nid = ".$nid." AND tid = ".$tid2;
$row2 = db_result(db_query($query4));
if($row2 > 0)
$match = TRUE;
}
}
return ($match==TRUE);
?>scusa, ma il codice che hai scritto è talmente pericoloso che preferisco dirtelo chiaramente, in modo che tu possa correggere gli errori (e sopratutto chi legge usi un codice più corretto), innaiztutto quando si fanno delle query, non concatenare MAI del testo, si usa db_query apposta, permette di mettere dei marker all'interno della query (%d, %s, ...) in modo che venga fatto un controllo e si eviti SQL Inectjon, quindi:
<?php
$name1 = "\"Laboratorio\"";
$query_tag1 = "SELECT tid FROM {term_data} WHERE name = ".$name1;
$tid1 = db_result(db_query($query_tag1));
?><?php
$name1 = "\"Laboratorio\"";
$tid1 = db_result(db_query("SELECT tid FROM {term_data} WHERE name = '%s'", $name1));
?>Idem per Query3 e 4, ma lascio a te il compito di correggere 
grazie, capito,
grazie del tuo tempo,
ora dedico un po del mio a tradurre un po di stringhe per la versione 6.3
ciao, ettore
Iscritto il: 28 Giu 08