Jump to content

[AIDE] Comment créer des requêtes mysql personnalisées pour afficher des produits dans un ordre souhaité ?


Recommended Posts

Bonjour tout le monde !

je commence avec prestashop et n'ai jamais travaillé avec les templates/smarty avant ça. mon client souhaite un site e-commerce pour vendre des alliances de mariage, j'ai décidé sur conseils d'amis d'utiliser prestashop... qui en fait est plus compliqué à personnaliser que prévu à mon sens :/

bon, mon problème/ma question est la suivante :

dans ma page d'accueil (index.tpl), il faut que j'affiche trois listes de produits :
1) un produit choisi par son id (qu'on changera manuellement chaque mois par exemple), qui sera affiché en gros
2) 3 produits en aléatoire, en petites vignettes
3) les trois derniers produits ajoutés au catalogue

donc, comment faire ça?
dans mon fichier index.php, comment créer ces trois requêtes mysql et récupérer toutes les infos?
dans le fichier themes/montheme/index.tpl, que faire également ensuite?

dans le fichier "themes/mytheme/product-list.tpl" par exemple, j'ai cette boucle foreach :

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



là dedans j'ai juste à placer mon code html pour afficher les vignettes de mes produits, leur nom, prix etc...
en fait j'aimerai pouvoir faire l'équivalent dans ma page d'accueil, avec une boucle pour les produits aléatoires, une pour les derniers produits ajoutés, et une pour afficher le produit choisi par son id (même si en toute logique, on ne fait pas une boucle pour afficher un seul produit... si il y a une meilleure solution, elle m'intéresse aussi)

voilà, en espérant que quelqu'un puisse m'aider (et la réponse aidera sûrement d'autres personnes à l'avenir aussi), ça serait super génial/gentil/super/cool!! :)

bonne journée à tous,

jb

Link to comment
Share on other sites

bonjour,

Je sais pas si ça peut t'aider car je suis pas du tout un monstre de prestashop, prog ...
En fait il existe une astuce pour l'ordre des catégories c'est de placer un numéro avant, C'est tres simple!
Si ça t intéresse va dans prestatools dans la rubrique astuce

Voila A+

Link to comment
Share on other sites

salut! :)

hum, désolé ni sur www.prestatools.com, ni sur lpdp.comoj.com je n'ai trouvé de rubrique "astuces"... :-S
peut-tu m'en dire plus s'il te plait?

c'est dingue qu'il n'y ai toujours pas de documentation pour prestashop :/

Link to comment
Share on other sites

merci linocorleon :)
par contre ça parle de comment trier les catégories, et non de comment choisir nos requêtes.
en fait, en php "normal", pour lister trois articles par exemple on ferait :

$req = mysql_query("SELECT * FROM `mes_produits` ORDER BY `id` DESC LIMIT 3");



ou encore :

$req = mysql_query("SELECT * FROM `mes_produits` ORDER BY RAND() LIMIT 3");



ou encore :

$req = mysql_query("SELECT * FROM `mes_produits` WHERE `id`=42 LIMIT 1");



après ça, on fait une boucle while / mysql_fetch_array() (ou mysql_fetch_assoc() pour la 3ème)

et j'aimerai tout simplement savoir comment faire l'équivalent sur prestashop. je suis sûr que ce n'est pas si compliqué que ça, mais je n'ai rien trouvé qui m'indiquerai comment faire :/

Link to comment
Share on other sites

Bonjour,

En fait il y a une solution simple mais peut être fastidieuse à la longue!
Je suis conscient qu'il y a mieux à faire, mais à part créer un module en t'inspirant de modules existant, tu peux à la rigueur:
Module Home featured:
Dans ta liste de produits (dans le BO) tu peux faire figurer en page d'accueil les produits qui t'interressent en cochant ou décochant ce que tu souhaites voir figurer ou pas.
Bien sûr ce n'est pas automatique comme un requête SQL, mais à part créer un module je ne vois rien d'autres!

Link to comment
Share on other sites

hello !

merci, je suis justement tombé sur ce lien cette nuit après recherche, mais en fait je cherchais plutôt comment afficher un produit en précisant clairement son id, là la technique consiste à choisir un produit ans le module "home featured" c'est ça ? à vrai dire je l'utilise déjà pour afficher une liste de trois produits "coups de coeur", donc la technique serait peut etre de dupliquer le module, changer son nom et d'en utiliser un pour afficher les trois produits "coups de coeur" et un pour mon produit unique "en vedette"? puarf, c'compliqué.... :]

Link to comment
Share on other sites

Bonsoir,
Cela demande un peu de modifs.
Je l'ai fait et ça fonctionne très bien.
En premier, j'affiche le homefeatured classique (3 images séléctionnées pour être affichées dans l'accueil)
En second, j'affiche le home featuredcustom, module modifié par Sotews et qui apporte des solutions d'affichage beaucoup plus souples (choix des catégories à afficher, des boutons etc etc)
Et comme je souhaitais afficher une autre catégorie de produits, j'ai dupliqué le module de Sotews, je l'ai nommé homeProducts (le nom bien sûr n'a pas d'importance) et je peux afficher une troisième ligne avec les produits d'une catégorie différente).
Bien sûr quelques modifications à apporter dans le TPL et le PHP, mais rien de méchant.
Le plus laborieux a été de modifier le css en créant des classes spécifiques à ce module car j'avais des interférences dans l'affichage.
Seul bémol, le module imagesenlarge ne fonctionne pas sur ce module!
Voilà une idée qui peut sans doute t'aider.

Link to comment
Share on other sites

  • 2 weeks later...

hop, histoire de tenir au courant...
j'ai donc modifié le module pour le décliner en deux versions, l'une qui affiche un seul produit d'une catégorie "produit à la une" et l'autre module pour les produits "coup de coeur".
je suis content d'enfin commencer à comprendre prestashop, mais pour le prochain cms de boutique en ligne, j'essayerai quand même un autre pour voir, le manque de doc est vraiment pénalisant pour prestashop.

à plus tard ! :-)

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