Jump to content

[RESOLU] Interprétation d'image faussée


Recommended Posts

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 by arnaud1900 (see edit history)
Link to comment
Share on other sites

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

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

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

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 :unsure:

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...