Joomla.it Forum

Non solo Joomla... => Sviluppo => Topic aperto da: otto9due - 13 Feb 2014, 16:54:48

Titolo: [RISOLTO]Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 13 Feb 2014, 16:54:48

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..

Codice: [Seleziona]



<?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 );
 }
}
?>
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 13 Feb 2014, 18:13:50
non ti funziona xche hai scopiazzato a caso

$row->text

non è nulla,

o metti &$row al posto di &$article nei parametri della funzione

oppure sostituisci $artcle a $row dentro
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 08:25:32
Anzitutto ti ringrazio per aver risposto..( in effetti era un errore abbastanza evidente :( ma non mi era non ci avevo fatto caso ).  Per quanto riguarda il plugin però nonostante abbia modificato il parametro della funzione non funge.. :P


Codice: [Seleziona]
public function onContentPrepare($context, &$row, &$params, $page = 0)


Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 09:31:41
hai scritto male il nome della classe

plgplgContentTimeToRead
metti
 
PlgContentTimetoread
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 12:10:18
Niente non va neanche così.. Anche se qui.. http://docs.joomla.org/J2.5:Creating_a_Plugin_for_Joomla (http://docs.joomla.org/J2.5:Creating_a_Plugin_for_Joomla)  mi riporta la classe in piccolo .. es: plgContentTimetoread .
Comunque in entrambe le versioni non sostituisce nulla nell'articolo..


Ovviamente io nell'articolo ho messo {TimeToRead} dove volevo che apparisse..
Magari allego lo zip.. così da avere il tutto.. Ovviamente devo ancora finirlo quindi c'è un parametro non colelgato e qualcosa di incopleto..

[allegato eliminato automaticamente dopo un anno]
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 12:13:08
il problema non era la p minuscola ma plg ripetuto 2 volte,

prova a mettere un die dentro la funzione onContentprepare per vedere se viene eseguita
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 12:21:58
Sisi quello ovviamente l'ho corretto.. come inserisco un die per verificare se viene eseguita la funzione.. Perdonami ma ho iniziato da poco e sto imparando.. Grazie.
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 12:24:21
Codice: [Seleziona]
public function onContentPrepare($context, &$article, &$params, $page = 0)
{

 var_dump($article);

 die();

 Se ti muore la pagina e vedi cosa contiene $article allora il plugin viene eseguito senno no
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 12:39:36
In pratica ho provato ad inserire al posto di tutto quello che c'era prima quello che hai scritto tu sopra.. La pagina si carica tranquillamente.. Ovviamente senza apportare alcuna modifica..


Facendo così invece..

Codice: [Seleziona]
public function onContentPrepare($context, &$row, &$params, $page = 0)
{


 var_dump($row);


 die();
 }


Ci mette solo più tempo a caricare.. ma il risultato è uguale..
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 12:43:49
non ti ho detto di sostituire tutto quello che c'era prima ma di inserire

var_dump($row);
die();
dentro la funzione onContentPrepare

guarda che poi quello che ti ho scritto non fa nulla ma dovrebbe solo apparirti un pagina bianca con il contenuto della variabile article

quindi se non cambia niente è perche non viene eseguito il plugin

Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 12:45:28
Sisi mi sn andato a documentare  :P .. http://it2.php.net/manual/it/function.var-dump.php (http://it2.php.net/manual/it/function.var-dump.php)


Provo a fare un sec la modidica con il contenuto..


OK prova fatta ma nessun risultato.. Che può essere successo? Com'è possibile che non venga eseguito?
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 12:55:26
ma dove l'hai infilato questo plugin?
il plugin è installato ed abilitato?

non basta metterlo nella cartella dei plugin, giusto per essere chiari
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 12:57:59
Lo installo direttamente su joomla 2.5.. Ti mando user e pass in privato ( tanto è un sito test ).. Perchè a questo punto non capisco davvero dove può essere il blocco.. :-[
Principiante si.. ma a sti livelli no uhauhauha ;D
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 12:59:08
non me le mandare
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 13:07:59
Ho già fatto  :) , se non ti è possibile fa nulla.. Non ti preoccupare..
Eventualmente dovesse venirti qualcosa in mente al riguardo.. fammi sapere.. Grazie ancora..
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: simone83 - 14 Feb 2014, 14:43:18
il tuo è un problema di naming
se il plugin si chiama timetoread non puoi salvarlo in una cartella ed un file che si chiamano time_to_read non è la stessa cosa ma doveva stare in timetoread
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 14 Feb 2014, 19:08:46
Quindi dovrei modificare il nome della cartella e dei file dici? O ho capito male?
Titolo: Re:Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..
Inserito da: otto9due - 15 Feb 2014, 13:24:31
Risolto.. trovato l'inghippo.. L'errore che avevo fatto era nel richiamare un metodo all'interno della classe stessa che andava chiamato così..


$parole = $this->contaparole($testo);


e non com'era prima .. $parole = contaparole($testo);

In più c'era anche il problema dei nome perchè ( come mi avevi detto "grazie mille " Il file xml deve avere lo stesso nome del plugin e della cartella in cui e' posizionato il plugin)
Ora funziona..