Ho provato Views 2 per Drupal6, ma onestamente è ancora lontanto dall'essere definito stabile! Nella nuova versione del blog volevo mettere in evidenza un articolo fra tutti quelli inviati. Non avendo a disposizione views, ho creato un blocco con del codice php scritto ad hoc. In particolare volevo estrarre, il titolo, le prime 30 parole del sommario (senza le eventuali immagini presenti) e un link "leggi tutto" al nodo selezionato.
Ecco il codice
<?php
//prepara la query: n.nid identifica il post che voglio Ecco il
$query=("select r.title,teaser,n.nid from node_revisions r inner join node n on r.nid=n.nid where type='story' and sticky='0' and n.nid='166'");
$result=db_query($query);while($x=db_fetch_object($result)){
//prendo i campi che mi servono
$grezzo=$x->teaser; //estratto del post
$titolo=$x->title; //titolo del post
$id=$x->nid; // nid del post
}
//scrivo una funzione per troncare il post ad un numero predefinito di parole
function trunc($phrase, $max_words)
{
$phrase_array = explode(' ',$phrase);
if(count($phrase_array) > $max_words && $max_words > 0)
{
$phrase = implode(' ',array_slice($phrase_array, 0, $max_words));
}
return $phrase;
}
$link= 'node/'.$id; //preparo il link al nodo
$estratto=strip_tags($grezzo, '<strong>'); // pulisco il testo da tutti i tags tranne lo strong
$estrattotroncato=trunc($estratto, 30); // limit a 30 il numero di parole chiamando la mia funzione
$linkformattato=l("leggi tutto", $link); //formatto il link utilizzando la funzione l di drupal
// preparo il contenuto da mostrare
$output .= '<h2 class="titoloevidenza">In evidenza</h2>';
$output .= '<div class="estrattolaterale">';
$output .= '<div class="estrattolateralecontent">';
$output .= '<h3 class="evidenza">'.l($titolo,$link).'</h3>';
$output .='<p>'.$estrattotroncato.'...'.'<span>'.$linkformattato.'</span></p>';
$output .= '</div>';
$output .= '</div>';
echo
"$output";
?>Si tratta di una soluzione rapida ma efficace. In questi casi sarebbe opportuno creare un piccolo modulo, che gestisca i parametri attraverso una form nel backend di Drupal.