Volevo sviluppare un piccolo plugin che integrasse una funzionalità vista su qualche portale di informazioni, ovvero la possibilità, in base al numero di parole presenti in un articolo calcolare il tempo approssimativo di lettura dello stesso articolo.
Avevo pensato ad una cosa del genere.. Ma non funge..
Ho fatto qualche errore?? Ci stò perdendo la testa..
Grazie in anticipo..
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
class plgplgContentTimeToRead extends JPlugin
{
var $plg_tag = "TimeToRead";
public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
$this->loadLanguage();
}
public function contaparole($txt) {
return count(explode(" ",$txt));
}
public function onContentPrepare($context, &$article, &$params, $page = 0)
{
$app = JFactory::getApplication();
// cerco l'espressione {TimeToRead} all'interno del content
$regex = "/{".$this->plg_tag."}/i";
preg_match_all($regex,$row->text,$matches);
// Numero di occorrenze
$count = count($matches[0]);
// Se non ci sono occorrenze della stringa {TimeToRead}
// termino l'esecuzione del plugin
if(!$count) return;
// Preparo l'output
// Il testo articolo è contenuto in $testo
$testo = $row->text;
// Conto gli spazi vuoti tra le parole ( dovrei ottenere il numero di parole approssimativo senza contare simboli )
$parole = contaparole($testo);
// Ammettendo che mediamente per leggere una parola ci voglia un secondo,
// divido il numero delle parole per 60 sec
// per ottenere i minuti che ci vogliono per leggere un articolo.
$divisore_min = 60;
$calcolo = $parole/$divisore_min;
$plg_output = "Tempo richiesto per la lettura dell'articolo: ". $calcolo;
// Elaboro i tag del plugin
$row->text = preg_replace( $regex, $plg_output , $row->text );
}
}?>