Eric Monnier Posted June 13, 2016 Share Posted June 13, 2016 Bonjour, pour le shop d'un de mes clients, celui-ci me demande de pouvoir avoir une page contenant toutes les régions de ses produits. Dans le même style que la page fabricant, mais avec les régions. Chaque région doit ensuite renvoyer aux produit de celle-ci. Comme je suis relativement nouveau avec Prestashop, je me demandais quelle serai la meilleur façon de faire cela. Merci d'avance ! Eric Link to comment Share on other sites More sharing options...
Eolia Posted June 13, 2016 Share Posted June 13, 2016 Il y a plusieurs solutions, mais si la page fabricant n'est pas utilisée il suffit de la contourner^^ Créez autant de "fabricants" que de régions Pour chaque produit rentrez la région et modifiez les traductions du front-office Link to comment Share on other sites More sharing options...
doekia Posted June 13, 2016 Share Posted June 13, 2016 Moi je mettrais la région dans les tags - comme ça il n'y a rien à faire de particulier, tout est déjà prêt pour afficher les produits par tag Link to comment Share on other sites More sharing options...
Eric Monnier Posted June 13, 2016 Author Share Posted June 13, 2016 J'utilise déjà la page fabricant que j'ai du détourner pour en faire une page artiste. J'ai aussi pensé à utiliser les tags, mais si par la suite, mon client souhaite ajouter une description à chaque région c'est pas forcément l'idéal. De plus, utiliser les tags m'empêche d'avoir une page type comme la page fabricant, si je ne me trompe pas. Link to comment Share on other sites More sharing options...
Eolia Posted June 13, 2016 Share Posted June 13, 2016 Ok, donc vous devez créer un frontcontroller et y associer une page.tpl Link to comment Share on other sites More sharing options...
Eric Monnier Posted June 13, 2016 Author Share Posted June 13, 2016 Couplé avec les tags ? Je vais voir cela, merci beaucoup pour l'aide super rapide. Link to comment Share on other sites More sharing options...
doekia Posted June 13, 2016 Share Posted June 13, 2016 Une page tag est une page search en fait. Si tu dois te faire une controleur alors autant le faire sur une caractéristique - le BO est déjà là et il te suffit de filtrer par caractéristique. D'ailleurs (je ne conseille pas cette approche), la navigation a facette peut être utilisable directement sur cette caractéristique. Finalement, dans ce cas tu n'aurais rien à développer Link to comment Share on other sites More sharing options...
Eric Monnier Posted July 12, 2016 Author Share Posted July 12, 2016 Après quelques réflexions, je reviens avec mon problème, j'ai décidé de faire une page dédié à cela, mais malheureusement, j'ai un petit problème au niveau de ma requête. voici mes 3 pages nouvellement créés. Si vous avez une idée, c'est vraiment sympa, c'est vrai que c'est un peu nouveau pour moi tout ceci. RegionController.php : class RegionController extends FrontController { public $php_self = 'region'; protected $region; public function initContent() { parent::initContent(); $this->assignAll(); $this->setTemplate(_PS_THEME_DIR_.'region.tpl'); } protected function assignAll() { if (Configuration::get('PS_DISPLAY_SUPPLIERS')) { $data = Region::getRegions(false, $this->context->language->id); $nbRegions = count($data); $this->context->smarty->assign(array( 'nbRegion' => $nbRegions, 'regions' => $data, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY') )); } else { $this->context->smarty->assign('nbRegion', 0); } } } Region.php : class RegionCore extends ObjectModel { public static $definition = array( 'table' => 'feature_value_lang', 'primary' => 'id_feature_value', 'multilang' => true, 'multilang_shop' => true, 'fields' => array( /* Classic fields */ 'value' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128) )); public static function getRegions($get_nb_products = false, $id_lang = 0) { if (!$id_lang) { $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); } if (!Group::isFeatureActive()) { $all_group = true; } $regions = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT b.value FROM `'._DB_PREFIX_.'feature_value` a '.Shop::addSqlAssociation('feature_value', 'a').' LEFT JOIN `'._DB_PREFIX_.'feature_value_lang` b ON (b.`id_feature_value` = a.`id_feature_value` AND b.`id_lang` = '.(int)$id_lang.') WHERE `id_feature` = 2 AND (a.custom = 0 OR a.custom IS NULL) ORDER BY `id_feature` ASC'; return $regions; } } region.tpl {capture name=path}{l s='Region'}{/capture} <h1>{l s='Région'}</h1> {if isset($errors) AND $errors} {include file="$tpl_dir./errors.tpl"} {else} {if 1 > 0} {foreach from=$regions item=region name=regions} <div class="middle-side col-xs-12 col-sm-5"> <h3> {$region.value|truncate:60:'...'|escape:'html':'UTF-8'} </h3> </div> <!-- .middle-side --> {/foreach} {/if} {/if} Merci 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