Back to top

Autore Topic: Una mano con uno script  (Letto 2322 volte)

Offline giggioman00

  • Appassionato
  • ***
  • Post: 293
    • Mostra profilo
Una mano con uno script
« il: 18 Dic 2015, 17:53:51 »
Salve, sto modificando la pagina di un componente per renderlo più adatto alle mie esigente.

In una pagina del componente ho aggiunto una funzione in php.

Il mio problema è che la funzione funziona, tuttavia smette di funzionare se in joomla abilito la cache.

Volevo chiedere: Che script devo usare per fare in modo che solo e soltano in quella funzione aggiuntiva, la cache non abbia "effetto"?

Offline $Red

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 5351
  • "Bastard Inside"
    • Mostra profilo
Re:Una mano con uno script
« Risposta #1 il: 18 Dic 2015, 19:21:54 »
Ciao, non ci capisco molto di queste cose, diciamo pure niente  ;D , ma puoi provare ad inserire il codice, se non deve essere integrato con il resto del codice della pagina, in un modulo html e gli disabiliti la cache. O puoi vedere se il plugin CacheControl ti puo essere utile
« Ultima modifica: 18 Dic 2015, 19:30:51 da $Red »

Offline giggioman00

  • Appassionato
  • ***
  • Post: 293
    • Mostra profilo
Re:Una mano con uno script
« Risposta #2 il: 18 Dic 2015, 19:59:08 »
purtroppo è un codice in php...

se lo metto in un modulo html non funziona...

Immagino ci siano plugin che permettono l'inserimento di php da pannello di controllo ma non mi sembra una grande idea dal punto di vista della sicurezza... quindi preferirei fare tutto a mano

Offline $Red

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 5351
  • "Bastard Inside"
    • Mostra profilo
Re:Una mano con uno script
« Risposta #3 il: 19 Dic 2015, 10:16:24 »
per inserirlo in un modulo html disattiva l'editor da configurazione globale inserisci il codice e dovrebbe eseguirlo senza problemi, altrimenti puoi usare sourcerer una volta installato sotto l'editor trovi il tasto inserisci codice, vicino quelli immagine/leggi tutto/ecc.., una volta cliccato ti si apre la finestra per inserire il tuo codice lo inserisci tra i tag source {source}qui_il_tuo_codice{/source} eliminando la parte guida e il codice verra eseguito correttamente in frontend

Offline rezor

  • Global Moderator
  • Appassionato
  • ********
  • Post: 278
  • Sesso: Maschio
  • If you think education is expensive, try ignorance
    • Mostra profilo
Re:Una mano con uno script
« Risposta #4 il: 21 Dic 2015, 10:35:24 »
Ciao,

se usi la cache di pagina, è necessario che tu aggiunga un parametro che cambierai di volta in volta (il solito "&random=..." va bene)  ai parametri di cache del componente: Nella funzione display() del controller devi modificare i $safeUrlParams: in questo caso ho una app su smartphone che passa le coordinate a Joomla, e non voglio cache:

Codice: [Seleziona]
   
public function display($cachable = false, $urlparams = false)
    {
        $app = JFactory::getApplication();
        $user = JFactory::getUser();
        $cachable = $user->guest; // cache solo per gli ospiti, a tua discrezione ovviamente
       
       
        $safeurlparams = array('catid'=>'INT',
                 'id'=>'INT',
                 'limit'=>'UINT',
                 'limitstart'=>'UINT',
                 'filter_country'=>'CMD',
                 'filter_province'=>'CMD',
                 'sort'=>'STRING', // can be sort|updated
                 'lat'=>'FLOAT',
                 'lng'=>'FLOAT',
                 'lang'=>'CMD',
                 'Itemid'=>'INT');
       
        parent::display($cachable, $safeurlparams);
       
        return $this;
    }

Però tu dici che hai modificato solo la vista di un componente esistente; se non vuoi esser legato mani e piedi per il resto della tua vita a manutenere modifiche all'interno del controller.php (che verrà sovrascritto ogni volta che aggiorni il componente), ti consiglio di crearti un task dedicato (quindi ti crei un tuo nuovo controller all'interno del componente), così almeno non hai costi di manutenzione, ad esempio controller/miocontroller.php che poi invocherai dal frontend con &task=miocontroller.display ; oppure ti scrivi un mini-plugin di sistema che intercetta la chiamata (occhio a limitarlo nell'esecuzione, un plugin di sistema scritto male ti può mettere in ginocchio il sito perché viene invocato ad ogni chiamata).
Architetto e Sviluppatore Senior, ho realizzato oltre 150 siti e portali Joomla, una mezza dozzina di estensioni sul JED e oltre 100 estensioni custom. Pubblico su fasterjoomla.com, e contribuisco su stackoverflow, joomla.org e pasqualoni.it
https://www.fasterjoomla.com/logo.png

Offline giggioman00

  • Appassionato
  • ***
  • Post: 293
    • Mostra profilo
Re:Una mano con uno script
« Risposta #5 il: 22 Dic 2015, 18:33:34 »
Scusa ma non ho capito molto bene.

Lo script all'interno di una pagina di componente che vorrei far in modo che non venisse messo sotto cache è questo:

Codice: [Seleziona]
<?php   
    $db 
JFactory::getDBO();
    if(!
$db)
    {
        echo 
"";
    }
    elseif(!
$htmlVideoDetails->id)
    {
        echo 
"";
    }
    else
    {
        
$query "UPDATE __hdflv_upload SET times_viewed=1+times_viewed WHERE id={$htmlVideoDetails->id}";
        
$db->setQuery($query);
        if(!
$db->query())
        {
            echo 
"";
        }
        else
        {
            echo 
"";
        }
    }

?>

Cosa dovrei fare nello specifico?

Offline rezor

  • Global Moderator
  • Appassionato
  • ********
  • Post: 278
  • Sesso: Maschio
  • If you think education is expensive, try ignorance
    • Mostra profilo
Re:Una mano con uno script
« Risposta #6 il: 22 Dic 2015, 19:01:38 »
Sei in una vista, quindi temo sia troppo tardi: è nel controller che imposti i "safeurlparams" ovvero quei parametri che andranno a concorrere alla creazione della chiave di cache; se li imposti nella vista forse può funzionare, in fin dei conti la scrittura in cache avviene dopo il componente, però dubito fortemente che si possa; se invece ti fai un tuo controller, sempre all'interno dello stesso componente, ti puoi impostare questi parametri e risolvi il problema nella maniera facile.

Ricorda: quando c'è un modo ufficiale per fare le cose, anche se richiede scrivere qualche file in più, ti assicuri la longevità della soluzione; se trovi un "workaround", ovvero aggiri il problema in qualche modo, magari al prossimo aggiornamento non va più.  E comunque devi fare tanta più fatica...
Architetto e Sviluppatore Senior, ho realizzato oltre 150 siti e portali Joomla, una mezza dozzina di estensioni sul JED e oltre 100 estensioni custom. Pubblico su fasterjoomla.com, e contribuisco su stackoverflow, joomla.org e pasqualoni.it
https://www.fasterjoomla.com/logo.png

 



Web Design Bolzano Kreatif