Utente: Anonymous

Nodi

Gli argomenti trattati fanno riferimento alla versione 6.x di Drupal

I nodi contengono il contenuto primario del sito.
L'elenco di tutti i nodi inseriti nel sistema è contenuto nella tabella NODE.
Le informazioni sono lette e codificate dal sistema, mediante la funzione menu_execute_active_handler(), descritta in Decodifica URL. La funzione individua la page callback e, tramite essa, torna la stringa del contenuto codificato.
Per i nodi sono disponibili due page callback:

La home page - node_page_default()

La prima pagina del sito mostra generalmente più di un nodo. Questi sono i nodi a cui è stato assegnato l'attributo di pubblicazione "promosso in prima pagina". Per selezionare tali nodi, la funzione node_page_default() esegue la seguente query sulla tabella NODE:

SELECT n.nid, n.sticky, n.created 
FROM node n 
WHERE n.promote = 1 AND n.status = 1 
ORDER BY n.sticky DESC, n.created DESC

Dalla query si vede che le condizioni affinché un nodo venga selezionato sono:

  • avere l'attributo di pubblicazione - status=1;
  • avere l'attributo promosso in prima pagina - promote=1;

L'ordine di visualizzazione dei nodi è fornito invece dal valore sticky:più è alto, più il nodo salirà nell'elenco. A parità di valore l'ordine è dato dalla data di creazione. I nodi più recenti , sono visti per prima.
Il valore di sticky normalmente vale zero. Volendo quindi mostrare un nodo sempre per primo, indipendentemente dalla data di creazione, basterà assegnare un valore >0 al nodo, ad esempio 100.
Individuati i nodi da visualizzare , la funzione node_page_default(), inizia un ciclo di lettura e visualizzazione di tutti i nodi. Questo viene eseguito all'interno del ciclo contenuto nella funzione node_page_default().

<?php
function node_page_default() { 
......
 
$output = '';
 
$num_rows = FALSE;
  while (
$node = db_fetch_object($result)) {
   
$output .= node_view(node_load($node->nid),  1);
   
$num_rows = TRUE;
  }
// Il valore 1 in node_view indica che si tratta del contenuto teaser
.....
?>

All'interno del ciclo sono visibili le due funzioni di Drupal per il caricamento del nodo node_load() e per la visualizzazione del nodo node_view(). Al termine la stringa $output conterrà tutti i contenuti dei nodi da visualizzare in prima pagina.

Contenuto singolo - node_page_view()

Se la pagina richiesta non è la home page, ma un singolo contenuto, Drupal seleziona la page callback node_page_view(). Poichè la richiesta di visualizzazione è di un particolare nodo (ad esempio http://miosito.com/node/100), Drupal carica prima il nodo richiesto mediante la funzione node_load() e successivamente chiama la node_page_view() passando le informazioni sul nodo ($node) lette e un identificativo ($cid) che, se non nullo, indica che la pagina del nodo è già presente nella cache.
La funzione node_page_view() imposta il titolo della pagina (drupal_set_title(check_plain($node->title))) e chiama la funzione node_view($node, FALSE, TRUE). Il terzo parametro a TRUE indica che Drupal deve visualizzare l'intero contenuto del nodo.

Caricamento e visualizzazione del contenuto

In definitiva abbiamo visto che le due funzioni di base utilizzate da Drupal sia per la visualizzazione della home page sia per la visualizzazione di un singolo contenuto sono sempre node_load() e node_view().
Il funzionamento di queste due funzioni e quindi la logica del caricamento e della visualizzazione dei nodi è descritto nei successivi paragrafi: Caricamento, Visualizzazione.

Le funzioni principali

node_page_default()
node_page_view()
node_load()
node_view()
node_invoke()
node_invoke_api()