Voici un petit tutoriel si vous désirez ajouter un bouton suivant/précedent sur la page produit
Cette astuce Prestashop est valable pour la version 1.5 et 1.6
—————-
1) Créez un nouveau fichier qui se nommera Product.php dans override/classes et insérez le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php class Product extends ProductCore { public function getAdjacentProducts() { //get the current position in the product's default category $position = Db::getInstance()->getValue('SELECT position FROM '._DB_PREFIX_.'category_product WHERE id_product = ' . (int)$this->id . ' AND id_category = ' . (int)$this->id_category_default); // var_dump($position); // get products that are before and after $previous = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT cp.id_product, pl.link_rewrite, cp.position, pl.name FROM '._DB_PREFIX_.'category_product cp LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (cp.id_product = pl.id_product) LEFT JOIN '._DB_PREFIX_.'product p ON (cp.id_product = p.id_product) WHERE p.id_category_default = '.(int)$this->id_category_default.' AND (cp.position < '. (int)($position ) .' ) AND cp.id_category = ' . (int)$this->id_category_default .' AND pl.id_lang = '.(Context::getContext()->language->id).' ORDER BY cp.position DESC'); $next = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT cp.id_product, pl.link_rewrite, cp.position, pl.name FROM '._DB_PREFIX_.'category_product cp LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (cp.id_product = pl.id_product) LEFT JOIN '._DB_PREFIX_.'product p ON (cp.id_product = p.id_product) WHERE p.id_category_default = '.(int)$this->id_category_default.' AND (cp.position > '. (int)($position ) .' ) AND cp.id_category = ' . (int)$this->id_category_default .' AND pl.id_lang = '.(Context::getContext()->language->id).' ORDER BY cp.position ASC'); return array('previous' => $previous, 'next' => $next); } } |
—————-
2) Créez un nouveau fichier qui se nommera ProductController.php dans override/controllers/front et insérez le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php Class ProductController extends ProductControllerCore { public function initContent() { $adjacent_products = $this->product->getAdjacentProducts(); $this->context->smarty->assign(array( 'prev_product'=> $adjacent_products['previous'], 'next_product'=> $adjacent_products['next'] )); parent::initContent(); } } |
—————-
3) Maintenant on va ajouter le boutton sur la page produit. Pour cela, ouvrez le fichier product.tpl qui se situe dans votre thème et insérez le code suivant
1 2 3 4 5 6 7 8 |
<div class="product-navigation clearfix" style="margin-bottom:20px"> {if $prev_product} <a title="{$prev_product.name}" class="btn btn-default" href="{$link->getProductLink($prev_product.id_product, $prev_product.link_rewrite)}">{l s='Previous Product'}</a> {/if} {if $next_product} <a title="{$next_product.name}" class="btn btn-default" style="float:right"href="{$link->getProductLink($next_product.id_product, $next_product.link_rewrite)}">{l s='Next Product'}</a> {/if} </div> |
Cette astuce est donnée par Fabio Porta, voir le site.
Salut, merci c’est extra !
Bonjour
je souhaiterai savoir si cette modification fonctionne sur un prestashop 1.7? et sinon ce qu’il faudrait ajuster pour que cela fonctionne.
Beau travail sur votre site, bravo
Gilles
bonjour,
malheureusement je n’ai pas abordé encore cette partie, il fera l’objet d’un tuto.