Arnaud Drieux Posted December 5, 2012 Share Posted December 5, 2012 (edited) Bonjour à toutes et à tous. Depuis un moment j'ai un problème que je n'arrive pas à résoudre. Je vous explique j'utilise le module AgileSeller pour afficher des client. J'ai une page qui récapitule donc ces clients avec leur vignettes et leur image. Pour l'affichage de vignettes clients, mon code fonctionne ainsi : "si le fichier existe, tu l'affiches, sinon tu le remplace par une image par défaut" <ul class="block_content"> {foreach from=$seller_list item=seller} {assign var=seller_link value=$link->getAgileSellerLink($seller.id_seller,$seller.company)} <li class="oneseller"> <a class="nomsellers" href="{$seller_link}"> {assign var="imgvdr" value="http://monsite.com/img/as/{$seller.id_seller}-medium.jpg"} {if file_exists($imgvdr)} <img src="http://monsite.com/img/as/defaut.png" /> {else} <img src="{$imgvdr}" /> {/if} </a> <br/> <a class="nomseller" href="{$seller_link}" title="{$asc_seller.company}">{$seller.company}</a> </li> {/foreach} </ul> Sachant que l'image est définie par un ID client exemple : 90-medium.jpg où 90 est l'id client. Problème, sur la page, les images s'affichent un peu aléatoirement : - Soit le code marche et c'est cool - Soit il m'affiche l'icone du lien brisé ( donc le fichier n'existe pas et le code n'a pas fonctionné ) - Soit il m'affiche plusieurs fois la même image : client id 90 à la même image que le client id 9 Du coup dans le navigateur je tape l'url 90-medium par exemple et il me renvoie sur 9-medium. Comment est-ce possible ? Comment régler ce problème ? un GRAND MERCI d'avance Edited December 5, 2012 by arnaud1900 (see edit history) Link to comment Share on other sites More sharing options...
Mellow Posted December 5, 2012 Share Posted December 5, 2012 Heuuu... ne faudrait-il pas inverser cette logique ? {if file_exists($imgvdr)} <img src="http://monsite.com/img/as/defaut.png" /> {else} <img src="{$imgvdr}" /> {/if} Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted December 5, 2012 Author Share Posted December 5, 2012 Bonjour Mellow, merci pour ta réponse Oui j'ai déjà essayé en inversant, puisque c'est ce qui me semblait normal. Le problème c'est qu'il me remplaçait TOUTES les images par l'image par défaut. Hors actuellement il arrive à en trouver.... Link to comment Share on other sites More sharing options...
Mellow Posted December 5, 2012 Share Posted December 5, 2012 Bonjour, Alors ça veut dire que le {if file_exists($imgvdr)} ne trouve jamais le fichier (c'est toujours le {else} qui est pris en compte) Mais si le fichier n'est pas trouvé, c'est peut-être le {assign var.....} au dessus qui ne fonctionne pas... Il serait peut être mieux de faire cette logique dans le fichier php et d'ajouter directement une valeur seller_img au tableau $seller_list (en même temps que le seller_link aussi...) c'est parfois plus facile de débuger en php qu'en smarty... Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted December 5, 2012 Author Share Posted December 5, 2012 C'est ce que je pensais essayer, mais là j'ai fait un test en local et je me tape la tronche contre le bureau… $monfichier = 'http://monsite.com/img/as/9-medium.jpg'; if(file_exists($monfichier)){ echo '<img src="'.$monfichier.'"/>'; }else{ echo '<img src="erreur.jpg" />'; } C'est tout bête, et le fichier existe bien sur le site, mais ça me renvoie l'image d'erreur… Link to comment Share on other sites More sharing options...
Mellow Posted December 5, 2012 Share Posted December 5, 2012 Une piste : J'ai déjà eu des soucies avec file_exists, je crois que cette fonction n'aime pas trop les url ! elle préfère les chemins absolus ou relatifs genre $monfichier = '/var/www/html/img/as/9-medium.jpg'; ou $monfichier = 'img/as/9-medium.jpg'; Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted December 5, 2012 Author Share Posted December 5, 2012 J'ai testé, mais çe ne fonctionne pas non plus. Si dans le else j'ajoute la même variable {$imgvdr}, ça fonctionne, mais il me sort : Resource interpreted as Image but transferred with MIME type text/html: … >< Link to comment Share on other sites More sharing options...
Mellow Posted December 5, 2012 Share Posted December 5, 2012 Je savais bien que j'avais déjà vu une utilisation de file_exists avec smarty mais je n'arrivais pas à remettre la main dessus Finalement j'ai retrouver le code (dans le module blocklayered) il faut utiliser la constante $smarty.const._PS_ROOT_DIR_ et la concaténer avec le reste du chemin. Ce qui donnerait avec ton code smarty du début : {if file_exists($smarty.const._PS_ROOT_DIR_|cat:"/img/as/{$seller.id_seller}-medium.jpg")} <img src="{$base_dir}img/as/{$seller.id_seller}-medium.jpg" /> {else} <img src="{$base_dir}img/as/defaut.png" /> {/if} Même plus besoin d'assigner la varriable $imgvdr Dis moi si ça marche... Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted December 5, 2012 Author Share Posted December 5, 2012 HIP HIP HIP HURRRAY ! Merci merci et encore merci ! ça fonctionne très correctement !!!!!!!!!! Merci de t'être penché vigoureusement sur mon problème ! Link to comment Share on other sites More sharing options...
Mellow Posted December 5, 2012 Share Posted December 5, 2012 De rien, du moment que ça marche je suis récompensé. Une petite demande : Ce serait cool si tu pouvais rajouter les mots clés "file_exists" et "smarty" à ce topic, ça pourra peut-être aider d'autres personnes qui cherchent à tester l’existence d'un fichier à partir d'un .tpl "helping each other is acting for the future" Link to comment Share on other sites More sharing options...
Arnaud Drieux Posted December 5, 2012 Author Share Posted December 5, 2012 no pb 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