Teasers personalizzate in Drupal 6 con views 2

Definite la lunghezza dei teaser da Views

Update: Con la nuova versione di Views teasers e html stripping si fanno direttamente dalla UI di Views.

Mentre procedevo alla creazione del vecchio sito mosettistudios mi sono imbattuto nella necessità di avere più controllo sui teasers utilizzando Views per l'estrazione. Probabilmente con un solo tipo di contenuto sono sufficenti le impostazioni base di Drupal.

Se invece avete diversi tipi di contenuto che necessitano diverse lunghezze del teaser la funziona neat_trim fa al caso vostro. Tutto quello che dovrete fare è copiare il seguente codice nel vostro template.php (ricordatevi di non includere "?>" a fine codice):

 

 <?php
function neat_trim($str, $n, $delim='…') {
$len = strlen($str);
if ($len > $n) {
preg_match('/(.{' . $n . '}.*?)\b/', $str, $matches);
return rtrim($matches[1]) . $delim;
}
else {
return $str;
}
}
?>

 

Ora basta andare sui file template di views dove vi serve la funzione (li trovate facilmente dal pannello views) e inserire il seguente codice:

 

 <?php
$string = neat_trim($output, 100);
print $string;
?>

 

Questo farà un print del vostro contenuto limitandolo a 100 caratteri, o completo ovviamente se è inferiore a 100 caratteri totali. Un piccolo suggerimento extra, se usate ediotri WYIWYG o avete comunque del codice HTML nel vostro testo, potete aggiungere uno strip_tags per rimuovere dal teaser porzioni di codice html non desiderate:

 

 <?php
$output = strip_tags($output);
$string = neat_trim($output,100);
print $string;
?>>