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',
  );
?>

AllegatoDimensione
Package icon taxonomy.zip21.25 KB

Argomenti: