D.Fenstec Posted June 30, 2014 Share Posted June 30, 2014 Buongiorno a tuttiSto cercando un metodo per aggiungere un Disclaimer a determinate pagine/categorie CMS.In poche parole, quando un utente (registrato o meno) visita queste categorie/pagine per la prima volta, deve apparire un popup in mezzo alla pagina, oscurando lo sfondo ad esempio, in cui c'è scritto "Stai entrando in un'area riservata ecc" con due pulsanti "Accetto" e "Non accetto".Una prima idea era quella di creare un cookie nel caso in cui l'utente accettasse di entrare nell'area riservata (la durata è da decidere, ma penso non ci siano problemi nel modificarla).Se invece l'utente non accetta viene reindirizzato alla home page.Se avete altre idee/metodi, ben vengano, io ho pensato ai cookie dato che di solito hanno anche questo scopo.Ho cercato in giro ma non ho trovato niente di simile, il massimo che ho trovato è stata la modifica di un paio di file, che però riguardavano le categorie dei prodotti, non le pagine cms.Utilizzo Prestashop 1.6.Grazie in anticipo Link to comment Share on other sites More sharing options...
D.Fenstec Posted July 10, 2014 Author Share Posted July 10, 2014 (edited) Ok ho trovato una soluzione che potrebbe andare bene, la posto nel caso in cui a qualcuno servisse.In poche parole le seguenti modifiche permettono di far apparire un pop-up (Fancybox) con del testo a nostra scelta, e due bottoni per accettare o non accettare. Nel caso in cui l'utente accetti viene creato un cookie della durata di 1 giorno (modificabile), in modo che non venga più richiesto di accettare. Se l'utente non accetta viene rimandato alla pagina precedentemente visitata.Modifica del file /controllers/front/CmsController.phpCercate la funzione setMedia() (nel mio file è alla riga 84) e aggiungete all'interno della funzione, in fondo (quindi prima di chiudere la parentesi graffa) il seguente codice: $this->addCSS(_PS_CSS_DIR_.'jquery.fancybox.css', 'screen'); $this->addJqueryPlugin(array('fancybox', 'idTabs', 'scrollTo', 'serialScroll')); Dovrebbe diventare una cosa simile a questa: public function setMedia() { parent::setMedia(); if ($this->assignCase == 1) $this->addJS(_THEME_JS_DIR_.'cms.js'); $this->addCSS(_THEME_CSS_DIR_.'cms.css'); $this->addCSS(_PS_CSS_DIR_.'jquery.fancybox.css', 'screen'); $this->addJqueryPlugin(array('fancybox', 'idTabs', 'scrollTo', 'serialScroll')); } In questo modo verrà aggiunto il plugin Fancybox (per il pop-up del disclaimer) alle pagine CMS.Ora andate a modificare il file header.tpl del vostro tema, solitamente si trova in /themes/default-bootstrap/header.tpl (varia in base al vostro tema).Subito dopo l'apertura del tag <head> inserite questa stringa: <script src="{$base_dir}js/jquery/plugins/jquery.cooki-plugin.js"></script> ATTENZIONE: questa stringa, trovata su internet, conteneva la parola jquery.cookie-plugin.js però mentre controllavo l'esistenza del file ho notato che nel nome jquery.cooki-plugin.js (senza la e di cookie). Controllate voi qual è il nome del vostro file.Successivamente, sempre all'interno del file header.tpl, aggiungete il seguente codice subito dopo l'apertura del tag <body> {if $cms->id == 19 || $cms->id == 20 || $cms->id == 21 || $cms_category->id == 3 || $cms_category->id == 7 || $cms_category->id == 9} <script language="javascript"> {literal} $(document).ready( function() { var handle = $.cookie("cookieDisclaimer"); if (handle != "accetto") { $.fancybox( $("#hiddenModalContent").html(), { 'padding':30, 'closeBtn':false, 'openEffect':'elastic', 'closeEffect':'elastic', 'openEasing':'swing', 'closeEasing':'swing', 'helpers': { overlay: { closeClick: false, css: { 'background' : 'rgba(0, 0, 0, 0.95)' } } } } ); } } ); {/literal} </script> <div id="hiddenModalContent" style="display:none"> <center> <h2> <strong>Attenzione!</strong> Contenuto riservato </h2> <p> Le pagine all'interno di tutta la categoria <br /> sono riservate. </p> <br /> <p>*Nome sito/azienda* non si assume alcuna responsabilità.</p> <br /> <strong>Vuoi aprire questa pagina?</strong> <br /><br /> <input type="button" onClick="$.fancybox.close();createCookie()" value="Sì, Accetto"> <input type="button" onClick="history.go(-1);" value="No, Non accetto"> </center> </div> <script language="javascript"> // script cookie function createCookie() { $.cookie("cookieDisclaimer", "accetto", { expires: 1 }); } </script> {/if} Nella prima riga, all'interno dell'IF, inseriamo gli ID delle pagine e delle categorie CMS in cui vogliamo che appaia il Disclaimer.expires: 1 è la durata del cookie (1 giorno)'padding':30, 'closeBtn':false, 'openEffect':'elastic' ecc sono delle opzioni configurabili per Fancybox (guardare la documentazione per la lista completa).Avendo trovato questo pezzo di codice per una versione più vecchia di Fancybox, alcune di queste opzioni non funzionano e purtroppo non ho avuto tempo di controllare quali siano corrette e quali no.Spero sia d'aiuto per altri. Edited July 10, 2014 by D.Fenstec (see edit history) Link to comment Share on other sites More sharing options...
raffaelema Posted December 30, 2014 Share Posted December 30, 2014 Salve, molto utile la guida e funziona perfettamente ho solo una domanda, vorrei che la disclaimer partisse anche quando si apri il sito nella home page. e fattibile? Grazie Raffaele Link to comment Share on other sites More sharing options...
D.Fenstec Posted January 7, 2015 Author Share Posted January 7, 2015 Salve, molto utile la guida e funziona perfettamente ho solo una domanda, vorrei che la disclaimer partisse anche quando si apri il sito nella home page. e fattibile? Grazie Raffaele Salve, scusi per il ritardo Al momento non ho il codice disponibile, e nemmeno il sito. Comunque se il tuo scopo è quello di aggiungere il disclaimer anche nella home-page, dovrebbe essere possibile "giocando" con il codice che va inserito nel file header.tpl. Come si può vedere, l'ultimo pezzo di codice che ho inserito (quello "lungo" per intenderci) viene eseguito solo se l'ID della pagina o della categoria è presente all'interno dell'if (la prima riga, che in questo caso comprende le pagine/categorie con ID 19, 20, 21, 3, 7 e 9). Ora non so se anche l'home page ha un ID o qualcosa di simile per identificare la pagina.. se ce l'ha basta aggiungerlo dentro l'if (con una ricerca su google si dovrebbe capire se ce l'ha) In alternativa togliendo l'if (quindi la prima e ultima riga del codice), il disclaimer verrà visualizzato in ogni pagina del sito. Non so se può essere una soluzione per quello che ti serve. Link to comment Share on other sites More sharing options...
R4istlin Posted March 6, 2015 Share Posted March 6, 2015 Riesumo il post in quanto dovrei fare esattamente la stessa cosa (accetta/non accetta o entra/esci), ma precisamente avrei bisogno che apparisse solo ed esclusivamente quando si accede al secondo negozio configurato (www.miosito.com/negozio2) Qualcuno può consigliarmi quali modifiche al codice bisogna fare per poter ottenere ciò? Grazie Link to comment Share on other sites More sharing options...
juri c. Posted March 16, 2015 Share Posted March 16, 2015 è ancora funzionante questa modifica? se volessi far apparire un'immagine con i due tasti accetta e esci come dovrei fare? Link to comment Share on other sites More sharing options...
Novella85 Posted March 8, 2016 Share Posted March 8, 2016 Ciao,anche io uso Prestashop 1.6,precisamente 1.6.1.3 però il codice non mi funziona!Ho un template diverso da quello di default e poi ho notato che Dreamweaver mi segnala un errore all'altezza di "{/literal}". Può essere questo il problema? Inoltre ho controllato il file "jquery.cooki-plugin.js" ed anche il mio è senza "e".Qualcuno può aiutarmi a capire perchè non funziona? Grazie! Link to comment Share on other sites More sharing options...
otidnab Posted April 11, 2016 Share Posted April 11, 2016 Ciao....mi rivolgo in particolare a NOVELLA85......anche io, passato a prestashop 1.6, non visualizzavo piu il disclaimer. Ho trovato un commento sul sito da cui avevo preso il codice x il disclaimer (http://zod.it/it/blog/prestashop-avviso-disclaimer-per-foto-erotiche.html) ho eseguito le operazioni descritte e il disclaimer e ricomparso, spero possa esservi utile "Risposta di Marco Damian Questo errore Smarty è strano, non so di preciso da cosa dipenda, però so che tra versioni diverse di Smarty ci sono delle incompatibilità, quindi problemi in template pensati per versioni di Prestashop/Smarty differenti (sono cose cmq abbastanza rare). Propongo un fix, che è più che altro un workaround: apri il file tools/smarty/smarty.class.phpModifica la seguente variabile da true a false. public $inheritance_merge_compiled_includes = false; Poi cancella il file "cache/class_index.php" (perché deve venire rigenerato)." Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now