Visualizzazione pagine dei termini della tassonomia Drupal 6
E' possibile fare in modo che drupal visualizzi le pagine dei termini della tassonomia solo se questi contengono dei nodi, altrimenti no. Ecco come:
<?php
function taxonomy_list_vocabularywithnode() {
//la variabile language occorre se si vogliono mostrare contenuti divisi per lingua
global $language;
//impostazione dell'intestazione della tabella, con ID per ultimo in modo che si ha questo ordinamento: nid desc
$header = array(
array('data' => t('Operazioni')),
array('data' => t('Tipo'), 'field' => 'n.type', 'sort' => 'desc'),
array('data' => t('Titolo'), 'field' => 'n.title', 'sort' => 'desc'),
array('data' => t('Termini')),
array('data' => t('Creato'), 'field' => 'n.created', 'sort' => 'desc'),
array('data' => t('ID'), 'field' => 'n.nid', 'sort' => 'desc'),
);
//sql inner join: L'INNER JOIN restituisce le righe delle tabelle se c'è un legame, altrimenti non le mostra. DISTINCT mostra solo una volta
$query = "SELECT DISTINCT n.nid, n.type, n.title, n.created FROM {node} AS n INNER JOIN {term_node} AS t ON n.vid = t.nid WHERE n.nid = t.nid";
//paginazione della query con le api di Drupal 6
$query .= tablesort_sql($header);
$result = pager_query($query, 30);
//ciclo dei reord
while ($row = db_fetch_array($result)) {
$nid = $row['nid'];
$timestamp = $row['created'];
//funzione di php che mostra la data leggibile e non timestamp
$created = date("Y-m-d H:i:s", $timestamp);
//sottosql che pesca i relativi termini relazionati alle pagine
//Il LEFT JOIN restituisce tutte le righe della
//prima tabella, anche se non ci sono corrispondenze nella seconda tabella
$res = db_query("SELECT {term_data}.name, {term_data}.tid
FROM {term_data}
LEFT JOIN {term_node} ON {term_node}.tid = {term_data}.tid
LEFT JOIN {node} ON {node}.nid = {term_node}.nid
WHERE {term_node}.nid =%d", $nid);
if ($res) {
//cilcla concatenando una stringa
while ($riga = db_fetch_array($res)) {
$termini .= $riga['name'].", ";
}
}
//costruzione del link a href con la funzione di drupal
$linkedit = l(t('edit'), 'node/'.$nid.'/edit/');
$linkview = l(t($row['title']), 'node/'.$nid);
//array delle righe della tabella con le variabili pescate dal database
$rows[] = array($linkedit, $row['type'], $linkview, $termini, $created, $row['nid'], );
$termini = "";
}
if (!$rows) {
$rows[] = array(array('data' => t('Non ci sono record in questa tabella'), 'colspan' => 4));
}
//temizzazione dell'intestazione e dei record
$output = theme('table', $header, $rows);
$output .= theme('pager', NULL, 30, 0);
print theme('page', $output);
exit;
}
?>
Spero vi ritorni utile! Ciao da Danzisiweb
Questa funzione è stata aggiunta in taxonomy.admin.inc e il relativo menu nell'hook_menu in taxonomy.module:
<?php
$items['admin/content/taxonomy/listwithnode'] = array(
'title' => 'Lista con nodi',
'page callback' => 'drupal_get_form',
'page arguments' => array('taxonomy_list_vocabularywithnode'),
'access arguments' => array('administer taxonomy'),
'type' => MENU_LOCAL_TASK,
'parent' => 'admin/content/taxonomy',
'file' => 'taxonomy.admin.inc',
);
?>
Allegato | Dimensione |
---|---|
![]() | 21.25 KB |
Argomenti:
- Accedi o registrati per inserire commenti.