Jump to content

Afficher une image de caractéristique


Recommended Posts

Bonjour, j'ai un bug que je n'arrive pas à résoudre j'ai remplacé le bloc d'affichage des caractéristiques dans product-details.tpl en version 8.

 

 <section class="product-features">
          <dl class="data-sheet">

             {foreach from=$product.grouped_features item=feature}

                    <dt class="name">{$feature.name}{$feature.id_feature}</dt>

                    <dd class="value">{$feature.value|escape:'htmlall'|nl2br nofilter}</dd>

                {/foreach}


            </dl>
        </section>

 

par ceci pour afficher une image de caractéristique :

 

       <section class="product-features">
          <dl class="data-sheet">
                {foreach from=$product.grouped_features item=feature}
                    <dt class="name">{$feature.name}</dt>
{assign var="icon" value="{$urls.img_ps_url}f/{$feature.id_feature}.jpg"}

{if file_exists($icon)}     <dd class="value"><img src="{$urls.img_ps_url}f/{$feature.id_feature}.jpg"/>{$feature.id_feature} {$feature.value|escape:'htmlall'|nl2br nofilter}</dd> {else}    

<dd class="value">{$feature.value|escape:'htmlall'|nl2br nofilter}</dd> {/if}


                {/foreach}
            </dl>
        </section>

 

Je butte sur la fonction file_exists qui ne me donne pas l'image et ne fonctionne pas en version 8, avez-vous une idée, j'ai testé différentes méthodes mais je ne suis pas au point sur cette fonction.

 

Merci

 

 

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Dans PrestaShop 8, l'utilisation de fonctions PHP comme file_exists directement dans les fichiers de template (.tpl) pose problème en raison de la séparation des préoccupations entre la logique (gérée par le contrôleur) et la présentation (gérée par le template). Smarty, le moteur de templating utilisé dans PrestaShop, ne prend pas en charge l'appel de fonctions PHP comme file_exists nativement dans les templates.

Pour résoudre ce problème, vous pouvez déplacer la logique de vérification de l'existence de l'image de la fonctionnalité vers le contrôleur ou une méthode d'assistance, puis passer le résultat au template.

Modifiez votre contrôleur de produit (ProductController.php) pour vérifier l'existence des fichiers d'image et passer les informations au template.
$product = $this->context->controller->getProduct();

foreach ($product->grouped_features as &$feature) {
$feature_image_path = _PS_IMG_DIR_ . 'f/' . $feature['id_feature'] . '.jpg';
$feature['has_image'] = file_exists($feature_image_path);
}

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...