Jump to content

Afficher un produit en fonction de son nom


Recommended Posts

Bonjour,

Je suis nouvelle sur prestashop et j'aurais besoin d'un petit peu d'aide.

Je suis en train de créer un module qui permet d'afficher un produit en fonction de son nom(pas par catégorie juste par rapport au nom sachant que tous les produits sont dans la même catégorie). Mon but est de permettre à certain client(en rajoutant ce module) de voir certain produit.

Alors mon module comporte un fichier php et un tpl(c'est évident) je ne sais pas quel bout de code rajouter et dans quel fichier. Tous ce que j'ai essayé n'a pas marché car je pense que je dois faire appelle aux fichiers product.php, product-list etc

Toutes aides seraient la bienvenue.
Merci d'avance à ceux qui prendront le temps de me lire et me repondre.

Link to comment
Share on other sites

Bonjour,

J'ai le même problème, cela fait plus de 4 jours que j'ai posté et toujours pas de réponse.

Ce que j'ai vu, c'est que prestashop gère l'affichage des produits soit par l'id_category soit par l'id_product.

J'ai donc essayer de copier le contenu de product.php dans ma nouvelle_page.php (bien sûr en enlevant les headers, footer en trop) et de copier le tpl nécessaire à l'affichage des produits. Celui-ci me marque alors erreur produit manquant. Donc j'ai rajouté dans mon URL, nouvelle_page.php?id_product=4, et la ça m'affiche bien le produit sauf qu'on ne peut en afficher qu'un seul à la fois.

Il faudrait alors trouver une solution pour lui indiquer l'id_product sans modification de l'url.

La seul chose que j'ai réussi à faire sans modification d'URL, c'est d'aller prendre des données directement dans la base de donnée.

C'est vrai qu'un petit up serai la bienvenue :).

Merci d’avance à ceux qui prendront le temps de nous lire et nous répondre.

Link to comment
Share on other sites

Merci de ton message. Pourrais tu partager ton code?
Surtout que t’arrive à récupérer des informations des produits dans le base de donnée(donc je pense que t'arrives à récupérer le nom)
En tout cas ,ce que tas déjà fait pourrait beaucoup m'aider à essayer de trouver une solution à notre problème.
Notamment tu arrives à afficher des produits en spécifiant l'url(si on arrive à mettre une variable dans l'url ca pourrait être une solution non?)

Si j'ai bien compris tu es en train de créer un module(comme moi) vu que tu copie le code php et non tu le modifie directement dans les fichiers de base de prestashop.

Ton aide pourrais mettre précieuse.

Link to comment
Share on other sites

en tout cas pour moi non. Je veux juste afficher un produit en fonction de son nom.
Je m'explique chaque utilisateur à un produit à son nom et je veux qu'il puisse accéder directement(par un lien dans son compte utilisateur qui point sur une nouvelle page(déja codé) à son produit(pas réussi à faire))

Link to comment
Share on other sites

function getProductByName($name)
{
   return Db::getInstance()->getRow('
       SELECT p.*, pl.* , CONCAT( p.`id_product`,"-",i.`id_image`) AS image_id
       FROM `'._DB_PREFIX_.'product` p
       LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($cookie->id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
       WHERE p.`active` = 1 AND LOWER(pl.name) = "'.strtolower($name).'" LIMIT 1');
}

$product = getProductName('ipod');

echo Link::getProductLink($product['id_product'], $product['link_rewrite']);



Après, tu ne veux pas le faire aller sur la page du produit ? c'est sur une autre page ?
Concrètement, cette fonction te permet d'obtenir le produit qui porte le nom que tu veux. Je t'ai mis "l'astuce" pour avoir le lien correct du produit. Tu peux faire directement un href avec ce lien.
Si c'est la recherche ?

Link to comment
Share on other sites

merci beaucoup. le produit est affiché dans une nouvelle page. Mais même s'il ne va sur la page du produit par une redirection ça ne me dérange pas. L'importance était que je puisse afficher un produit en fonction du nom de la personne connectée.

Merci beaucoup

Link to comment
Share on other sites

function getProductByName($name)
{
   return Db::getInstance()->getRow('
       SELECT p.*, pl.* , CONCAT( p.`id_product`,"-",i.`id_image`) AS image_id
       FROM `'._DB_PREFIX_.'product` p
       LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($cookie->id_lang).')
       LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
       WHERE p.`active` = 1 AND LOWER(pl.name) = "'.strtolower($name).'" LIMIT 1');
}

$product = getProductByName('ipod');

echo Link::getProductLink($product['id_product'], $product['link_rewrite']); 



j'ai donc mis ce bout de code dans ma page php(qui contient seulement cette fonction pour le moment) de mon module et je ne comprend pas pourquoi quelque soit le nom du produit que je met(ipod_nano, Ipod Nano etc) j'ai sur ma page en FO lurl du produit mais avec un id toujours égal à 0(id=0)(je suis sur que le produit existe bien dans ma base de donnée)

est ce que quelqu'un voit où est l'erreur??

merci d'avance

Link to comment
Share on other sites

J'ai cherché pendant 2 jours pourquoi ça ne marche pas. J'ai vraiment besoin d'aide.
Maintenant je suis extrêmement curieuse de savoir où est le problème.

J'aurais quelques questions par rapport au code:
-comment savoir si on met p, pl, i etc ?
-à quoi ça correspond?
-où je peux trouver un tuto prestashop avec la manière d’écrire une requête(structure)?

Merci

Link to comment
Share on other sites

C'est du MySQL, tu peux commencer directement ici :
http://www.siteduzero.com/tutoriel-3-14488-presentation-des-bases-de-donnees.html#ss_part_1

Ce n'est pas Prestashop ici, mais du développement pur.

Ensuite, tu as une unique fonction dans ton .php du module ? As-tu regardé les autres modules, voir comment ils sont construits ?
Comment transmets-tu tes informations du .php à ton FO ?

Il n'y a rien de méchant, mais tu pars de très loin, et tu vas perdre beaucoup de temps. Tu peux demander une micro-intervention d'un développeur sur le forum "Appels d'offre et prestations".

Link to comment
Share on other sites

Merci de ta reponse je vais bien regarder ton lien mais j'ai déjà les bases en MySQL. Je comprend bien le code qu'il m'a été donné mais je ne trouve pas l'erreur(:s).
Pour ce qui est de mon module il est très basique voici son architecture:

nom du module

Classes comprenant un .php(je souhaite qui réalise une redirection vers le produit. Contient juste la fonction donné dans le post).

un .php(installation, hook, configuration , désinstaller)

un .tpl (affiche un lien cliquable à l'endroit du Hook avec une petite image qui fait une redirection vers le php du dossier classes)

une image.

J'aimerais juste savoir pourquoi j'ai toujours un id=0 avec le code qu'il ma été donné parce que je ne vois aucune erreur moi.

merci

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