ho cercato un sistema per far vedere un blocco solo quando il il nodo contiene una o più parole di un determinato vocabolario
e ho trovato il seguente codice
<?php
// This snippet returns TRUE if the node we are
// currently viewing is tagged with a term which belongs
// to the 'desired_vocab' and we are not in edit mode (arg(2)).
// put here the vocabulary ID you're interested in
$desired_vocab = 1;
if ( arg(0) == 'node' and is_numeric(arg(1)) and arg(2) == FALSE ) {
// Yes, we're viewing a node in view mode.
$node = node_load(arg(1)); // cached
// If the term does not exist we're done
if (is_array($node->taxonomy)) {
foreach ($node->taxonomy as $term) {
if ($term->vid == $desired_vocab) {
return TRUE;
}
}
}
}
return FALSE;
?>
Ma purtroppo non funziona e il blocco si vede in tutte le pagine lo stesso....
sarà forse sbagliato il codice?
Ciao,
per prima cosa attento agli
and
di php che sarebbe meglio usare&&
(in teoria non dovrebbero esserci problemi, però potresti avere strani comportamente con versioni recenti di php).Secondariamente, hai:
che identifica l'ID del vocabolario, mentre a te servirebbe l'ID del termine, difatti, più avanti, fai:
che è sbagliato, perchè cerchi tutte i termini che stanno dentro al vocabolario con id 1 (a meno che non ti serviva questo, ma dal problema ho capito altro).
Per cui, potresti trasformarlo in:
P.S.: anche il return FALSE alla fine potrebbe dare fastidi!
;)
Il blocco ho scelto l'opzione: "mostra se il seguente codice restituisce "true"
il blocco deve essere visibile solo se nel nodo o nei nodi c'è uno o più termini di un determinato vocabolario...
ho trovato quel codice negli snippest di drupal.org...
forse va modificato....
quello che hai fatto tu, non mi appare il blocco quando clicco su uno dei termini del vocabolario.
www.dragossido.com drupal 7.x
www.io-ho.com drupal 7.x
www.io-imparo.com drupal 7.x
www.spettacolando.com drupal 7.x
www.napolisgulf.com php
Ok,
allora avevo capito io male...
Però da come mi dici adesso vuoi che compaia su una pagine di un termine? Perchè in quel caso non hai accesso a $node dato che sei su un termine...
Dov'è esattamente che deve comparire?
Seconda cosa, i termini sono dei tag, per cui non sai a priori quali possono essere le pagine? Perchè io agirei con gli alias... imposti un un alias particolare con pathauto (ad esempio tags/nome_tag) e poi imposti la visualizzazione solo nelle pagine che iniziano con quell'alia (tags/*).
;)
Questo come vi sembra?
http://www.poakpong.com/node/1234
Follow me @DarthDrupal and @Dinamicamente.org
Dinamicamente.org
non ci siamo....
allora io ho un vocabolario....
con tutti i termini dentro ok
io voglio che il blocco sia visibile solo se i termini del nodo fanno parte di quel vocabolario... (anche tutti i termini)
www.dragossido.com drupal 7.x
www.io-ho.com drupal 7.x
www.io-imparo.com drupal 7.x
www.spettacolando.com drupal 7.x
www.napolisgulf.com php
Ecco....
ho trovato la soluzione!!! :):)
<?php
$desired_vocab = 10; // put here the vocabulary ID you're interested in
// check taxonomy first
if ( arg(0) == 'node' and is_numeric(arg(1)) ) {
// Yes, we're viewing a node.
$node = node_load(arg(1)); // cached
foreach ($node->taxonomy as $term) {
if ($term->vid == $desired_vocab) {
return TRUE;
}
}
}
if ( ((arg(0) == 'taxonomy')
&& (arg(1) == 'term')
&& is_numeric(arg(2))
&& ($term = taxonomy_get_term(arg(2)))
&& ($term->vid == $desired_vocab )) ) {
return TRUE;
}
return FALSE;
?>
può servire a qualcun'altro!
www.dragossido.com drupal 7.x
www.io-ho.com drupal 7.x
www.io-imparo.com drupal 7.x
www.spettacolando.com drupal 7.x
www.napolisgulf.com php