Jump to content

mettre les champs "fabriquant" et "fournisseur" dans la fiche produit.


Recommended Posts

Bonjour,
J'installe actuellement une boutique web pour une petite librairie.
Je me sers du champ "fabricant" pour entrer le nom de l'auteur; et du champ "fournisseur" pour entrer le nom de l'éditeur.
C'est pratique… ça permet aux clients d'avoir un menu déroulant classé alphabétiquement sur les auteurs et les éditeurs.

Mais… dans le modèle de base, les champs "fabricant" et "fournisseur" ne sont pas repris dans la fiche produit.
Comment faire pour les y inclure? Quel code dois-je insérer dans mon template?

Merci d'avance pour vos retours,

elode

Link to comment
Share on other sites

  • 2 weeks later...

C'est encore plus simple que je pensais, toutes les données étant déjà sélectionnées.

Tu peux utiliser

{$product->manufacturer_name}

et

{$product->supplier_name}

directement sur le template product.tpl .

Rodolphe

Link to comment
Share on other sites

Merci beaucoup, ça marche!

Mais… J'essaye de mettre les mêmes champs, avec le même code dans la fichier product_list.tpl, pour avoir l'auteur et l'éditeur également dans la liste de produits, et ça ne marche pas… le contenu des champs n'apparaît pas. pourquoi?

Une idée?

Merci encore pour l'aide :)

Link to comment
Share on other sites

J'aurais pu répondre avant mais le site semble avoir quelques soucis !

Pour l'autre donnée c'est un peu plus embêtant car il faut modifier la (ou les, selon ce que tu veux) requêtes concernées. Par exemple une requête pour l'affichage quand on sélectionne une catégorie, une autre pour les nouveaux produits, etc.

Ce n'est pas compliqué mais ça peut te poser souci ensuite car du coup les mises à jour ne pourront plus être effectuées automatiquement sur les fichiers concernés. Quand il s'agit du thème ce n'est pas très grave, pour le reste c'est gênant.

À toi de voir ce dont tu as besoin, tu peux aussi me contacter directement.

Rodolphe

Link to comment
Share on other sites

Merci,
C'est très gentil à toi.

Je crois que dans un premier temps, je vais me contenter de mettre le champ fabriquant dans la liste. C'est quand même le plus important.

Je te remercie beaucoup pour ton aide, c'était vraiment le dernier obstacle important pour adapter prestashop à la librairie. Maintenant, je vais pouvoir penser à la mettre en production.

Merci encore :)

Link to comment
Share on other sites

Ce n'est rien et chercher des réponses aux questions des autres me permet de progresser rapidement afin de pouvoir proposer la solution Prestashop à certains de mes clients d'ici peu ;-)

En ajoutant les requêtes il faudrait aussi ajouter éventuellement des critères de tri (par éditeur, par auteur). Une libraire qui utilise OSC m'avait demandé par exemple de trier par défaut par auteur et non par titre. Et pas mal d'autres choses.

Rodolphe

Link to comment
Share on other sites

  • 6 months later...
Pour le premier (avec une petite variante il est vrai) :
{$product.manufacturer_name}

.

Par contre le second n'est effectivement pas pris en compte, je vais regarder ça.

Rodolphe



Merci je cherchais cela depuis lontemps :)
Fonctionne parfaitement pour afficher le nom du fabricant dans la liste des produits ;) !
Link to comment
Share on other sites

  • 1 month later...

Bonjour



J’installe actuellement une boutique web pour une petite librairie....().Je me sers du champ “fabricant“ pour entrer le nom de l’auteur; et du champ “fournisseur“ pour entrer le nom de l’éditeur..(..)...Quel code dois-je insérer dans mon template?.(..)..elode


=> Je suis occupé à faire exactement la même chose (librairie), et j'ai trouvé comment placer l'auteur (fabricant) + collection (fournisseur) (avec un lien vers la page correspondante) dans la fiche produit (product.tpl) :

{if $product->manufacturer_name} Auteur : 
getmanufacturerLink($product->id_manufacturer, $manufacturer.link_rewrite)}">{$product->manufacturer_name|escape:'htmlall':'UTF-8'}

{/if}


{if $product->supplier_name}Collection : 
getsupplierLink($product->id_supplier, $supplier.link_rewrite)}">{$product->supplier_name|escape:'htmlall':'UTF-8'}

{/if}




Et dans la liste des livres d'une recherche, catégories, etc (product-list.tpl) je parviens à y placer l'auteur (fabricant) :

getmanufacturerLink($product->id_manufacturer, $manufacturer.link_rewrite)}">
{$product.manufacturer_name|truncate:350:'...'|escape:'htmlall':'UTF-8'}



Mais ça foire avec la collection (fournisseur) :


getmanufacturerLink($product->id_manufacturer, $manufacturer.link_rewrite)}">
{$product.manufacturer_name|truncate:350:'...'|escape:'htmlall':'UTF-8'}

==> C'est le seul qui va pas, placer le fournisseur dans product-list.tpl, J'ignore Pourquoi ?

Quelqu'un aurait il réussi à y placer soit le nom soit le logo du fournisseur dans la liste des produits ?
merci pour l'aide

