Jump to content

naviguer de produit en produit avec bouton suivant et precedent


Recommended Posts

bonjour

 

est il possible de naviguer de produit en produit

c'est a dire que lorsque l'on est dans une page produit ,un bouton suivant et precedent permet de naviguer sur le prochain produit de la meme categorie

 

est ce posible ?

avec des effet jquery ca serait genial !!

 

merci

Link to comment
Share on other sites

On peut récupérer l'ID produit et donc d'afficher sur les boutons les id suivants et précédents.

 

Vous pouvez récupérer l'id produit dans le TPL avec la variable

{$smarty.get.id_product}

 

 

Dans votre fichier product.tpl, à l'endroit où vous voulez mettre le lien vers suivant:

 

<a href="http://www.monsite.com/product.php?id_product={math equation="x+1" x=$smarty.get.id_product}">Suivant</a>

 

 

Pour le bouton précédent, il suffit de remplacer le +1 par -1

 

Par contre, inconvénient, il liste les produit dans la suite des ID (1,2,3,4...) et surtout si un ID produit n'existe pas (ou plus, supprimé par exemple) il va afficher page inconnue.

 

Mais bon ça peut être une piste...

Link to comment
Share on other sites

donc effectivement, ca fonctionne mais si le produit n'existe pas , il ya une erreur

donc il faudrait en faite recupere la position du produit , puis recuperer l'id du produit par rapport a la position

et la je ne vois pas du tout commenta faire ..

 

 

dans la base de données , la table repertorie id_category, id_product,position

{$smarty.get.position}

 

 

 

 

 

 

alors dans le meme style , mais autre sujet (http://www.prestasho...oduct-list-tpl/) sur lequel on ne m'a pas repondu , si l'on recuper l'id du produit

comme cela

{$smarty.get.id_product}

 

comment peut on récupéré l'id d'un pack associé au produit

Edited by ultraxa (see edit history)
Link to comment
Share on other sites

  • 7 months later...

L'idée à mon sens est de prendre la page produit sur laquelle vous vous trouvez. par exemple le produit ID 45.

 

Il faut en PHP faire une recherche pour déterminer quel est l'id suivant et l'id précédent. Pour cela il faut faire un select order by ASC par exemple, séléctionner la ligne avec l'ID en cours puis ensuite prendre les ID de la ligne d'avant et d'après.

 

Ensuite, il faudra simplement envoyer à smarty deux variables smarty du genre id_précédente et id_suivant en assignant les numéros id trouvés.

 

on commence par récupérer l'id du produit en cours qu'on appelle $id et ensuite on fait deux types de requêtes comme ça :

$tab_id_précédent = Db::getInstance()->getRow('SELECT * FROM ps_products WHERE id < '.$id.' ORDER BY id DESC LIMIT 1');
$tab_id_suivant=Db::getInstance()->getRow('SELECT * FROM ps_products WHERE id > '.$id.' ORDER BY id ASC LIMIT 1');

 

et on obtient les deux lignes avec les id précédent et suivant.

On récupère les id et on assigne:

$id_precedent = $tab_id_precedent['id_product'];
$id_suivant = $tab_id_suivant['id_product'];
$smarty->assign(array('suivant' => $id_suivant, 'precedent' => $id_precedent));

 

et côté tpl on a {$suivant} et ${precedent}

 

J'ai rien testé je sais pas si ça marche c'est une piste comme une autre à tester...

Edited by franckm1000 (see edit history)
Link to comment
Share on other sites

on commence par récupérer l'id du produit en cours qu'on appelle $id et ensuite on fait deux types de requêtes comme ça :

$tab_id_précédent = Db::getInstance()->getRow('SELECT * FROM ps_products WHERE id < '.$id.' ORDER BY id DESC LIMIT 1');
$tab_id_suivant=Db::getInstance()->getRow('SELECT * FROM ps_products WHERE id > '.$id.' ORDER BY id ASC LIMIT 1');

 

et on obtient les deux lignes avec les id précédent et suivant.

On récupère les id et on assigne:

$id_precedent = $tab_id_precedent['id_product'];
$id_suivant = $tab_id_suivant['id_product'];
$smarty->assign(array('suivant' => $id_suivant, 'precedent' => $id_precedent);

 

2 choses :

- le LIMIT 1 est inutile ici comme c'est un getRow (ne renvoi qu'une seule ligne)

- tu peux même utiliser getValue au lieu de getrow, ainsi ta variable contient directement la valeur que tu cherches:

 

$id_precedent = Db::getInstance()->getValue('SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `active`=1 AND `id` < '.$id.' ORDER BY `id` DESC');
$id_suivant = Db::getInstance()->getValue('SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `active`=1 AND `id` > '.$id.' ORDER BY `id` ASC ');

Link to comment
Share on other sites

Et pourquoi pas réaliser une navigation des pages en bas dans lequel seul le N° de la page d'un produit existant (=iD du produit) s'afficherait ?

 

Je comprends rien. Faire une navigation précédent/suivant en affichant l'ID du produit ????

Link to comment
Share on other sites

Exactement et en outre on ne ferait pas apparaître un ID. l'ID d'un produit est une clé interne qui sert uniquement pour reconnaître une ligne. Pour un utilisateur, l'ID n'a aucune existence.

Ca ferait des cases du genre : 26 37 46 102 ...

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