romanosnorky Posted November 18, 2013 Share Posted November 18, 2013 Bonjours à tous(tes), J'utilise prestashop sur 2 boutiques avec des modules gratuits et des payants et globalement j'en suis bien satisfait (mais qui ne pourrait l'être avec une solution aussi puissante et gratuite!!!). J'ai un souci avec 2 modules que j'ai installé: --le module JQuery Nivo Slider v2.0 par Prestashopic.com --le module Block Advertising Home v1.0 par DapurPixel En fait je pense que de vous citer les module sen question n'a pas d'importance mais au cas ou jeles mets quand même si cela peut nous aider. Mon problème c'est que lorsque je change les images dans ces 2 modules (chose que je fais toutes les 2 semaines) elles ne s'actualisent pas chez tout le monde. Même chez moi par exemple. Une fois la modif d'images faites je me connecte à mon site avec Firefox et là pas de prob je vois la dernière version de l'image. Sous chrome par contre il faut que je fasse F5 pour que cela marche. Que faudrait il faire pour forcer le navigateur des clients à aller charger mon image et pas celle enregistré dans leur cache? J'ai essayer de renommer les fichiers mais ca ne marche pas . Pareil j'ai vidé le cache "compil" et "cache" dans smarty.... Merci si cous pouvez m'aiguiller je commence à sécher. Romain Mon site: www.vindartiste.net/degustation-vin (désolé il faut s'inscrire mais il n'y à pas de confirmation) Link to comment Share on other sites More sharing options...
coeos.pro Posted November 18, 2013 Share Posted November 18, 2013 Par exemple pour cette image : son nom est fr2.jpg si vous la supprimez et en remettez une nouvelle, vous "retombez" sur le même nom (fr2.jpg) ? Si vous voulez que je supprime l'image (comme le site est "privé") n'hésitez pas à le dire Link to comment Share on other sites More sharing options...
romanosnorky Posted November 18, 2013 Author Share Posted November 18, 2013 C'est bête je me rends compte que j'ai renommé le fichier avant de l'envoyer sans penser que le module le renomme lui même.... Merci pour la propo mais je ne vois pas comment cela peut régler mon problème: Voici ce que je vois sous firefox (vers.25.0.1) et ce que je vois sous chrome (vers. Version 31.0.1650.57 m) ...... Link to comment Share on other sites More sharing options...
coeos.pro Posted November 18, 2013 Share Posted November 18, 2013 l'image est la même mais le texte change, avec ce module il n'y a pas moyen de mettre du texte avec l'image ? on ne peut mettre que l'image c'est bien ça ? Sinon il faudrait que le module enregistre le nom de votre image au lieu de renommer l'image... comme le nom reste est identique le navigateur internet garde en mémoire la première image. Link to comment Share on other sites More sharing options...
romanosnorky Posted November 18, 2013 Author Share Posted November 18, 2013 Oui seul le texte change. On ne peut pas mettre de texte dans le modue. Seulement une image. Ce que je ne comprends pas c'est pourquoi cela marche bien chez certaines personnes et pas chez d'autres sachant qu'à priori aucune de ces personnes n'a modifié les paramètres de son navigateur. J'ai contacté les crétateurs du modules mais ils sont en azerbaidjan apparament.... Qq aurait une idée? Link to comment Share on other sites More sharing options...
romanosnorky Posted November 19, 2013 Author Share Posted November 19, 2013 En fait ce qu'il faudrait c'est que le module change le nom de l'image à chaque enregistrement. Ca vous parait jouable? Link to comment Share on other sites More sharing options...
romanosnorky Posted November 19, 2013 Author Share Posted November 19, 2013 Bon j'ai trouvé un moyen de contourner le prob mais en modifiant des fichiers. Si quelqu'un à une solution plus propre je suis preneur. Pour ceux que ca pourrait intéressé voici les manips. --Dans le module "slideric" modifier le fichier "frlinks.xml" en changeant le nom des images. Par exemple "fr0.jpg" devient "image1.jpg" --Renommer directement dans le dossier du module le nom de l'image de la même manière (on renome "fr0.jpg" en "image1.jpg") Ca à marché direct sur chrome (il faut tout même changer de page et revenir). Link to comment Share on other sites More sharing options...
Takio Posted November 26, 2013 Share Posted November 26, 2013 Bonjour La solution "propre" est extrèmement simple: Il vous suffit de: vider* le cache Smarty de Prestashop (cache/smarty/cache) vider* les fichiers "Compile" de Prestashop (cache/smarty/compile) vider le cache de votre navigateur (CTRL+MAJ+DEL) faire un petit nettoyage* du répertoire "img/tmp" ne devrait pas faire de tort. (*) pour les points 1,2 et 4, ne conserver que le fichier "index.php" De cette manière, les nouvelles bannières peuvent être uploadées par FTP en gardant le même nom (qui est un numéro chez NivoSlider) Ciao Takio Link to comment Share on other sites More sharing options...
coeos.pro Posted November 26, 2013 Share Posted November 26, 2013 désolé Takio mais ta solution ne correspond à ce problème, il souhaite changer régulièrement les images du slider mais les clients ne voient pas changer ces images car elles restent dans la mémoire de leur navigateur. Et il parait peu envisageable de demander à tous les clients de vider leur cache navigateur quand ils viennent sur la boutique. Link to comment Share on other sites More sharing options...
claudie Posted November 26, 2013 Share Posted November 26, 2013 Par exemple pour cette image : son nom est fr2.jpg si vous la supprimez et en remettez une nouvelle, vous "retombez" sur le même nom (fr2.jpg) ? Si vous voulez que je supprime l'image (comme le site est "privé") n'hésitez pas à le dire Mince un concurrent!!!!... je parle du vin Je viens d'avoir un problème un peu similaire. Impossible de modifier mon image de backroung. Après plusieurs tentatives infructueuses. et différents testes, il c'est avéré que sur safari tout fonctionne normalement et que sur chrome il aura fallu 4 jours... Impossible de vérifier avec Firefox, problème de barre de navigation (Ama... c'est incrusté et c'est difficile de l'enlever) Bien que la conclusion soit rapide, il s'agirai du navigateur... cdt Link to comment Share on other sites More sharing options...
romanosnorky Posted November 26, 2013 Author Share Posted November 26, 2013 Oui il s'agit bien comme problème de la manière dont le navigateur se comporte sur un site déjà visité au préalable. Cela va dépendre des réglages de ce navigateur mais il faut trouver une solution pour imposer au navigateur d'aller chercher la nouvelle image. Pour l'instant à part l'actualisation forcée (méthode risquée j'ai pu le constater) ou changer à chaque fois le nom des images (et encore parfois cela ne marche pas....) je n'ai pas de pistes.... C'est un problème si basique et pourtant si compliqué apparament je trouve ca fou!!!!! J'ai aussi essayer d'inclure (dans mes pages html, pas la boutique) un code pour dire au navigateur de ne pas enregistrer la page mais cela ne semble pas fonctionner... Link to comment Share on other sites More sharing options...
coeos.pro Posted November 26, 2013 Share Posted November 26, 2013 C'est un problème si basique et pourtant si compliqué apparament je trouve ca fou!!!!! oui et le pire, c'est que ce problème pourrait être réglé très facilement, il faudrait juste que le module enregistre le nom de l'image au lieu de la renommer en 1.jpg 2.jpg... Link to comment Share on other sites More sharing options...
claudie Posted November 26, 2013 Share Posted November 26, 2013 Et au niveau de l'hébergement.... modification du serveur qui garderait l'ancien ip !!!! cdt Link to comment Share on other sites More sharing options...
coeos.pro Posted November 26, 2013 Share Posted November 26, 2013 le problème n'est pas au niveau hébergeur, mais c'est l'image qui reste dans la mémoire du navigateur internet. Link to comment Share on other sites More sharing options...
Mediacom87 Posted November 26, 2013 Share Posted November 26, 2013 Bonjour, la technique à utiliser pour voire afficher toujours la dernière version de l'image est assez simple mais tout fois obligé à modifier le module en question. Dans les anciennes versions de Presstashop, le logo était codé ainsi pour toujours avoir la dernière version ainsi au lieu d'appeler l'image dans le tpl ainsi : <img class="logo" src="{$img_ps_dir}logo.jpg" alt="{$shop_name|escape:'htmlall':'UTF-8'}" {if $logo_image_width}width="{$logo_image_width}"{/if} {if $logo_image_height}height="{$logo_image_height}" {/if} /> Prestashop a décidé de rajouter un timestamp : ?{$img_update_time} <img class="logo" src="{$img_ps_dir}logo.jpg?{$img_update_time}" alt="{$shop_name|escape:'htmlall':'UTF-8'}" {if $logo_image_width}width="{$logo_image_width}"{/if} {if $logo_image_height}height="{$logo_image_height}" {/if} /> Ce qui permet de rappeler toujours une image avec la bonne version. Le mieux est de récupérer l'horodatage du fichier lors de l'appel de son affichage pour mettre toujours le même timestamp et ainsi conserver la mise en cache si l'image n'est pas modifiée. Link to comment Share on other sites More sharing options...
romanosnorky Posted November 28, 2013 Author Share Posted November 28, 2013 Bonjour et merci de chercher à m'aider mais c'est un peut trop flou pour un non-devellopeur comme moi!!! Comme mon prob vient d'un module je ne parlerais que de fichiers provenant de ce module. Désolé si c'est un peut long mais j'ai mis tous les fichiers que je pense avoir un rapport avec tout ca (mai speut être que j'en oublie!!!) Voici le code du .tpl: {literal}<script type="text/javascript" src="{/literal}{$this_path}{literal}js/jquery.nivo.slider.pack.js"></script><link rel="stylesheet" type="text/css" href="{/literal}{$this_path}{literal}css/nivo-slider.css" /> <!-- SLIDER ---------------------------------------------------------------------------------------------------------------------------------------><div id="slide_holder"> <div id="slider"> {/literal} {foreach from=$xml->link item=home_link name=links} {literal} <a href='{/literal}{$home_link->url}{literal}'><img src='{/literal}{$this_path}{$home_link->img}{literal}'alt="" /></a> {/literal} {/foreach} {literal} </div></div> <script type="text/javascript">$(window).load(function() { $('#slider').nivoSlider({ effect:'random', //Specify sets like: 'fold,fade,sliceDown' slices:9, animSpeed:500, //Slide transition speed pauseTime:7000, startSlide:0, //Set starting Slide (0 index) directionNav:true, //Next & Prev directionNavHide:true, //Only show on hover controlNav:true, //1,2,3... controlNavThumbs:false, //Use thumbnails for Control Nav controlNavThumbsFromRel:false, //Use image rel for thumbs controlNavThumbsSearch: '.jpg', //Replace this with... controlNavThumbsReplace: '_thumb.jpg', //...this in thumb Image src keyboardNav:true, //Use left & right arrows pauseOnHover:true, //Stop animation while hovering manualAdvance:false, //Force manual transitions captionOpacity:0.8, //Universal caption opacity beforeChange: function(){}, afterChange: function(){}, slideshowEnd: function(){} //Triggers after all slides have been shown });});</script> <!-- SLIDER --------------------------------------------------------------------------------------------------------------------------------------->{/literal} et le code du .xml qui est appelé aussi: <?xml version='1.0' encoding='utf-8' ?><links> <link> <url>http://www.vindartiste.net/degustation-vin/4-vente-de-vin-en-cours</url> <img>fr0.jpg</img> </link> <link> <url>http://www.vindartiste.net/degustation-vin/4-vente-de-vin-en-cours</url> <img>fr1.jpg</img> </link> <link> <url>http://www.vindartiste.net/degustation-vin/5-cave-vin-d-artiste</url> <img>fr2.jpg</img> </link> <link> <url>http://www.vindartiste.net/degustation-vin/content/6-ecole</url> <img>fr3.jpg</img> </link></links> le code du fichier frontcontroller.php: <?php/** 2007-2011 PrestaShop** NOTICE OF LICENSE** This source file is subject to the Open Software License (OSL 3.0)* that is bundled with this package in the file LICENSE.txt.* It is also available through the world-wide-web at this URL:* http://opensource.org/licenses/osl-3.0.php* If you did not receive a copy of the license and are unable to* obtain it through the world-wide-web, please send an email* to [email protected] so we can send you a copy immediately.** DISCLAIMER** Do not edit or add to this file if you wish to upgrade PrestaShop to newer* versions in the future. If you wish to customize PrestaShop for your* needs please refer to http://www.prestashop.com for more information.** @author PrestaShop SA <[email protected]>* @copyright 2007-2011 PrestaShop SA* @version Release: $Revision: 1.4 $* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)* International Registered Trademark & Property of PrestaShop SA*/class FrontController extends FrontControllerCore{ public function displayHeader() { global $css_files, $js_files; if (!self::$initialized) $this->init(); // P3P Policies (http://www.w3.org/TR/2002/REC-P3P-20020416/#compact_policies) header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'); /* Hooks are volontary out the initialize array (need those variables already assigned) */ self::$smarty->assign(array( 'time' => time(), 'static_token' => Tools::getToken(false), 'token' => Tools::getToken(), 'logo_image_width' => Configuration::get('SHOP_LOGO_WIDTH'), 'logo_image_height' => Configuration::get('SHOP_LOGO_HEIGHT'), 'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_, 'content_only' => (int)(Tools::getValue('content_only')) )); self::$smarty->assign(array( 'HOOK_HEADER' => Module::hookExec('header'), 'HOOK_TOP' => Module::hookExec('top'), 'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'), 'HOOK_FILTERBY_CENTER' => Module::hookExec('filterbyCenter'), 'HOOK_SLIDER' => Module::hookExec('slider') )); if ((Configuration::get('PS_CSS_THEME_CACHE') OR Configuration::get('PS_JS_THEME_CACHE')) AND is_writable(_PS_THEME_DIR_.'cache')) { // CSS compressor management if (Configuration::get('PS_CSS_THEME_CACHE')) Tools::cccCss(); //JS compressor management if (Configuration::get('PS_JS_THEME_CACHE')) Tools::cccJs(); } self::$smarty->assign('css_files', $css_files); self::$smarty->assign('js_files', array_unique($js_files)); self::$smarty->display(_PS_THEME_DIR_.'header.tpl'); }} et celui du slideric.php <?php/** Modulo JQuerySlider Galery **//** www.tiendasvirtuales.com.ve **/class slideric extends Module{ /** @var max image size */ protected $maxImageSize = 307200; function __construct() { $this->name = 'slideric'; $this->tab = 'front_office_features'; $this->version = '2.0'; $this->author = 'Prestashopic.com'; /* The parent construct is required for translations */ parent::__construct(); $this->page = basename(__FILE__, '.php'); $this->displayName = $this->l('JQuery Nivo Slider'); $this->description = $this->l('Slide the images with choosen languages | Prestashopic.com'); } function install() { if (!parent::install() || !$this->_createBackup()) return false; $hooked = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'hook` WHERE name = "slider"'); if (!is_array($hooked) || sizeof($hooked) == 0) Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook` ( `id_hook` ,`name` ,`title` ,`description` ,`position`) VALUES (NULL , "slider", "sliderHome", "slider hompage", "1");'); if (!$this->registerHook('slider') ) return false; return true; }private function _createBackup() { @copy(_PS_MODULE_DIR_ . $this->name . '/FrontController.php', _PS_ROOT_DIR_ . '/override/classes/FrontController.php'); return true; } function putContent($xml_data, $key, $field) { $field = htmlspecialchars($field); if (!$field) return 0; return ("\n".' <'.$key.'>'.$field.'</'.$key.'>'); } function getContent() { global $cookie; /* Languages preliminaries */ $defaultLanguage = intval(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(); $iso = Language::getIsoById($defaultLanguage); $isoUser = Language::getIsoById(intval($cookie->id_lang)); /* display the module name */ $this->_html = '<h2>'.$this->displayName.' '.$this->version.'</h2>'; /* update the editorial xml */ if (isset($_POST['submitUpdate'])) { // Generate new XML data $newXml = '<?xml version=\'1.0\' encoding=\'utf-8\' ?>'."\n"; $newXml .= '<links>'."\n"; $i = 0; foreach ($_POST['link'] as $link) { $newXml .= ' <link>'; foreach ($link AS $key => $field) { if ($line = $this->putContent($newXml, $key, $field)) $newXml .= $line; } /* upload the image */ if (isset($_FILES['link_'.$i.'_img']) AND isset($_FILES['link_'.$i.'_img']['tmp_name']) AND !empty($_FILES['link_'.$i.'_img']['tmp_name'])) { Configuration::set('PS_IMAGE_GENERATION_METHOD', 1); if ($error = checkImage($_FILES['link_'.$i.'_img'], $this->maxImageSize)) $this->_html .= $error; elseif (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($_FILES['link_'.$i.'_img']['tmp_name'], $tmpName)) return false; elseif (!imageResize($tmpName, dirname(__FILE__).'/'.$isoUser.$i.'.jpg')) $this->_html .= $this->displayError($this->l('An error occurred during the image upload.')); unlink($tmpName); } if ($line = $this->putContent($newXml, 'img', $isoUser.$i.'.jpg')) $newXml .= $line; $newXml .= "\n".' </link>'."\n"; $i++; } $newXml .= '</links>'."\n"; /* write it into the editorial xml file */ if ($fd = @fopen(dirname(__FILE__).'/'.$isoUser.'links.xml', 'w')) { if (!@fwrite($fd, $newXml)) $this->_html .= $this->displayError($this->l('Unable to write to the editor file.')); if (!@fclose($fd)) $this->_html .= $this->displayError($this->l('Can\'t close the editor file.')); } else $this->_html .= $this->displayError($this->l('Unable to update the editor file.<br />Please check the editor file\'s writing permissions.')); } /* display the editorial's form */ $this->_displayForm(); return $this->_html; } private function _displayForm() { global $cookie; /* Languages preliminaries */ $defaultLanguage = intval(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(); $iso = Language::getIsoById($defaultLanguage); $isoUser = Language::getIsoById(intval($cookie->id_lang)); /* xml loading */ $xml = false; if (file_exists(dirname(__FILE__).'/'.$isoUser.'links.xml')) if (!$xml = @simplexml_load_file(dirname(__FILE__).'/'.$isoUser.'links.xml')) $this->_html .= $this->displayError($this->l('Your links file is empty.')); $this->_html .= '<br /> <form method="post" action="'.$_SERVER['REQUEST_URI'].'" enctype="multipart/form-data"> <fieldset style="width: 900px;"> <legend><img src="'.$this->_path.'logo.gif" alt="" title="" /> '.$this->displayName.'</legend>'; $i = 0; foreach ($xml->link as $link) { $divLangName = 'title'.$i.'¤cpara'.$i; $this->_html .= '<h4>'.$this->l('Slider #').$i.'</h4>'; $this->_html .= '<div class="clear"></div>'; $this->_html .= ' <fieldset style="width:870px"> <h5><label>'.$this->l('Image Size (50%)').'</label></h5> <div class="margin-form"> <img src="'.$this->_path.$isoUser.$i.'.jpg" alt="" title="" style="width:50%; height:50%;" /><br /> <input type="file" name="link_'.$i.'_img" /> </div> <h5><label>'.$this->l('URL').'</label></h5> <div class="margin-form"> <input type="text" name="link['.$i.']" size="64" value="'.($xml ? stripslashes(htmlspecialchars($xml->link[$i]->url)) : '').'" /> </div> </fieldset>'; $i++; } $this->_html .= ' <div class="margin-form clear"> <div class="clear pspace"></div> <div class="margin-form"> <input type="submit" name="submitUpdate" value="'.$this->l('Save').'" class="button" /> </div> </div> </fieldset> </form>'; } function hookslider($params) { global $cookie; /* Languages preliminaries */ $defaultLanguage = intval(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(); $iso = Language::getIsoById($defaultLanguage); $isoUser = Language::getIsoById(intval($cookie->id_lang)); if (file_exists(dirname(__FILE__).'/'.$isoUser.'links.xml')) if ($xml = simplexml_load_file(dirname(__FILE__).'/'.$isoUser.'links.xml')) { global $cookie, $smarty; $smarty->assign(array( 'xml' => $xml, 'this_path' => $this->_path )); return $this->display(__FILE__, 'slideric.tpl'); } return false; } }?> Qu'est ce que je devrais modifier à votre avis? Link to comment Share on other sites More sharing options...
elky Posted July 1, 2014 Share Posted July 1, 2014 Bonjour, Quelqu'un a trouvé la solution, j'ai le même souci avec le module NivoSlider ? Cdt Link to comment Share on other sites More sharing options...
romanosnorky Posted July 1, 2014 Author Share Posted July 1, 2014 Salut. Comme solution j'ai fini par utiliser la "technique" suivante. C'est pas l'idéal mais cela fonctionne: -uploader dans le répertoire du module slideric la ou les nouvelles images avec un nom différent de la foie précédente. -Modifier le fichier xml contenant les liens (frlinks.xml dans mon cas) en changeant le nom des images entre les balises <img> avec celui des fichiers précédament uploadé. Comme les noms sont différents la navigateur sera obligé d'aller chercher les nouvelles images. Du coup je ne passe plus par le BO pour changer les images puisque je le fais en FTP pour l'upload + la modif du "code" du fichier XML. J'éspère que ca t'aidera. Link to comment Share on other sites More sharing options...
elky Posted July 3, 2014 Share Posted July 3, 2014 Merci pour ta réponse romanosnorky, C'est ce que j'ai fait aussi, fastidieux mais au moins on est sûr que nos clients voient la bonne image. Link to comment Share on other sites More sharing options...
Recommended Posts