Jump to content

Afficher le nombre de produit dans Fabricants.tpl


Recommended Posts

Bonjour à tous, 

 

J'ai un petit soucis, 

J'aimerais afficher dans mon manufacturer.tpl le nombre de produit tel qu'il l'est déjà affiché dans le manifacturer-list.tpl.

Jusque là je me suis inspirée de ce qu'il y a dans le manufacturer-list,

le problème étant que, quel que soit le nombre de produits que le fabricant a, {$manufacturer->nb_products} semble rester égal à 0. 

 

Donc, ma variable ne passe jamais dans le >0 bien qu'il y ait plusieurs produits

{if $manufacturer->nb_products > 0}
{l s='%d livres écrit' sprintf=$manufacturer->nb_products|intval}
{else}
{l s='Aucun livre écrit' sprintf=$manufacturer->nb_products|intval}
{/if}

post-860147-0-13331200-1423472936_thumb.png

 

Merci d'avance !

Link to comment
Share on other sites

Bonjour,

 

Activez le mode dev sur votre boutique et dans votre tpl, utilisez {debug} pour voir quelles sont les variables utilisées par smarty. Cela vous aidera peut-être à savoir pourquoi votre variable ne passe même pas dans la condition.

 

Tenez-nous au courant,

 

Bonne journée,

 

Okar

Link to comment
Share on other sites

Merci beaucoup pour ta réponse Okar !

j'ai donc bien utilisé {debug} dans mon tpl, et effectivement, ma variable n'est pas reconnu.

Undefined property: Manufacturer::$nb_products in on line

Ce qui me semble logique, puisque ce nombre s'agit certainement d'un résultat d'une request SQL stockée dans la variable $manufacturer->nb_products qui s'exécute dans le manufacturer-list.tpl.

Donc théoriquement la solution serait de passer cette variable en paramètre je-ne-sais-comment, pour retrouver ce même nombre ?

En pratique par contre je sèche un peu.

 

Globalement le .tpl de manufacturer-list se présente avec une suite de conditions suivis de liens: 

{if $manufacturer.nb_products > 0}
<a
class="lnk_img" 
href="{$link->getmanufacturerLink($manufacturer.id_manufacturer, $manufacturer.link_rewrite)|escape:'html':'UTF-8'}" 
title="{$manufacturer.name|escape:'html':'UTF-8'}" >
{/if}

 

Donc comme ça a froid, l'idée qui me vient serait de passer le nombre contenu dans $manufacturer.nb_products (je suppose) en GET dans le href donc a href="{$link->getmanufacturerLink($manufacturer.id_manufacturer, $manufacturer.link_rewrite)?nbproduct=$manufacturer.nb_products|escape:'html':'UTF-8'}"

 

Ce qui n'est pas très propre, je l'accorde :/ ... 

 

En POST puisque ce n'est pas un form, je ne pense pas que ce soit possible... 

s'il y a une quelconque autres manière, je prends !

 

Merci ! :)

Edited by MarionGeorges (see edit history)
Link to comment
Share on other sites

D'après votre tpl (et d'après le mien en 1.6.0.8), on appelle le nombre de produits d'un fabricant de cette façon : {if isset($manufacturer) && $manufacturer.nb_products > 0} .  Essayez juste de cette manière avant tout !

 

Tenez-nous au courant,

 

Okar

 

[EDIT] Hmm, j'ai pas bien saisi votre charabia à propos de vouloir faire passer la valeur dans l'url... ^^' (le GET étant à éviter autant que possible)  Si vous voulez juste afficher un nombre sur votre tpl, vous pouvez très bien faire <p> mon fabricant possède {if isset($manufacturer) && $manufacturer.nb_products > 0}{$manufacturer.nb_products}{else} 0{/if} produits </p> . En gros, nb_products est une variable déjà existante de l'objet 'manufacturer', qui renvoie le nombre de produit(s) associé(s) à un fabricant, donc vous n'avez pas besoin de réécrire de trucs ou de machins pour récupérer sa valeur...[/EDIT]

Edited by okar (see edit history)
Link to comment
Share on other sites

Le nombre de produits pour un fabricant est effectivement affiché de cette façon dans le manufacturer-list.tpl . Seulement, j'en ai besoin dans le manufacturer.tpl dans lequel j'ai fait un copier coller d'une petite partie du manufacturer-list.tpl en remplaçant les "manufacturer.nb_products" par des "manufacturer->nb_products".

<p class="product-counter">
{if $manufacturer->nb_products == 1}
  {l s='%d product' sprintf=$manufacturer->nb_products|intval}
{else}
  {l s='%d products' sprintf=$manufacturer->nb_products|intval}
{/if}
</p>

Dans tous les cas cela ne semble pas être la bonne syntaxe pour afficher le nombre de produits du fabricant.

 

Thanks !

Edited by MarionGeorges (see edit history)
Link to comment
Share on other sites

Bah, pour quoi faire, si ça marche dans un template, je ne vois pas pourquoi ça ne marcherait pas dans l'autre (surtout sur une méthode publique)... Si votre appel $manufacturer->nb_products ne marche pas, autant essayer $manufacturer.nb_products . Ce n'est pas parce qu'une vue change qu'on est obligé de réécrire une méthode (surtout si le template doit faire appel à la même méthode) ^^'

Edited by okar (see edit history)
Link to comment
Share on other sites

Malheureusement ça ne fonctionne pas.

Que ce soit avec manufacturer->nb_products ou manufacturer.nb_products

J'ai le même besoin sur les produits (afficher le sous-titre qui est sur le product.TPL dans le product-list), mais je ne trouve juste pas comment :( 

 

Merci encore de passer un peu de ton temps à m'aider  :)

Link to comment
Share on other sites

Bonjour,

j'ai également ce problème dans la page liste de produit où j'aimerais afficher un champ personnalisé.

 

Ce dernier s'affiche bien sur la page produit avec :

<h2 class="subtitle-livre">{$product->xtd_name2|escape:'html':'UTF-8'}</h2>

Mais cet exact même code sur le product_list n'affiche rien :/

 

Est-ce que vous avez pu trouver une solution à votre problème ?

 

Merci d'avance !

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