Créer un lien vers un produit
7 messages
• Page 1 sur 1
Créer un lien vers un produit
Bonjour,
Sur mon site de vente de vin, un module présente une "recette du moment" qui est liée à un vin de mon catalogue.
Ce module fonctionne et le vin sélectionné dans l'admin s'affiche bien dans la partie boutique du site.
Le problème : je n'arrive pas à créer un lien qui renverrait directement sur la fiche du vin en question.
Comment dois-je m'y prendre ?
extrait du 'model' du module:
extrait du 'controller' du module:
Extrait du .tpl du module :
Sur mon site de vente de vin, un module présente une "recette du moment" qui est liée à un vin de mon catalogue.
Ce module fonctionne et le vin sélectionné dans l'admin s'affiche bien dans la partie boutique du site.
Le problème : je n'arrive pas à créer un lien qui renverrait directement sur la fiche du vin en question.
Comment dois-je m'y prendre ?
extrait du 'model' du module:
- Code: Tout sélectionner
public function getProduct($recette_id) {
$sql = "SELECT DISTINCT *, p.image AS imageproduct, pd.name AS name, m.name AS manufacturer FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id=pd.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id=m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "recette n ON (pd.product_id=n.product_id) WHERE n.recette_id = '" . (int)$recette_id . "'";
$product_data = array();
$query = $this->db->query($sql);
foreach ($query->rows as $donneeproduct) {
$product_data = array(
'name' => $donneeproduct['name'],
'manufacturer' => $donneeproduct['manufacturer'],
'imageproduct' => $donneeproduct['imageproduct']
);
}
return $product_data;
}
extrait du 'controller' du module:
- Code: Tout sélectionner
$donneesproduct = $this->model_recette_board->getProduct($product_id);
foreach ($donneesproduct as $donneeproduct) {
$this->data['productarry'][] = array(
'name' => $donneeproduct['name'],
'manufacturer' => $donneeproduct['manufacturer'],
'imageproduct' => $donneeproduct['imageproduct']
);
}
[...]
$this->data['productarry'] = array();
[...]
$this->data['productarry'] = $this->model_recette_board->getProduct($recette_id);
[...]
if ($donneeproduct['imageproduct']) {
$imageproduct = $donneeproduct['imageproduct'];
} else {
$imageproduct = 'no_image.jpg';
}
if ($donneeresto['imageresto']) {
$imageresto = $donneeresto['imageresto'];
} else {
$imageresto = 'no_image.jpg';
}
if ($donneerecette['image']) {
$imagerecette = $donneerecette['image'];
} else {
$imagerecette = 'no_image.jpg';
}
$this->data['thumbproduct'] = $this->model_tool_image->resize($imageproduct, 100, 100 );
Extrait du .tpl du module :
- Code: Tout sélectionner
<p> A BOIRE AVEC </br>
<img src="<?php echo $thumbproduct ?>" alt="Image du vin <?php echo $productarry['name']; ?>"/>
<?php echo $productarry['name']." de ".$productarry['manufacturer']; ?></p>
Dernière édition par jeromec le 20 Août 2011, 07:33, édité 2 fois au total.
Version 1.4.9fr
Template Green-store modifié
Hébergeur 1and1.fr
Template Green-store modifié
Hébergeur 1and1.fr
-
jeromec - Messages: 52
- Inscrit le: 21 Oct 2010, 21:31
Re: Créer un lien vers un produit
Bonjour,
Dans ton module où tu écris ta "recette du moment"', il y a je pense une éditeur HTML qui te permet de rédiger celle-ci, je présume ?
Si c'est le cas, il te suffit de mettre le lien vers ton vin, via cet éditeur.
Exemple :
Dans ton module où tu écris ta "recette du moment"', il y a je pense une éditeur HTML qui te permet de rédiger celle-ci, je présume ?
Si c'est le cas, il te suffit de mettre le lien vers ton vin, via cet éditeur.
Exemple :
- Code: Tout sélectionner
<a href="http://monsite.com">vin machin truc/index.php?route=product/product&product_id=40</a>
- Imaxine
- Messages: 3023
- Inscrit le: 27 Juil 2009, 19:28
Re: Créer un lien vers un produit
Merci.
C'est une solution... mais je préfèrerais que l'on puisse cliquer directement sur le nom du vin qui a été associé à la recette dans l'admin car ce n'est pas moi qui administre le site et saisir un lien dépasse de très loin les compétences de la personne qui s'en occupe...
C'est une solution... mais je préfèrerais que l'on puisse cliquer directement sur le nom du vin qui a été associé à la recette dans l'admin car ce n'est pas moi qui administre le site et saisir un lien dépasse de très loin les compétences de la personne qui s'en occupe...
Version 1.4.9fr
Template Green-store modifié
Hébergeur 1and1.fr
Template Green-store modifié
Hébergeur 1and1.fr
-
jeromec - Messages: 52
- Inscrit le: 21 Oct 2010, 21:31
Re: Créer un lien vers un produit
Pour que je puisse me faire une idée plus concrète, quel est le module qui présente la "recette du moment", est-ce un module fait main ou existant et si c'est le second cas, quel est le lien de celui-ci ?
- Imaxine
- Messages: 3023
- Inscrit le: 27 Juil 2009, 19:28
Re: Créer un lien vers un produit
Merci de te pencher sur mon problème.
J'ai trouvé une solution.
Je fais un autre post ce soir pour compléter ce sujet et j'indique qu'il est résolu.
J'ai trouvé une solution.
Je fais un autre post ce soir pour compléter ce sujet et j'indique qu'il est résolu.
Version 1.4.9fr
Template Green-store modifié
Hébergeur 1and1.fr
Template Green-store modifié
Hébergeur 1and1.fr
-
jeromec - Messages: 52
- Inscrit le: 21 Oct 2010, 21:31
Re: Créer un lien vers un produit
Indique aussi comment tu l'as résolu.
- Imaxine
- Messages: 3023
- Inscrit le: 27 Juil 2009, 19:28
Re: Créer un lien vers un produit
Bonjour,
Voici donc comment je me débrouille.
C'est sans doute ultra simple mais si ça peux éviter à d'autre (mauvais comme moi) de perdre du temps à chercher...
Dans le model, dans la fonction getProduct, je récupère en plus "product_id" et "manufacturer_id" :
Dans le controller, je tape ceci pour l'ajouter dans mon tableau "productarry" :
puis dans la fonction index (toujours dans le controller) :
Enfin dans mon .tpl
Et ça fonctionne même si ça reste à peaufiner ( pour prendre en compte l'URL rewriting par exemple, et vérifier dans le .tpl que les données existent dans productarry, etc )
Voici donc comment je me débrouille.
C'est sans doute ultra simple mais si ça peux éviter à d'autre (mauvais comme moi) de perdre du temps à chercher...
Dans le model, dans la fonction getProduct, je récupère en plus "product_id" et "manufacturer_id" :
- Code: Tout sélectionner
public function getProduct($recette_id) {
$sql = "SELECT DISTINCT *, p.product_id as product_id, p.image AS imageproduct, pd.name AS name,m.manufacturer_id AS manufacturer_id, m.name AS manufacturer FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id=pd.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id=m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "recette n ON (pd.product_id=n.product_id) WHERE n.recette_id = '" . (int)$recette_id . "'";
$product_data = array();
$query = $this->db->query($sql);
foreach ($query->rows as $donneeproduct) {
$product_data = array(
'product_id' => $donneeproduct['product_id'],
'name' => $donneeproduct['name'],
'manufacturer' => $donneeproduct['manufacturer'],
'manufacturer_id' => $donneeproduct['manufacturer_id'],
'imageproduct' => $donneeproduct['imageproduct']
);
}
return $product_data;
}
Dans le controller, je tape ceci pour l'ajouter dans mon tableau "productarry" :
- Code: Tout sélectionner
$donneesproduct = $this->model_recette_board->getProduct($product_id);
foreach ($donneesproduct as $donneeproduct) {
$this->data['productarry'][] = array(
'product_id'=>$donneeproduct['product_id'], 'name' => $donneeproduct['name'],
'manufacturer' => $donneeproduct['manufacturer'],
'manufacturer_id' => $donneeproduct['manufacturer_id'],
'imageproduct' => $donneeproduct['imageproduct'],
);
}
puis dans la fonction index (toujours dans le controller) :
- Code: Tout sélectionner
$this->data['productarry'] = $this->model_recette_board->getProduct($recette_id);
[...]
$donneeproduct = $this->model_recette_board->getProduct($recette_id);
[...]
$this->data['producturl'] = HTTP_SERVER . 'index.php?route=product/product&product_id=';
$this->data['manufacturerurl'] = HTTP_SERVER . 'index.php?route=product/manufacturer&manufacturer_id=';
Enfin dans mon .tpl
- Code: Tout sélectionner
<p> A BOIRE AVEC </br>
<a href="<?php echo $producturl.$productarry['product_id'] ?>"> <img src="<?php echo $thumbproduct ?>" alt="Image du vin <?php echo $productarry['name']; ?>"/></a><a href="<?php echo $producturl.$productarry['product_id'] ?>"> <?php echo $productarry['name'];?></a> de <a href="<?php echo $manufacturerurl.$productarry['manufacturer_id'] ?>"> <?php echo $productarry['manufacturer']; ?></a></p>
Et ça fonctionne même si ça reste à peaufiner ( pour prendre en compte l'URL rewriting par exemple, et vérifier dans le .tpl que les données existent dans productarry, etc )
Version 1.4.9fr
Template Green-store modifié
Hébergeur 1and1.fr
Template Green-store modifié
Hébergeur 1and1.fr
-
jeromec - Messages: 52
- Inscrit le: 21 Oct 2010, 21:31
7 messages
• Page 1 sur 1
Qui est en ligne ?
Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invité(s)