Jump to content

[Résolu]Rajouter 2 lignes description_short dans product_list.php


Recommended Posts

Bonjour,

 

J'ai besoin de rajouter deux lignes supplémentaires dans la product_list.tpl.

 

Pour rajouter un champ dans la fiche produit j'ai utilisé le tuto suivant http://www.webbax.ch...ice-prestashop/

 

Les champs que j'ai rajouté fonctionnent très bien dans le front et back office de la fiche produit.

 

J'ai ensuite rajouté le code suivant dans le doc product_list.tpl :

<div id="description_short">

<p class="product_desc"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short|truncate:65:'...'|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}">{$product.description_short|truncate:75:'...'|strip_tags:'UTF-8'}</a></p>

</div>

<div id="description_short2">

<p class="product_desc2"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short2|truncate:65:'...'|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}">{$product.description_short2|truncate:75:'...'|strip_tags:'UTF-8'}</a></p>

</div>

<div id="description_short3">

<p class="product_desc3"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short3|truncate:65:'...'|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}">{$product.description_short3|truncate:75:'...'|strip_tags:'UTF-8'}</a></p>

</div>

 

 

Le contenu de $product.description_short2 et $product.description_short3 n'apparaîssent pas dans la product_list dans le front office. J'ai prévu l'emplacement, si je répète 2 autres fois $product.description_short j'ai bien 3 lignes (identiques bien sur).

 

$product.description_short2 et $product.description_short3 apparaissent très bien dans la fiche produit dans le front office.

 

Pour rajouter ces éléments dans la product_list je sais qu'il faut rajouter un smarty assign dans la class product.php. Mais je ne sais pas où le positionner, je l'ai mis à :

 

public function getTranslationsFieldsChild()

self::validateFieldsLang();

global $smarty;

$smarty->assign('description_short2','description_short3', $fields );

$smarty->display(dirname(__FILE__).'product-list.tpl');

 

 

Je ne dois pas bien la positionner ou avoir la bonne syntax. (voir fichier joint). j'ai essayé plusieurs solutions, j'ai forcé la compilation Smarty et pas de cache.

 

Est-ce que quelqu'un peut m'aider à résoudre ce problème ?

 

Je vous remercie.

Cordialement

eljouarz

Product.php

Edited by eljouarz (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Je n'ai pas regardé le tuto mais je ne pense pas qu'il faille assigner les 2 variables. Il faut :

 

- Ajouter les 2 champs dans la bdd

- Ajouter les 2 champs comme attribut de la classe product.php

- Ajouter les champs dans les tableaux de validation et d'attributs

- Ajouter les champs dans la méthode de récupération des champs (dans la classe product.php)

 

Pour mieux comprendre, regarde comme le champs name est utilisé dans les 4 endroits mentionnés ci-haut

 

Si tu ne te retrouves pas, fais moi signe.

 

Cordialement,

Link to comment
Share on other sites

Bonjour,

 

Justement le tuto servait à rajouter les points de ton mail.

 

Comment puis t'envoyer le fichier avec les lignes surlignées, pour vérifier que je n'ai rien oublié, si tu veux bien.

 

 

Merci pour ton aide.

 

eljouarz

Link to comment
Share on other sites

Bonsoir,

 

J'ai reçu tes 2 fichiers et j'ai quelques remarques

 

- On n'a pas besoin d'ajouter des champs multilingues dans le tableau $fieldsValidate

 

- Pour surcharger un fichier, il faut laisser juste ce qui (méthodes) a été modifié [Ca ne pose pas de gros pb à part pour les constantes que je vois définies au début : _CUSTOMIZE_FILE_ et _CUSTOMIZE_TEXTFIELD_]

 

- Je constate que le fichier adminProduct.php (de admin/tab) n'aurait pas été modifié. Dans ce fichier il faut voir comment le champs ''short description" et reproduire 2 cas pour ''short description2" et ''short description3". Cette partie ressemblera à ce qui est dans mon fichier joint (j'ai dû commencer par le cas de ''short description" pour que tu t'y retrouves)

 

- J'ai aussi mis du sql dans le fichier joint.

 

Vois ces détails et je pense que tout ira bien.

 

Cordialement,

Link to comment
Share on other sites

Bonjour,

 

Je vois le problème maintenant. Je ne comprenais pas que tu voulais absolument afficher aussi les deux champs dans la liste des produits.

 

Pour faire cela, il te faut :

 

- Corriger l'orthographe de description_shor3 en description_short3 dans product-list

 

- Surcharger la classe Category.php

 

- Surcharger la fonction getProducts

 

- Modifier la fonction getProducts en y ajoutant la sélection de tes 2 champs. Tu auras donc quelque chose comme ceci :

 

$sql =

SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`description_short2`, pl.`description_short3`, ...

 

 

Cordialement,

Edited by dev-prestashop (see edit history)
Link to comment
Share on other sites

Bonsoir,

 

Je reviens pour te dire que j'ai mis tous tes fichiers dans un nouveau prestashop 1.4.7.3 et tout s'affiche bien comme il faut. Les méthodes ont été respectées.

 

Tu aurais un problème de cache et je te conseille alors de faire ceci :

 

- Forcer la compilation de ton prestashop : Dans l'onglet Préférences > Performances (Actives 'forcer la compilation' et désactives 'cache')

 

- Va aussi dans la dossier '\tools\smarty\compile' et supprime tous les fichiers sauf 'index.php'

 

Ça devrait aller.

 

Cordialement,

Link to comment
Share on other sites

bonjour,

 

je me retrouve avec un pb équivalent :/ J'ai rajouté un champ dans la table 'product_lang', ce champ ressort bien sur la home (homefeatured) et sur la page produit mais impossible de l'affficher dans product-list.tpl... J'ai modifié le Category.php (en rajoutant mon champ mais si je fais un echo dans la fonctoin getProducts dans Category.php je vois que ce fichier n'est pas appelé sur la listge mais sur la home... Du coup je n'y comprends plus rien... Quand je fais un debug smarty, je vois ma varaible dans la collection scenes mais pas dans la collection produits ???

 

Avez vous une idée ?

 

merci et désolé d'avoir junké le post...

Link to comment
Share on other sites

Bonsoir olivierM,

Le sql que vous demandez se trouve dans la méthode getProducts de la classe Category.php.

 

Pensez à la surcharger avant de modifier. Et si vous avez des modules tiers installé comme la navigation à facette, le problème peut provenir de là.

 

Cordialement,

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...