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

Onglet supplémentaire dans la fiche produit

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

Onglet supplémentaire dans la fiche produit

Messagepar LeorLindel » 16 Avr 2010, 04:16

Suite à un souhait exprimé par CORSIDISCOUNT, voici une modification de code qui vous permet d'ajouter un onglet supplémentaire à la fiche produit.
J'ai nommé cet onglet "Caractéristiques", le nom est abrégé dans l'onglet de la fiche produit du catalogue par mesure de place (voir l'image de la fiche produit du catalogue, plus bas).

Il vous faut créer un champ supplémentaire dans la table "product_description" en injectant cette requête via l'onglet "sql" situé dans phpMyAdmin de votre base de données :

ALTER TABLE `product_description` ADD `characteristic` text collate utf8_bin NOT NULL;


Dans le fichier upload\admin\controller\catalog\product.php,
Chercher cette ligne :
Code: Tout sélectionner
      $this->data['entry_tags'] = $this->language->get('entry_tags');
et dessous ajouter celle-ci :
Code: Tout sélectionner
      $this->data['entry_characteristic'] = $this->language->get('entry_characteristic');

Dans le fichier upload\admin\language\french\catalog\product.php,
Ajouter cette ligne :
Code: Tout sélectionner
$_['entry_characteristic']    = 'Caractéristiques :';

Dans le fichier upload\admin\view\template\catalog\product_form.tpl,
chercher ces lignes :
Code: Tout sélectionner
            <tr>
              <td><?php echo $entry_description; ?></td>
              <td><textarea name="product_description[<?php echo $language['language_id']; ?>][description]" id="description<?php echo $language['language_id']; ?>"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['description'] : ''; ?></textarea></td>
            </tr>
et dessous ajouter celles-ci :
Code: Tout sélectionner
            <tr>
              <td><?php echo $entry_characteristic; ?></td>
              <td><textarea name="product_description[<?php echo $language['language_id']; ?>][characteristic]"  cols="125" rows="5"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['characteristic'] : ''; ?></textarea></td>
            </tr>


Dans le fichier upload\admin\model\catalog\product.php,
chercher cette ligne :
Code: Tout sélectionner
         $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
et remplacer la par celle-ci :
Code: Tout sélectionner
         $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', characteristic = '" . $this->db->escape($value['characteristic']) . "'");
chercher cette ligne :
Code: Tout sélectionner
         $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
et remplacer la par celle-ci :
Code: Tout sélectionner
         $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', characteristic = '" . $this->db->escape($value['characteristic']) . "'");
chercher cette ligne :
Code: Tout sélectionner
            'description'      => $result['description']
et remplacer la par celles-ci :
Code: Tout sélectionner
            'description'      => $result['description'],
            'characteristic'   => $result['characteristic']

Dans le fichier upload\catalog\controller\product\product.php
chercher ces lignes :
Code: Tout sélectionner
         if (isset($this->request->get['description'])) {
            $url .= '&description=' . $this->request->get['description'];
         }
et dessous ajouter celles-ci :
Code: Tout sélectionner
         if (isset($this->request->get['characteristic'])) {
            $url .= '&characteristic=' . $this->request->get['characteristic'];
         }
         
chercher ces lignes :
Code: Tout sélectionner
         if (isset($this->request->get['description'])) {
            $url .= '&description=' . $this->request->get['description'];
         }
            
et dessous ajouter celles-ci :
Code: Tout sélectionner
         if (isset($this->request->get['characteristic'])) {
            $url .= '&characteristic=' . $this->request->get['characteristic'];
         }

chercher cette ligne :
Code: Tout sélectionner
         $this->data['tab_description'] = $this->language->get('tab_description');
et dessous ajouter celle-ci :
Code: Tout sélectionner
         $this->data['tab_characteristic'] = $this->language->get('tab_characteristic');
chercher cette ligne :
Code: Tout sélectionner
         $this->data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
et dessous ajouter celle-ci :
Code: Tout sélectionner
         $this->data['characteristic'] = html_entity_decode($product_info['characteristic'], ENT_QUOTES, 'UTF-8');
chercher ces lignes :
Code: Tout sélectionner
         if (isset($this->request->get['description'])) {
            $url .= '&description=' . $this->request->get['description'];
         }
et dessous ajouter celles-ci :
Code: Tout sélectionner
         if (isset($this->request->get['characteristic'])) {
            $url .= '&characteristic=' . $this->request->get['characteristic'];
         }


Dans le fichier upload\catalog\language\french\product\product.php
ajouter cette ligne :
Code: Tout sélectionner
$_['tab_characteristic']  = 'Caract.';

Dans le fichier upload\catalog\view\theme\default\template\product\product.php
chercher cette ligne :
Code: Tout sélectionner
    <div class="tabs"><a tab="#tab_description"><?php echo $tab_description; ?></a><a tab="#tab_image"><?php echo $tab_image; ?></a><a tab="#tab_review"><?php echo $tab_review; ?></a><a tab="#tab_related"><?php echo $tab_related; ?></a></div>
et remplacer la par celle-ci :
Code: Tout sélectionner
    <div class="tabs"><a tab="#tab_description"><?php echo $tab_description; ?></a><a tab="#tab_characteristic"><?php echo $tab_characteristic; ?></a><a tab="#tab_image"><?php echo $tab_image; ?></a><a tab="#tab_review"><?php echo $tab_review; ?></a><a tab="#tab_related"><?php echo $tab_related; ?></a></div>
chercher cette ligne :
Code: Tout sélectionner
    <div id="tab_description" class="tab_page"><?php echo $description; ?></div>
et dessous ajouter celle-ci :
Code: Tout sélectionner
    <div id="tab_characteristic" class="tab_page"><?php echo $characteristic; ?></div>

Comme vous le constaterez sur l'image de l'admin je n'ai pas inclus l'éditeur HTML "ckeditor" parce que je n'ai pas voulu chercher mais aussi parce qu' il vous suffit de mettre votre texte en code source HTML pour qu'il soit interprété.

Voila ce que cela donne en images :
Fichiers joints
characteristic_catalog.png
characteristic_catalog.png (172.59 Kio) Vu 4956 fois
characteristic_admin.png
characteristic_admin.png (77.3 Kio) Vu 4954 fois
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: Onglet supplémentaire dans la fiche produit

Messagepar CORSIDISCOUNT » 16 Avr 2010, 05:58

Merci pour ton travail !!
V 1.4.7 Fr
CORSIDISCOUNT
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 19
Inscription: 07 Avr 2010, 12:20

Re: Onglet supplémentaire dans la fiche produit

Messagepar CORSIDISCOUNT » 16 Avr 2010, 06:32

Et je confirme que cela fonctionne parfaitement une fois mis en place !!
Une fois de plus, merci beaucoup !
V 1.4.7 Fr
CORSIDISCOUNT
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 19
Inscription: 07 Avr 2010, 12:20

Re: Onglet supplémentaire dans la fiche produit

Messagepar Pilou » 17 Avr 2010, 10:01

Bonjour,

J'ai une bête question:

Ces modifications sont-elles à refaire en cas de mise à jour d'Opencart ?

Merci d'avance
OpenCart v1.4.8b Fr - O2Switch
Avatar de l’utilisateur
Pilou
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 42
Inscription: 14 Avr 2010, 10:36
Localisation: Belgique

Re: Onglet supplémentaire dans la fiche produit

Messagepar LeorLindel » 17 Avr 2010, 13:25

Oui tout à fait puisqu'elles ne figurent pas dans la version originelle, ce sont un développement spécifique.

C'est pour cela qu'il est nécessaire que vous ayez un logiciel de comparaison de fichier. Personnellement j'utilise WinMerge qui est gratuit : http://winmerge.org/, et qui me convient. D'autres sont de meilleure facture mais payants.
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: Onglet supplémentaire dans la fiche produit

Messagepar CORSIDISCOUNT » 17 Avr 2010, 15:05

Moi j'utilise "Compare it" qui est pas mal également
V 1.4.7 Fr
CORSIDISCOUNT
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 19
Inscription: 07 Avr 2010, 12:20

Re: Onglet supplémentaire dans la fiche produit

Messagepar Christouphh » 24 Fév 2012, 15:13

Bonjour,
j'ai tenté d'utiliser votre tutoriel pour mettre en place en nouvel onglet: "recette", seulement je rencontre quelque problème.

Premièrement, lorsque je suis sur la partie admin que je saisi du texte pour pour nouvel onglet, celui-ci n'est pas enregistré en bdd. (je n'ai aucun message d'erreur.)
[Edit]Pardon, le texte est bien enregistré en BDD [/edit]
Deuxièmement, lorsque je suis sur la partie Catalog, j'ai bien le nouvel onglet qui s'affiche mais pas le contenu.
Là par-contre j'ai un message d'erreur :
Notice: Undefined index: recette in ***/web/catalog/controller/product/product.php on line 303

qui correspond à cette ligne :
Code: Tout sélectionner
$this->data['recette'] = html_entity_decode($product_info['recette'], ENT_QUOTES, 'UTF-8');


Je confirme bien que j'ai modifié dans l'ensemble du tuto "characteristic" par "recette".

Je précise que je suis sur la version 1.5.1.


Merci d'avance de votre aide


/*-------------------- SOLUTION--------------*/
dans catalog\model\catalog\product.php

il faut ajouter cette ligne
Code: Tout sélectionner
'recette'         => $query->row['recette'],


ou par rapport au tuto :
Code: Tout sélectionner
'characteristic' => $query->row['characteristic'],
Dernière édition par Christouphh le 24 Fév 2012, 15:42, édité 4 fois.
OpenCart 1.5.1 || template : defaut
Christouphh
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 4
Inscription: 08 Déc 2011, 23:01

Re: Onglet supplémentaire dans la fiche produit

Messagepar LeorLindel » 24 Fév 2012, 15:29

Bonjour,

Pour ton problème, cela me fait penser qu'il doit manquer la variable "recette" dans catalog/model/product/product.php dans les requêtes "INSERT", "DELETE" et "UPDATE' qui mettent à jour la base de données
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: Onglet supplémentaire dans la fiche produit

Messagepar Niecbaso » 24 Fév 2012, 23:28

Super tutoriel en effet! Merci! :D
Vs Opencart: OpenCart v1.5.1Fr
Hébergeur OVH
Niecbaso
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 18
Inscription: 22 Fév 2012, 00:24

Re: Onglet supplémentaire dans la fiche produit

Messagepar dan » 30 Juil 2012, 13:15

Hello!

Tout d'abord merci pour ce SUPER tuto ;)

J'ai une question, qui s'avère être assez ardue je penses. Comment faire pour que le champ ajouté à mes tabs soit administrables avec un éditeur WISIWIG? Je suis pas très friand des solutions coûteuse car je préfère apprendre à développer. J'ai vu que des postes proposaient un module et je ne trouve aucune doc à ce sujet..Du coup ça coince..Y a-t-il des cracks qui peuvent m'éclairer un peu sur le sujet ? 8-)

Bref je sais que je déterre quelque peu ce poste mais ça me semblerai intéressant d'ajouter cette petite touche de folie ;)

Un grand MERCI d'avance à tous ceux qui pourront m'aider! :mrgreen:
Débutant sur Opencart... Mais ne m'appelez pas noob s'il vous plaît ;)

hébergeur : oxito
version : 1.5.1 VERSION FRANCAISE (FR)
dan
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 33
Inscription: 16 Oct 2010, 17:32


Retourner vers Développement

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron