Una volta inseriti tramite l'area di amministrazione gli articoli che si desidera mostrare nel front-end, è possibile procedere con il codice necessario per la loro visualizzazione in homepage; tipicamente nella prima pagina di un blog non vengono mostrati gli articoli per esteso ma soltanto delle anteprime composte dalle prime parole dei post.
A questo scopo verrà proposta una piccola funzione che permetterà di "tagliare" il testo degli articoli ad un'altezza definita attraverso una cifra che rappresenterà il numero di parole che verranno mostrate per ogni testo.
Il suo funzionamento è abbastanza semplice, essa accetta tre parametri:
- il testo da tagliare;
- il numero di parole da presentare in anteprima;
- un elemento da mostrare in coda all'anteprima (nel caso specifico sarà un collegamento al testo completo del post).
La funzione "esplode" una stringa e quindi anche un testo sulla base degli spazi in esso presenti, utilizzati come delimitatori per identificare le diverse parole; una volta contato il numero delle parole che compongono il testo, questo viene tagliato subito dopo la parola che corrisponde alla cifra indicata come parametro della funzione preview()
, se per esempio $offset = 50
, allora il testo verrà tagliato dopo la cinquantesima parola.
L'ultimo parametro ($collegamento
) potrà essere definito arbitrariamente a seconda dell'elemento che si desidera visualizzare in code all'anteprima.
Di seguito è possibile analizzare il codice della funzione per la creazione delle anteprime:
// funzione per la creazione di anteprime dei testi public function preview($post, $offset, $collegamento) { return (count($anteprima = explode(" ", $post)) > $offset) ? implode(" ", array_slice($anteprima, 0, $offset)) . $collegamento : $post; }
Prima di passare al codice per la visualizzazione dei post in homepage, è utile proporre anche una seconda funzione, si ricordi infatti che ad ogni post è associato un valore relativo alla data che utilizza il formato "aaaa-mm-dd", se si desidera riformattare la data in modo da utilizzare la disposizione consueta nei paesi mediterranei, "gg-mm-aaaa", sarà possibile creare una piccola funzione che suddivida la data nei tre diversi componenti e li riunisca nell'ordine desiderato:
// funzione per la formattazione della data public function format_data($d) { $vet = explode("-", $d); $df = $vet[2]."-".$vet[1]."-".$vet[0]; return $df; }
La funzione "vede" la data registrata nel campo "data_post" della tabella "post" come una stringa che "esplode" sulla base del carattere di delimitazione "-", fatto questo la suddivide in tre elementi che verranno risistemati in ordine inverso rispetto a quello originale per ottenere il valore desiderato.
In alternativa possiamo utilizzare le funzioni strtotime
e strftime
per la formattazione della data. Vediamo come:
// funzione per la formattazione della data public function format_data($d) { // converte la data in timestamp $vet = strtotime($d); // converte il timestamp della variabile $vet // in data formattata $df = strftime('%d-%m-%Y', $vet); return $df; }