Créer un lien vers un produit

Programmation, discussions et suggestions pour l'amélioration de OpenCart

Créer un lien vers un produit

Messagepar jeromec » 18 Août 2011, 07:10

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:
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
Avatar de l’utilisateur
jeromec
 
Messages: 52
Inscrit le: 21 Oct 2010, 21:31

Re: Créer un lien vers un produit

Messagepar Imaxine » 18 Août 2011, 09:48

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

Messagepar jeromec » 19 Août 2011, 06:17

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...
Image
Version 1.4.9fr
Template Green-store modifié
Hébergeur 1and1.fr
Avatar de l’utilisateur
jeromec
 
Messages: 52
Inscrit le: 21 Oct 2010, 21:31

Re: Créer un lien vers un produit

Messagepar Imaxine » 19 Août 2011, 08:26

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

Messagepar jeromec » 19 Août 2011, 08:44

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.
Version 1.4.9fr
Template Green-store modifié
Hébergeur 1and1.fr
Avatar de l’utilisateur
jeromec
 
Messages: 52
Inscrit le: 21 Oct 2010, 21:31

Re: Créer un lien vers un produit

Messagepar Imaxine » 19 Août 2011, 08:47

Indique aussi comment tu l'as résolu. :D
Imaxine
 
Messages: 3023
Inscrit le: 27 Juil 2009, 19:28

Re: Créer un lien vers un produit

Messagepar jeromec » 20 Août 2011, 07:32

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" :
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
Avatar de l’utilisateur
jeromec
 
Messages: 52
Inscrit le: 21 Oct 2010, 21:31


Retour vers Développement

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invité(s)

cron
Copyright © 2009-2013 OpenCart France - Tous droits réservés