sangria777 Posted July 5, 2013 Share Posted July 5, 2013 Bonjour à tous, J'aimerai afficher les produits visibles par marque sur le page 'manufacturer' en les triant par famille et sous famille. Je suis en version 1.5.2. Savez-vous comment faire ? Merci d'avance pour vos réponses ! Link to comment Share on other sites More sharing options...
Grafics Posted July 10, 2013 Share Posted July 10, 2013 Il faut faire un override sur la class manufacturer en classant les résultats sql selon ton choix. Link to comment Share on other sites More sharing options...
sangria777 Posted July 16, 2013 Author Share Posted July 16, 2013 Comment connaitre la class à modifier ? J'imagine que c'est celle-ci : getManufacturers, mais je ne vois pas quand elle est appeler ? Link to comment Share on other sites More sharing options...
Grafics Posted July 16, 2013 Share Posted July 16, 2013 oui c'est celle qui est appelé Manufacturer:getManufacturer Avec cette fonction du cherche la class manufacturer et dedans la fonction getmanufacturer A la fin de la requete sql, tu metys un order by name ASC par exemple. Link to comment Share on other sites More sharing options...
sangria777 Posted July 16, 2013 Author Share Posted July 16, 2013 Merci pour ta réponse ! Dans cette class le première requete est : $sql = 'SELECT m.*, ml.`description`, ml.`short_description` FROM `'._DB_PREFIX_.'manufacturer` m LEFT JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON ( m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.(int)$id_lang.' ) '.Shop::addSqlAssociation('manufacturer', 'm'); if ($active) $sql .= ' WHERE m.`active` = 1'; $sql .= ' GROUP BY m.id_manufacturer ORDER BY m.`name` ASC'. ($p ? ' LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n : ''); Cela va pas chercher les produits mais les manufacturer ? Je dois modifier celle-la ? : $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( 'SELECT p.`id_product` FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`) WHERE m.`id_manufacturer` = '.(int)$manufacturer['id_manufacturer']. ($active ? ' AND product_shop.`active` = 1 ' : ''). ($all_group ? '' : ' 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` '.$sql_groups.' )') ); C'est bien ça ? Car pour l'instant je ne cois pas mes modifs, est-ce que je suis sur la bonne requête ? Link to comment Share on other sites More sharing options...
sangria777 Posted October 3, 2013 Author Share Posted October 3, 2013 Je vais reformuler ma demande car pas de réponse et tout mes essais sont des échecs !! Je veux faire un menu directement dans le header avec toutes les marque de ma boutique. Que dois-je faire pour voir/utiliser les fonctions manufacturer dans le header ? Merci pour vos réponses ! Link to comment Share on other sites More sharing options...
Grafics Posted October 3, 2013 Share Posted October 3, 2013 Pour répondre simplement, prends un module listant les marques et greffe le dans le hook de ton choix. Link to comment Share on other sites More sharing options...
sangria777 Posted October 3, 2013 Author Share Posted October 3, 2013 Heu, merci pour ta réponse. Mais je ne pourrai pas utiliser la liste pour la mettre dans mon menu ? Dans ManufacturerController.php, si je fais : /** * Assign template vars related to page content * @see FrontController::initContent() */ public function initContent() { parent::initContent(); if (Validate::isLoadedObject($this->manufacturer) && $this->manufacturer->active && $this->manufacturer->isAssociatedToShop()) { $this->productSort(); $this->assignOne(); $this->setTemplate(_PS_THEME_DIR_.'manufacturer.tpl'); $this->setTemplate(_PS_THEME_DIR_.'header.tpl'); } else { $this->assignAll(); $this->setTemplate(_PS_THEME_DIR_.'manufacturer-list.tpl'); $this->setTemplate(_PS_THEME_DIR_.'header.tpl'); } } Est-ce une bonne direction pour afficher une fonction de manufacturer dans le header.tpl ? Link to comment Share on other sites More sharing options...
Grafics Posted October 3, 2013 Share Posted October 3, 2013 Disons que théoriquement, si tu place ton hook dans ton tpl de menu, il apparaitra. Cependant, tu peux copier la même fonction que dans le bloc manufacturer par exemple, l'ajouter dans le php de ton menu et appeler ta variable comme dans le bloc manufacturer. Link to comment Share on other sites More sharing options...
sangria777 Posted October 3, 2013 Author Share Posted October 3, 2013 Merci pour ta réponse. Je suis en version 1.5.4.1, je croyais qu'on ne pouvait pas mettre de php dans les .tpl ? Comment faire ? Sinon : Dans blocmanufacturer, il y a le public function getContent() que je pourrais récupérer. Je la copie ou ? Link to comment Share on other sites More sharing options...
Grafics Posted October 3, 2013 Share Posted October 3, 2013 Il ne faut pas mettre de php dans les tpl.Il faut mettre le listage des marques dans le php de ton module menu et l'assigner dans les variables avec le reste pour les afficher dans ton tpl comme il le sont dans le tpl du module marque.Le getContent n'est pas pour l'ajout dans ton tpl.Dans le hook de ton module (par ex top si ton menu se mets dans el top) tu ajoutes la liste et l'assigne pour la reprendre dans ton tpl Dans le php function hookTop($params) { [...] $this->smarty->assign(array( [...] 'manufacturers' => Manufacturer::getManufacturers(), [...] )); return $this->display(__FILE__, 'menubidule.tpl'); } Dans ton tpl menubidule <ul> {foreach from=$manufacturers item=manufacturer name=manufacturer_list} {if $smarty.foreach.manufacturer_list.iteration <= $text_list_nb} <li class="{if $smarty.foreach.manufacturer_list.last}last_item{elseif $smarty.foreach.manufacturer_list.first}first_item{else}item{/if}"><a href="{$link->getmanufacturerLink($manufacturer.id_manufacturer, $manufacturer.link_rewrite)}" title="{l s='Learn more about' mod='blockmanufacturer'} {$manufacturer.name}">{$manufacturer.name|escape:'htmlall':'UTF-8'}</a></li> {/if} {/foreach} </ul> Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now