Back to top

Autore Topic: [RISOLTO]Mio plugin non funziona, ecco il codice.. Perchè? Qualche ipotesi..  (Letto 7949 volte)

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo

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 );
 }
}
?>
« Ultima modifica: 16 Feb 2014, 21:08:13 da otto9due »
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
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)


« Ultima modifica: 14 Feb 2014, 08:29:19 da otto9due »
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
hai scritto male il nome della classe

plgplgContentTimeToRead
metti
 
PlgContentTimetoread
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
Niente non va neanche così.. Anche se qui.. 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]
« Ultima modifica: 14 Feb 2014, 12:16:32 da otto9due »
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
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.
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
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..
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
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

BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
Sisi mi sn andato a documentare  :P .. 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?
« Ultima modifica: 14 Feb 2014, 12:48:48 da otto9due »
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
ma dove l'hai infilato questo plugin?
il plugin è installato ed abilitato?

non basta metterlo nella cartella dei plugin, giusto per essere chiari
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
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
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
non me le mandare
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
Ho già fatto  :) , se non ti è possibile fa nulla.. Non ti preoccupare..
Eventualmente dovesse venirti qualcosa in mente al riguardo.. fammi sapere.. Grazie ancora..
« Ultima modifica: 14 Feb 2014, 13:51:29 da otto9due »
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
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
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
Quindi dovrei modificare il nome della cartella e dei file dici? O ho capito male?
Fai agli Altri quello che desidereresti fosse fatto a TE!!

Offline otto9due

  • Appassionato
  • ***
  • Post: 689
  • Sesso: Maschio
  • Quello che semini raccogli!!
    • Mostra profilo
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..
« Ultima modifica: 15 Feb 2014, 13:55:30 da otto9due »
Fai agli Altri quello che desidereresti fosse fatto a TE!!

 



Web Design Bolzano Kreatif