ciao,
ho personalizzato un nodo
<?php echo theme('imagecache', 'copertina', $node->field_img[0]['filepath'], $node->title, $node->title, array('align' => 'center')); ?>
<?php if (!$teaser): ?>
<?php if ($terms) { ?><div class="taxonomy"><span><?php print t('Tags') ?></span> <?php print $terms?></div><?php } ?>
<?php endif; ?>
questo riporta la tassonomia ma, dal momento che in questo ci sono molti vocabolari mi chiedevo se fosse possibile suddividerli. Ogni vocabolario ha il suo nome e cìè pure la posssibilità di inserire dei tags che non rientrano in un vocabolario. quindi se un vocabolario si chiama località come posso nel nodo richiamarlo in un determinata posizione, poiché la classe taxonomy li richiama tutti?
Grazie
Tiziano
Devi usare
taxonomy_node_get_terms
e/o
taxonomy_node_get_terms_by_vocabulary
http://api.drupal.org/api/search/6/taxonomy_node
<?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;
}
?>
ciao Pinolo ho trovato il codice di riferimento a cui tu facevi riferimento immagino non vada inserito così come lo trovo ma devo modificare il valore 'SELECT t.tid, t.* dove per l'asterisco devo inserire il nome del vocabolario, giusto? ora farò delle prove.
A ogni modo grazie.
Tiziano
No, devi solo richiamare la funzione, es.
$variabile = taxonomy_node_get_terms_by_vocabulary(100, 2)
In cui 100 è l'ID del nodo e 2 l'ID del vocabolario.
In $variabile avrai un array con i termini.
dunque per vedere questi valori immagino di dover vedere direttamente su mysql poichè non trovo da altre parti il riferimento.
se così fosse ho trovato nella tabella node il valore nid e vid per il tipo di contenuto che mi interessa quali dei due valori dovrei prendere?
grazie
Tiziano
Se sei in node.tpl.php, il nid lo ottieni da $node->nid
Il vid lo devi sapere prima e lo ottieni andando nella pagina di amministrazione della tassonomia: quando passi con il mouse su ogni vocabolario per modificarlo, vedi nell'URL il vid del vocabolario.
ciao ricapitolando,
inserisco il seguente codice in un nodo personalizzato.
$variabile = taxonomy_node_get_terms_by_vocabulary(13, 1)
il codice nid per il tipo di nodo l'ho trovato su mysql mentre il numero del vocabolario beh ho seguito il tuo consiglio.
per vedere i valori della tassonomia cosa devo scrivere?
Grazie
Tiziano
Fai
print_r($variabile);
e vedi cosa ti viene fuori (un array in cui ogni elemento è un oggetto corrispondente a un termine)
ciao ho inserito il codice ma il risultato è una scritta con array ()
e niente più.
<?php
$variabile = taxonomy_node_get_terms_by_vocabulary(13, 1)
?>
<?php print_r($variabile);?>
Grazie
Tiziano
Non devi usare un valore assoluto per il primo argomento della funzione: una $node->nid al posto di 13.
Dove lo stai inserendo questo codice?
nel nodo personalizzato... è sbagliato?
Cosa intendi per "nodo personalizzato"? Il template del nodo (file .tpl.php o fatto con content templates)? Direttamente nel body di un nodo con il filtro PHP attivato?
io uso il tema marinelli e ho creato un nodo personalizzato, si chiama node-archivio.tpl.php all'interno il codice è il seguente:
<div class= "archivio">
<table border="2" cellpadding="5">
<tr>
<th width= 220 rowspan="2">
<?php echo theme('imagecache', 'copertina', $node->field_img[0]['filepath'], $node->title, $node->title, array('align' => 'center')); ?>
<?php if (!$teaser): ?>
<?php if ($terms) { ?><div class="taxonomy"><span><?php print t('Tags') ?></span> <?php print $terms?></div><?php } ?>
<?php endif; ?>
</th>
<td valign="top">
<strong>titolo:</strong> <br/>
<strong>Codice Tavola:</strong> <br/>
<?php
echo $node->field_codice_tavola[0]['view'];
?> <br/>
<strong>Bianco/Nero:</strong><br/>
<?php
echo $node->field_arc_bn[0]['view'];
?><br/>
<strong>Colore:</strong><br/>
<?php
echo $node->field_arc_colore[0]['view'];
?></td>
</tr>
<tr>
<td valign="top">
<strong>Supporto:</strong><br/>
<?php
echo $node->field_arc_supporto[0]['view'];
?>
<br/>
<strong>Localita:</strong><br/>
<?php
echo $node->field_arc_localita[0]['view'];
?>
<br/>
<strong>Provincia:</strong><br/>
<?php
echo $node->field_arc_provincia[0]['view'];
?>
<br/>
<strong>Regione:</strong><br/>
<?php
echo $node->field_arc_regione[0]['view'];
?>
<br/>
<strong>Stato:</strong><br/>
<?php
echo $node->field_arc_stato[0]['view'];
?>
<br/>
<strong>Cronologia:</strong><br/>
<?php
echo $node->field_arc_cronologia[0]['view'];
?>
<br/>
<strong>Tipologia ricettiva:</strong><br/>
<?php
echo $node->field_tipologia_ricettiva[0]['view'];
?>
<br/>
<strong>Ambito funzionale:</strong><br/>
<?php
foreach ($node->field_arc_ambito_funzionale as $arc_ambito_funzionale) {
print $arc_ambito_funzionale['view'] ;
}
?>
</td>
</tr>
<tr>
<td colspan="2" align="left">
<strong>Bibliografia:</strong><br/>
<?php
echo $node->field_arc_bibliografia[0]['view'];
?></td>
</tr>
<tr>
<td colspan="2" align="left">
<strong>Collocazione:</strong><br/>
<?php
echo $node->field_arc_note[0]['view'];
?></td>
</tr>
</table>
</div>
<div class= "clear-block clear">
</div>
non è corretto inserire qui il codice che mi hai suggerito?
Sì, ma allora usa $node->nid al posto di 13, altrimenti vedrai sempre i dati relativi al nodo con ID = 13, invece di quelli del nodo corrente.
ho provato ma non vedo assolutamente nulla continuo a vedere a solo la scritta Array() non è normale... vero?
Sei sicuro che il vocabolario con i termini da scegliere abbia ID = 1?
passando il cursore su modifica vocabolario il valore che appare è 1...quindi direi che il vocabolario non è un problema diciamo che il mio dubbio ora potrebbe essere se ho caricato tutti i moduli necessari, dal momento che la tassonomia è attiva.
Potrebbe essere una mancanza di API?
Gra zie Tiziano
No, se hai attivo Taxonomy, hai tutto quello che serve. I moduli che forniscono le API per i nodi non sono disattivabili.
Nel nodo che visualizzi sono stati effettivamente assegnati dei termini a quel vocabolario?
si ho inserito prima i termini...
ciao Pinolo
modificando il codice del nodo personalizzato ho ottenuto il risultato che vedi sotto ma non è ancora corretto...ahimé :-) ho letto vari post su drupal org non è proprio semplice anche perchè vorrei poter collegare i valori inseriti come nei normali tags...
hai qualche idea su come rendere il tutto?
Grazie
<?php
$node = node_load($nid);
$variabile = taxonomy_node_get_terms_by_vocabulary($node, 5);?>
<?php print_r ($variabile);
?>
Array ( [131] => stdClass Object ( [tid] => 131 [vid] => 5 [name] => Lazio [description] => [weight] => 1 [language] => it [trid] => 0 ) [128] => stdClass Object ( [tid] => 128 [vid] => 5 [name] => Italia [description] => [weight] => 2 [language] => it [trid] => 0 ) )
Immagino che prima di [128] ci sia una virgola, altrimenti c'è PHP che sta dando i numeri...
A questo punto hai tutto quello che ti serve:
- un array con come chiavi i tid dei termini usati
- nei valori associati (come oggetto) a ogni chiave, oltre al tid, hai anche il nome di ogni termine
Cosa ti manca per costruire una serie di link tipo quello che segue?
<a href="/taxonomy/term/131">Lazio</a>
sigh sigh
ciao Pinolo ieri funzionava ma non potevo lasciare il codice a vista e ho tolto dal nodo il codice, stamane ho provato a re-inserirlo ma non vedo altro che Array() è una desolazione...ieri ho re-inidicizzato il sito spero sia quello ad aver provocato questo lieve danno. A parte questo il fatto che ci sia una virgola ora passa in secondo piano perchè sono al punto di partenza, ma anche se fosse il codice usato è quello riportato e non ci sono virgole, nella voce dei vocabolari nemmeno, quindi "sta" virgola a cui ti riferisci quale può essere?
Grazie
Tiziano