Nous ne répondons seulement qu'aux sujets dont l'auteur a complété sa signature [Lire]



Vous avez des soucis avec votre Opencart v1.5.x, nous pouvons résoudre vos problèmes,
contactez le Bureau France !

par tel: 0 891 690 175 ou par
email

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û 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û 2011, 07:33, édité 2 fois.
Version 1.4.9fr
Template Green-store modifié
Avatar de l’utilisateur
jeromec
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 51
Inscription: 21 Oct 2010, 21:31

Re: Créer un lien vers un produit

Messagepar LeorLindel » 18 Aoû 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>
Image
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Quand le sujet est résolu, pensez à ajouter la petite coche verte Image dans le titre initial en éditant votre premier message et non dans votre dernière réponse.
Merci


Toutes les extensions commerciales (templates ou modules payants) ne peuvent pas faire l'objet d'ouverture de sujet, prière de bien vouloir s'adresser au concepteur en cas de problème ou demande de renseignements.

Seul, on avance plus vite, à plusieurs on avance plus loin.
Avatar de l’utilisateur
LeorLindel
Administrateur
Administrateur
 
Messages: 4227
Inscription: 19 Fév 2010, 13:44
Localisation: Lutéce

Re: Créer un lien vers un produit

Messagepar jeromec » 19 Aoû 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é
Avatar de l’utilisateur
jeromec
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 51
Inscription: 21 Oct 2010, 21:31

Re: Créer un lien vers un produit

Messagepar LeorLindel » 19 Aoû 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 ?
Image
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Quand le sujet est résolu, pensez à ajouter la petite coche verte Image dans le titre initial en éditant votre premier message et non dans votre dernière réponse.
Merci


Toutes les extensions commerciales (templates ou modules payants) ne peuvent pas faire l'objet d'ouverture de sujet, prière de bien vouloir s'adresser au concepteur en cas de problème ou demande de renseignements.

Seul, on avance plus vite, à plusieurs on avance plus loin.
Avatar de l’utilisateur
LeorLindel
Administrateur
Administrateur
 
Messages: 4227
Inscription: 19 Fév 2010, 13:44
Localisation: Lutéce

Re: Créer un lien vers un produit

Messagepar jeromec » 19 Aoû 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é
Avatar de l’utilisateur
jeromec
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 51
Inscription: 21 Oct 2010, 21:31

Re: Créer un lien vers un produit

Messagepar LeorLindel » 19 Aoû 2011, 08:47

Indique aussi comment tu l'as résolu. :D
Image
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Quand le sujet est résolu, pensez à ajouter la petite coche verte Image dans le titre initial en éditant votre premier message et non dans votre dernière réponse.
Merci


Toutes les extensions commerciales (templates ou modules payants) ne peuvent pas faire l'objet d'ouverture de sujet, prière de bien vouloir s'adresser au concepteur en cas de problème ou demande de renseignements.

Seul, on avance plus vite, à plusieurs on avance plus loin.
Avatar de l’utilisateur
LeorLindel
Administrateur
Administrateur
 
Messages: 4227
Inscription: 19 Fév 2010, 13:44
Localisation: Lutéce

Re: Créer un lien vers un produit

Messagepar jeromec » 20 Aoû 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é
Avatar de l’utilisateur
jeromec
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 51
Inscription: 21 Oct 2010, 21:31


Retourner vers Développement

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron