Jump to content
Sign in to follow this  
Thierry

[Résolu] Récupérer le nom du fabricant dans un module?

Recommended Posts

La solution ne doit pas être trop compliqué cependant je sèche...

 

Je suis en train de ré-écrire le module bloc "nouveaux produits" pour l'adapter à mes besoins. Je cherche entre autres à afficher le nom de la marque fabricant le produit avec un lien.

 

Je mets donc dans le fichier template du module :

<a href="{$link->getmanufacturerLink($product.id_manufacturer, $manufacturer.link_rewrite)}">{$manufacturer->getNameById($product.id_manufacturer)}</a>

 

Malheureusement, il semblerai que je ne puisse pas accéder à la classe ou à un objet manufacturer depuis le module.

 

Comment puis-je faire pour récupérer le nom du fabricant sachant que l'on a que son ID lors d'un listing produit.

 

Merci pour votre aide.

Share this post


Link to post
Share on other sites

Je rencontre bien entendu le même problème dans le thème. :/

 

Quelqu'un pourrait m'aider?

Share this post


Link to post
Share on other sites

Tu veux quoi concrètement ?

 

Le lien d'un fabricant ou juste son nom ?

 

Pour le nom du fabricant, ça donne ça :

// Si tu as le product ID
$produit = new Product( $idduproduit );
$nomdufabricant = $produit->manufacturer_name;

// Si tu n'as pas le product ID mais le manufacturer ID
$fabricant = new Manufacturer( $iddufabricant );
$nomdufabricant = $fabricant->name;

 

Pour le lien du fabricant, ça donne ça :

// Si tu as le product ID
$produit = new Product( $idduproduit );
require_once(_PS_CLASS_DIR_.'Link.php');
$lien = new Link();
$liendufabricant = $lien->getManufacturerLink( $produit->id_manufacturer );

// Si tu n'as pas le product ID mais le manufacturer ID
require_once(_PS_CLASS_DIR_.'Link.php');
$lien = new Link();
$liendufabricant = $lien->getManufacturerLink( $iddufabricant );

 

Je te sors ça de tête, je n'ai donc pas testé. Il se peut qu'il y ai une ou deux erreurs, mais je suis certain qu'avec ça tu es proche de la solution (si ça ne l'est pas!).

 

Tiens moi au courant via ce post si ça fonctionne ou pas ;)

 

Cordialement,

Share this post


Link to post
Share on other sites

Merci de m'avoir répondu. :)

 

Le lien du fabricant c'est déjà bon. J'avais trouvé $link->getmanufacturerLink().

 

Pour le nom ce n'est pas encore ça. Je prend un exemple de ma situation.

 

J'aimerai afficher le nom du produit et la marque du produit dans le bloc Nouveau Produits. Je travaille donc dans le fichier template du module (j'aurais peut-être du poster ça dans Thème...).

 

Dans ma boucle foreach qui liste les nouveaux produits j'ai :

 

{foreach from=$new_products item=product name=myLoop}
    <li class="{if $smarty.foreach.myLoop.first}firstItem{elseif $smarty.foreach.myLoop.last}lastItem{else}item{/if}">
        <a href="{$product.link}"><img class="productImage" src="{$img_prod_dir}{$product.id_image}-small.jpg" alt="{$product.legend}" /></a>
        <span class="productInfo"><a href="{$product.link}" class="productName">{$product.name}</a> <a href="{$link->getmanufacturerLink($product.id_manufacturer, $manufacturer.link_rewrite)}" class="productBrand">{* Le nom du fabricant *}</a></span>
    </li>
{/foreach}

 

Mon problème, c'est que $product récupère quasiment toutes les infos d'un produits (même ses caractéristiques), mais pas manufacturer_name, il y a par contre id_manufacturer. (en regardant les infos du {debug})

 

Je comprend ton bout de code pour récupérer le nom depuis le manufacturer ID, mais je ne sais pas du tout comment je peux créer un objet depuis mon tpl (en Smarty donc ).

 

 

Share this post


Link to post
Share on other sites

Ok, je n'avais pas compris le fait que tu ne touche pas au .php

 

Voici un code qui devrait te donner ce que tu veux. Maintenant ce n'est pas très "propre" de fonctionner comme cela. Le mieux serait de changer la variable contenant les nouveaux produits...

 

Quoi qu'il en soit, normalement ça fonctionne :)

Ajoute ce bout de code dans ta boucle à l'endroit ou tu veux afficher le nom du fabricant.

 

{php}
global $smarty;
$produit = $smarty->get_template_vars('product');
   	$fabricant = new Manufacturer($produit['id_manufacturer']);
   	echo $fabricant->name;
{/php}

 

Donc pour toi, si j'ai bien compris tu remplace le "{* Le nom du fabricant *}" par le code que je t'ai donné ;)

 

Tiens moi au courant ;)

 

Cordialement,

Share this post


Link to post
Share on other sites

Ça marche. :)

 

C'est sûr que c'est un peu crade comme solution. Même j'aimerai le plus possible ne toucher qu'au template et ne pas à avoir à éditer le plugin sauf si il y a vraiment nécessiter.

 

Merci beaucoup pour ton aide.

Share this post


Link to post
Share on other sites

Pas de soucis ;)

 

Met dans le titre du post qu'il est résolu, c'est toujours mieux pour s'y retrouver :)

 

A une pochaine ! :)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More