Link to comment
Share on other sites

  • 1 month later...

Bonsoir,

après quelques essais, je parviens à afficher le fabricant dans le product-list, mais pas le fournisseur.

Du moins pas son "name", mais son id oui, ça marche :

{if $product.manufacturer_name}

{l s='de '}getmanufacturerLink($product.id_manufacturer, $manufacturer.link_rewrite)}" title="Tous les livres de {$product.manufacturer_name}">{$product.manufacturer_name}    
             {/if}
             {if $product.id_supplier}
               {l s=' et '}getsupplierLink($product.id_supplier, $supplier.link_rewrite)}" title="Tous les livres de {$product.id_supplier}">{$product.id_supplier} 
             {/if}



Cela fonctionne parfaitement, mais impossible de "décoder" le nom !
Quelqu'un a une idée pour que le supplier_name soit valide ?

Link to comment
Share on other sites

  • 3 weeks later...

Un p'tit up ?


getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />
{if $product.new == 1}{l s='new'}{/if}{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}

{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
             {if $product.manufacturer_name}

{l s='de '}link}" title="Tous les livres de {$product.manufacturer_name}">{$product.manufacturer_name}
             {/if}
             {if $product.id_supplier}

{l s='et '}link}" title="Tous les livres de {$product.supplier_name}">{$product.supplier_name}
             {/if}

{$product.supplier_reference} {if $product.reference > 2}({$product.reference}){/if}



Comment décoder le id_supplier ?

Link to comment
Share on other sites

Bon, j'ai pas mal avancé sur ce sujet, mais il manque des bouts.

Modifier la classes category.php entre les lignes 405 et 420 :

$sql = '
       SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, s.`name` AS supplier_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new,
                   (p.price - IF((DATEDIFF(reduction_from, CURDATE()) <= 0 AND DATEDIFF(reduction_to, CURDATE()) >=0) OR reduction_from = reduction_to, IFNULL(reduction_price, (p.price * reduction_percent / 100)),0)) AS orderprice 
       FROM `'._DB_PREFIX_.'category_product` cp
       LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product`
       LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1)
       LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
       LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'tax` t ON t.`id_tax` = p.`id_tax`
       LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`
       LEFT JOIN `'._DB_PREFIX_.'supplier` s ON s.`id_supplier` = p.`id_supplier`
       WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').'
       '.($id_supplier ? 'AND p.id_supplier = '.$id_supplier : '');



Modifier la classe search.php entre les lignes 285 et 293 :

$products = $db->ExecuteS('
       SELECT p.id_product, pl.id_lang, pl.name as pname, p.reference, p.ean13, pl.description_short, pl.description, cl.name as cname, m.name as mname, s.name as sname
       FROM '._DB_PREFIX_.'product p
       LEFT JOIN '._DB_PREFIX_.'product_lang pl ON p.id_product = pl.id_product
       LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = p.id_category_default AND pl.id_lang = cl.id_lang)
       LEFT JOIN '._DB_PREFIX_.'manufacturer m ON m.id_manufacturer = p.id_manufacturer
       LEFT JOIN '._DB_PREFIX_.'supplier s ON s.id_supplier = p.id_supplier
       WHERE p.indexed = 0', false);



Puis, sur le product-list.tpl :

{foreach from=$products item=product name=products}



getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />
{if $product.new == 1}{l s='new'}{/if}{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}

{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
             {if $product.id_manufacturer}

{l s='de '}{$product.manufacturer_name}
             {/if}
             {if $product.id_supplier}
               {l s='et '}{$product.supplier_name}
             {/if}
Link to comment
Share on other sites

  • 5 months later...

Voici le code pour afficher le fournisseur sur la page du manufacturer. Par contre le code pour la page search.php (voir ci-dessus) ne fonctionne pas. Quelqu'un a-t-il une idée ?

Merci


$sql = '
       SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, s.`name` AS supplier_name, tl.`name` AS tax_name, t.`rate`, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, 
           (p.`price` * ((100 + (t.`rate`))/100) - IF((DATEDIFF(`reduction_from`, CURDATE()) <= 0 AND DATEDIFF(`reduction_to`, CURDATE()) >=0) OR `reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * ((100 + (t.`rate`))/100) * `reduction_percent` / 100)),0)) AS orderprice 
       FROM `'._DB_PREFIX_.'product` p
       LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
       LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'tax` t ON t.`id_tax` = p.`id_tax`
       LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`
       LEFT JOIN `'._DB_PREFIX_.'supplier` s ON s.`id_supplier` = p.`id_supplier`
       WHERE p.`id_manufacturer` = '.intval($id_manufacturer).($active ? ' AND p.`active` = 1' : '').'
       AND p.`id_product` IN (
                   SELECT cp.`id_product`
                   FROM `'._DB_PREFIX_.'category_group` cg
                   LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
                   WHERE cg.`id_group` '.(!$cookie->id_customer ?  '= 1' : 'IN (SELECT id_group FROM '._DB_PREFIX_.'customer_group WHERE id_customer = '.intval($cookie->id_customer).')').'

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