Arnaud Drieux Posted July 2, 2013 Author Share Posted July 2, 2013 Bonjour à tous Merci encore pour ce module Arnaud1900 c'est possible d'avoir le module modifié ?? Amitiés je suis en train de regarder, parce qu'en fait, il est possible que ça ne fonctionne pas vraiment. Je croyais avoir trouvé… Du coup il enregistre le cookie fais le test et n'affiche rien… Rebonjour à tous non j'ai la version 2.4 car je n'ai pas trouvé la version 7 ou est ce que je peux l'installer car j'en aurai besoin pour l'adpter à mon logiciel pizza . tenez moi au courant merci à vous tous ps je viens de le faire marcher mais j'ai ce code qui s'affiche sur ma page array(1) { [0]=> array(2) { ["code"]=> string(8) "Pizza007" ["name"]=> string(4) "Test" } } de l'aide please Il ya un var_dump qui traine dans le fichier areduction.php. Il suffit juste de le supprimer. Link to comment Share on other sites More sharing options...
ghost4life Posted July 2, 2013 Share Posted July 2, 2013 salut Arnaud, moi je l'ai fais en php pure avec les ip, c'est pas aussi bien qu'avec les coockies mais ça a le mérite de fonctionner, si tu veux voir le code n'hésite pas à demander en revan,che j'ai tjs pas trrouvé quel tpl modifier Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted July 2, 2013 Author Share Posted July 2, 2013 salut Arnaud, moi je l'ai fais en php pure avec les ip, c'est pas aussi bien qu'avec les coockies mais ça a le mérite de fonctionner, si tu veux voir le code n'hésite pas à demander en revan,che j'ai tjs pas trrouvé quel tpl modifier Oui je veux bien voir le code final. Pour ton soucis, en fait le problème ne doit pas se résoudre dans les tpl, mais bel et bien dans le fichier php. Il faut trouver une condition pour que le module soit désactiver si l'url n'est pas xxxxx.com/index. Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted July 2, 2013 Author Share Posted July 2, 2013 (edited) En utilisant la variable $_SERVER : exemple avec ["REQUEST_URI"]=> string(21) "/monsite/index.php" $mavariable = $_SERVER["REQUEST_URI"]; if($mavariable == "/monsite/index.php"){ execute le code sinon rien } Edited July 2, 2013 by arnaud1900 (see edit history) Link to comment Share on other sites More sharing options...
ghost4life Posted July 2, 2013 Share Posted July 2, 2013 ca c'est mon fichier allreduction.tpl [/size] <!-- REDUC MODULE INDEX --> {if $page_name == $host} {if $var_tirage_sort == 0 } <div id="reduction_block"> <div id="glob"> <div id="img"></div> <div id="exit" onclick="exti();"></div> <div id="reduction_info"> {foreach from=$txt item=txte name=txte} <p>{$txte.text_intro}</p> <script type="text/javascript"> var cpt = {$txte.valeur_temps}; </script> <button class="valid" onclick="montenl();decompte();">Jouer</button> </div> <div id="load" onload="decompte();" style="display:none;"><img src="{$modules_dir}/areduction/img/progress.gif"/><p id="Crono"></p></div> <div id="reduction_content" > <p>{$txte.text_second}</p> {foreach from=$reponse item=code name=code} <p class="code">{$code.name}</p> <p>{$txte.text_final}</p> <p class="code">{$code.code} : Notez le pour ne pas le perdre </p></h2> <p>Pour un <img src="images/gift.png" title="cadeau"> supplémentaire, n'oubliez pas de poster le numéro de votre commande sur notre page <a href="https://www.facebook.com/omega.nutrition.france" title="Facebook Omega Nutrition"><img src="images/facebook.png" title="Notre page facebook"></a></p> {/foreach} </div> {/foreach} </div> </div> {else} <!--<div id="reduction_block"> <div id="glob"> <div id="img"></div> <div id="exit" onclick="exti();"></div> <div id="reduction_content" style="display:block"> <p>Vous avez déjà joué, revenez dans 7 jours</p> <p class="code"></p> <p></p> <p class="code"></p></h2> <p>Pour un <img src="images/gift.png" title="cadeau"> supplémentaire, n'oubliez pas de poster le numéro de votre commande sur notre page <a href="https://www.facebook.com/omega.nutrition.france" title="Facebook Omega Nutrition"><img src="images/facebook.png" title="Notre page facebook"></a></p> </div> </div> </div>--> {/if} {/if} et ça c'est le fichier .php <?php class Areduction extends Module { /* @var boolean error */ protected $error = false; public function __construct() { $this->name = 'areduction'; $this->tab = 'Custom Module'; $this->version = '2.5'; $this->author = 'awb-dsgn.com'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Areduction'); $this->description = $this->l('Tirage au hasard d\'un bon de réduction. Pop-up sur l\'accueil'); $this->confirmUninstall = $this->l('Etes-vous sûre de vouloir supprimer areduction ?'); } public function install() { if (!parent::install() OR !$this->registerHook('header') OR !$this->installDB() OR !$this->insertDB()) return false; return true; } public function uninstall() { if (!parent::uninstall() OR !$this->unregisterHook('header') OR !$this->desinstallDB()) return false; return true; } public function installDb() { return (Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'areduction` ( `id_areduc` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `valeur_affichage` INT UNSIGNED NOT NULL, `valeur_temps` INT UNSIGNED NOT NULL, `text_intro` VARCHAR( 128 ) NOT NULL , `text_second` VARCHAR( 128 ) NOT NULL, `text_final` VARCHAR( 128 ) NOT NULL ) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;')); } public function insertDB() { return (Db::getInstance()->execute(' INSERT INTO `'._DB_PREFIX_.'areduction` (`valeur_affichage`,`valeur_temps`,`text_intro`, `text_second`, `text_final` ) VALUES (1, 5, "Jouez pour gagner un bon de réduction", "Félicitation vous avez gagné !", "Voici le code à utiliser")')); } public function desinstallDB() { return (Db::getInstance()->execute('DROP TABLE IF EXISTS`'._DB_PREFIX_.'areduction`')); } public function hookheader($params) { global $cookie, $smarty; // //Récupération du nombre de ligne dans la ps_cart_rule = nombre de bons de réductions // $sql = "SELECT COUNT(*) FROM `"._DB_PREFIX_."cart_rule`"; $nbMax = Db::getInstance()->getValue($sql); $idlangue = $cookie->id_lang; // // si nombre de lignes plus grand que 0 alors on va chercher les bons. // if($nbMax > 0){ $query = "SELECT `code`,`name` FROM `"._DB_PREFIX_."cart_rule` cr LEFT JOIN `"._DB_PREFIX_."cart_rule_lang` crl ON crl.`id_cart_rule` = cr.`id_cart_rule` WHERE crl.`id_lang` = ".$idlangue." AND cr.`active` = 1 ORDER BY RAND( ) LIMIT 1"; $reponse = Db::getInstance()->ExecuteS($query); $sql = "SELECT `valeur_temps`,`text_intro`, `text_second`, `text_final` FROM `"._DB_PREFIX_."areduction`"; $txt = Db::getInstance()->ExecuteS($sql); function afficheTirageAusort() { //Initialisation des variables $ip = $_SERVER["REMOTE_ADDR"]; $date_str = date('d-m-y'); $rep = "ip/"; if (!file_exists($rep)) { fopen($rep, "w+"); } $periode = 1; $i = 0; $date_jeu = 0; //Test de l\'existence du fichier while ($i <= $periode) { list($d,$m,$Y)= explode('-',$date_str); $date2 = Date('d-m-Y', mktime(0, 0, 0, $m, $d + $i, $Y)); $fichier = $ip . '-' .$date2 . '.txt'; if (file_exists($rep . $fichier)) { $var = 1; break 1; } else { fopen($rep . $fichier, 'w+'); $var = 0; } $i++; }; return $var; } $var_tirage_sort = afficheTirageAusort(); //var_dump($var_tirage_sort) ; $smarty->assign(array( 'reponse' => $reponse, 'url' => $_SERVER['REQUEST_URI'], 'host' => $_SERVER['HTTP_HOST'], 'index' => $_SERVER['HTTP_HOST'].'/index.php', 'txt' => $txt, 'var_tirage_sort' => $var_tirage_sort )); $this->smarty->assign('tmp', '6'); // // Ajout de mon css et js // $this->context->controller->addJS($this->_path.'js/reduc.js', 'all'); $this->context->controller->addCSS($this->_path.'css/reduc.css', 'all'); // // On vérifie si on affiche le module pour tout le monde ou pas. // $verif = "SELECT `valeur_affichage` FROM `"._DB_PREFIX_."areduction`"; $verification = Db::getInstance()->ExecuteS($verif); foreach ($verification as $row){ $vFinal = $row['valeur_affichage']; } // //Si on autorise tout le monde à voir le module, on affiche le module // if($vFinal == 1){ return $this->display(__FILE__, 'views/template/hook/allreduction.tpl'); }else{ return $this->display(__FILE__, 'views/template/hook/connecreduction.tpl'); } } } // // Formulaire pour mettre afficher le texte de son choix dans le pop-up // public function getContent() { $output = '<h2>'.$this->displayName.'</h2>'; if (Tools::isSubmit('submitInsert')) { $val = Tools::getValue('val'); $temps = Tools::getValue('temps'); $premier = Tools::getValue('premier'); $second = Tools::getValue('second'); $final = Tools::getValue('final'); if ($val != 0 && $val != 1){ $output .= '<div class="alert error">'.$this->l('Valeur pour "Autoriser les personnes non connectées…": Erreur ').'</div>'; }else{ Db::getInstance()->update('areduction',array( 'valeur_affichage' => (int)$val, 'valeur_temps' => (int)$temps, 'text_intro' => pSQL($premier), 'text_second' => pSQL($second), 'text_final' => pSQL($final) )); $output .= '<div class="conf confirm">'.$this->l('Settings updated').'</div>'; } } return $output.$this->displayForm(); } private function displayForm() { global $cookie; $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(false); $divLangName = 'text¤title'; $recup = "SELECT * FROM `"._DB_PREFIX_."areduction`"; if($result = Db::getInstance()->ExecuteS($recup)) foreach ($result as $f){ $valeurAff = $f['valeur_affichage']; $valeurTmp = $f['valeur_temps']; $textintro = $f['text_intro']; $textsecond = $f['text_second']; $textfinal = $f['text_final']; } $finalput ='<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <fieldset> <label >'.$this->l('Autoriser les personnes non connectées à voir le module :').'</label> <div class="margin-form">'; if ($valeurAff == 1) { $finalput .='<input type="radio" name="val" value="1" checked="checked"/> <label class="t" for="on"><img src="../img/admin/enabled.gif" alt="'.$this->l('Oui').'" title="'.$this->l('Oui').'" /></label> <input type="radio" name="val" value="0"/> <label class="t" for="off"><img src="../img/admin/disabled.gif" alt="'.$this->l('Non').'" title="'.$this->l('Non').'" /></label><br/>'; }else{ $finalput .='<input type="radio" name="val" value="1"/> <label class="t" for="on"><img src="../img/admin/enabled.gif" alt="'.$this->l('Oui').'" title="'.$this->l('Oui').'" /></label> <input type="radio" name="val" value="0" checked="checked"/> <label class="t" for="off"><img src="../img/admin/disabled.gif" alt="'.$this->l('Non').'" title="'.$this->l('Non').'" /></label><br/>'; } $finalput .='</div> <div class="clear pspace"></div> <label for="premier">'.$this->l('Texte d\'accueil :').'</label> <input type="text" name="premier" value="'.$textintro.'"/><br/> <div class="clear pspace"></div> <label for="second">'.$this->l('Texte lorsque la personne a gagné :').'</label> <input type="text" name="second" value="'.$textsecond.'"/><br/> <div class="clear pspace"></div> <label for="final">'.$this->l('Texte placé avant le code de réduction :').'</label> <input type="text" name="final" value="'.$textfinal.'"/><br/> <div class="clear pspace"></div> <label for="temps">'.$this->l('Temps avant affichage du résultat :').'</label> <input type="text" name="temps" value="'.$valeurTmp.'"/><br/> <div class="clear pspace"></div> <div class="margin-form clear"><input type="submit" name="submitInsert"/></div> </fieldset> </form>'; return $finalput; } } ?> bon le soucis c'est qu'il ne s'affiche pas je dois avoir un problème avec smarty, sinon le principe fonctionne bien Link to comment Share on other sites More sharing options...
Soyons Solidaire Posted July 3, 2013 Share Posted July 3, 2013 (edited) Bonjour à tous Merci Arnaud pour la réponse , je suis certain que tu trouveras , Bonne journée Amitiés Edited July 3, 2013 by SMOK KYF (see edit history) Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted July 16, 2013 Author Share Posted July 16, 2013 (edited) Je crois que j'ai trouvé une réponse viable pour en finir ! L'idée serait de créer le cookie avec l'ip lorsque la personne désactive (clique sur la croix) du pop-up ou clique sur jouer. Du coup dans le fichier php, il suffit de vérifier si le cookie existe et si l'ip à l'intérieur est la même que la personne qui visite le site. A cela on peut du coup déterminer, aussi, la durée de vie de ce cookie pour remettre le pop-up en place au bout de X temps. Edited July 16, 2013 by arnaud1900 (see edit history) Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted July 16, 2013 Author Share Posted July 16, 2013 Bon je rame sur la création du cookie, il veut pas le prendre en compte… Dansle fichier php j'ai déclaré une variable IP à envoyer au tpl : $ipServer = $_SERVER["REMOTE_ADDR"]; $this->smarty->assign('ipcookie', $ipServer); Dans le fichier reduc.js j'ai rajouté cette fonction de création de cookie: function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } et dans mon fichier tpl, j'ai modifié la ligne 6 : <script type="text/javascript"> var elcookie = "{$ipcookie}"; </script> <div id="exit" onclick="exti();createCookie('ipcookie',elcookie,7);"></div> mais rien n'y fait, elcookie a bien une valeur correcte, mais le cookie n'est pas créé… je comprend pas. Link to comment Share on other sites More sharing options...
horusse Posted October 20, 2013 Share Posted October 20, 2013 Bonjour, votre module est juste geniale et je voulais le preciser tout d'abord. etant en version 1.4.9 de presta j'ai telecharger la v1.8 de votre module. J'ai neanmoins un probleme car j'ai actuellement plusieur bon de reduction et ils les prend tous pour les faire passer au hasard je souhaiterai pouvoir choisir 1 ou plusieurs bon de reduction mais pas tous... est-ce possible ? herve Link to comment Share on other sites More sharing options...
thierry2 Posted October 20, 2013 Share Posted October 20, 2013 Bonjour Arnaud ,merci pour ton module. A tu trouvé une piste pour que la fenêtre apparait une seule fois. Link to comment Share on other sites More sharing options...
thierry2 Posted October 20, 2013 Share Posted October 20, 2013 Comment faire pour que la fenêtre arrive plus tard 30 sec,quelqu'un a une idée?Merci Link to comment Share on other sites More sharing options...
botmez Posted October 24, 2013 Share Posted October 24, 2013 Bonjour Ca marche pour les version de prestashop 1.3.1 ? Car a linstall cest ok mais après plus d'affichage ! Je suis sur que ca fonctionnerait sil fallait bouger pas grand chose !! mERCI De votre retour Link to comment Share on other sites More sharing options...
Romarici Posted November 22, 2013 Share Posted November 22, 2013 Bonjour, C'est un module efficace d'un point de vue marketing et commercial, une idée pour une future évolution pourrait : - ajouter un formulaire avec un champ email pour recevoir son code promo à la lecture du gain. Dans le genre "Remplissez les champs suivants pour recevoir votre code promo "-30% sur toute la boutique..." par e-mail" Avantages ou inconvénients ? Je suis de mèche à capter un maximum de mail, le plus tôt possible, l'internaute est si versatile. Link to comment Share on other sites More sharing options...
lordbdp Posted November 30, 2014 Share Posted November 30, 2014 (edited) Bonjour, Je viens d'installer la version 2.5 sur PS 1.5.6.2, tout est ok ^^. Je soumet juste quelques modifications à apporter (déjà proposées et nouvelles) : 1* Choix du texte quand le tirage n'est pas gagnant. 2* Sélection des bons pour la loterie. 3* Définition de la durée avant que la popup ne s'affiche à nouveau sur la même iP. 4* Proposer au visiteur de saisir son email pour recevoir son Bon (en réalité il s'inscrirait sur le site en plus) (mais on risque d'avoir un soucis avec le 2* après). 5* Pouvoir proposer des articles (donc il faudrait sélection + qté) en plus des bons de réduction 6* Définition du nombre de tirage avant de gagner un bon spécifique (ou article si 5* développé). Il faudrait pouvoir ajouter autant de ligne de Définition 6* qu'on le souhaite. 7* Télécharger l'image affichée dans la popup pour la remplacer (avec aperçu coté BO). 8* Pouvoir partager sur les principaux réseaux sociaux le fait qu'on a gagné à la loterie. 9* Définir le nombre de gagnants par jour et/ou le nombre de gagnants par bon 10* Ne plus activer la popup quand tout est gagné ou Définir le texte à afficher quand la loterie est finie. Je pense que c'est déjà pas mal pour une V.3 ^^ Edited November 30, 2014 by lordbdp (see edit history) Link to comment Share on other sites More sharing options...
KillerDev Posted December 23, 2014 Share Posted December 23, 2014 quelqu'un aurait la dernière version ? merci Link to comment Share on other sites More sharing options...
lordbdp Posted December 23, 2014 Share Posted December 23, 2014 quelqu'un aurait la dernière version ? merci C'est la 2.5 qui est page 4 Link to comment Share on other sites More sharing options...
lordbdp Posted December 23, 2014 Share Posted December 23, 2014 Pas d'ajouts par rapport à ce que je proposai ? #114 Link to comment Share on other sites More sharing options...
lordbdp Posted December 24, 2014 Share Posted December 24, 2014 Link to comment Share on other sites More sharing options...
Cyrius91 Posted February 21, 2015 Share Posted February 21, 2015 Bonjour, Je cherche à selectionner le code ou les codes qui apparaitront et non pas un code parmis tous ceux qui sont activés? En vous remerciant. Marche impec en 1.4.9 sinon Merci à l'auteur 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