Jump to content
papich

Afficher les tags ou visual tag sur la page produit ou liste de produit 1.5.x?

Recommended Posts

Bonjour,

Je cherche à montrer les tags sur la page produit pour que chaque produit est ses propres tags visible sur chaque fiche

merci

Edited by papich (see edit history)

Share this post


Link to post
Share on other sites

personne ne sait comment afficher les tags entrés dans la création du produit?

Share this post


Link to post
Share on other sites

Il est possible d'obtenir les tags d'un produit via l'appel statique suivant: Tag::getProductTags((int)$this->id);

 

Ensuite, il faut assigner ceux-ci à smarty et les exploiter à l'endroit voulu.

 

Edit

Encore mieux, ils le sont déjà ! ;)

Edited by J. Danse (see edit history)

Share this post


Link to post
Share on other sites

Voici à ajouter dans override dans ProductController.php :

 

 $productTags = Tag::getProductTags($this->product->id);
 $productTags = $productTags[intval($this->context->language->id)];
 $this->context->smarty->assign('productTags', $productTags);

 

ensuite vous récupérez les tag dans product.tpl avec :

 

{foreach from=$productTags item=productTag name=productTags}
  <strong>{$productTag}</strong>{if !$smarty.foreach.productTags.last}, {/if}
{/foreach}

Edited by LeGastronome (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

 

 

En fait il n'y a rien à surcharger pour prestashop 1.5 !

Dans le template produit (le product.tpl du dossier de ton thème), il suffit d'ajouter ce qui suit là où tu veux faire apparaître les tags :

{assign var='productTags' value=$product->tags}
{foreach from=$productTags[5] item=productTag name=productTags}
   <a href="http://www.boutique.com/recherche?tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
{/foreach}

 

J'ai rajouté un lien dans le code histoire qu'on puisse rechercher les produits avec un tag similaire en cliquant sur n'importe lequel des tags.

 

Par contre je ne comprends pas pourquoi le product->tags contient une array à deux niveau et que seul le niveau [5] de la première est utilisé Ôo

Edited by Stabbquadd (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

Car il y a cinq langues par défaut dans ton shop, je présume. Et ainsi, la langue 5 est utilisée. A savoir que l'ID 5 est (pour une 1.5.2.0) le français ;)

Share this post


Link to post
Share on other sites

Ah ben voilà, comme ça c'est clair :)

 

Donc le mieux serait de remplacer le [5] par l'id de la langue finalement !

 

Le code devient donc ceci :

{assign var='id_lang' value=Language::getIdByIso($lang_iso)}
   {assign var='productTags' value=$product->tags}
   {l s='Ce produit a les tags suivant :'}
   {foreach from=$productTags[$id_lang] item=productTag name=productTags}
   <a href="http://www.boutique.com/recherche?tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
   {/foreach}

Edited by Stabbquadd (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Non, en fait on peut faire mieux, en remplaçant l'url par base_dir afin que n'importe qui n'ait plus qu'à copier coller le code sans l'éditer :

 

   {assign var='id_lang' value=Language::getIdByIso($lang_iso)}
   {assign var='productTags' value=$product->tags}
   {l s='Ce produit a les tags suivant :'}
   {foreach from=$productTags[$id_lang] item=productTag name=productTags}
   <a href="{$base_dir}recherche?tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
   {/foreach}

 

 

Voilà, je pense que le sujet est clos !

Share this post


Link to post
Share on other sites

Merci j'ai essayé et j'ai " Ce produit a les tags suivants"

 

Mais quand je clique dessus j'ai une erreur...

 

J'ai utilisé le dernier code proposer

Edited by papich (see edit history)

Share this post


Link to post
Share on other sites

Déjà vous n'avez pas une page blanche, c'est une bonne chose :)

 

Quelle version de prestashop utilisez-vous ?

Ce code est pour la 1.5 et je l'ai testé sous 1.5.2 !

 

Chez moi il donne ceci : http://www.feeduthe....e-cannelle.html

 

Si vous n'obtenez pas les tags, une des deux assignations du haut du code ne doit pas marcher, reste à trouver laquelle en faisant un print_r sur chacune des deux valeurs afin de trouver le problème.

Je vous invite à rajouter ceci en dessous du code :

Variables de test :<br /><br />
{$id_lang|@print_r}<br /><br />
{$productTags|@print_r}

 

Donnez-nous le résultat et nous verrons bien ce qui ne fonctionne pas :)

Edited by Stabbquadd (see edit history)

Share this post


Link to post
Share on other sites

Merci pour ta réponse je suis sous ps 1.5.2

 

losque je copie ton code j'ai ce que je t'ai mis en pièce jointe

 

Ai t'il possible de mettre en forme ces tags avec du css?

 

J'ai l'impression depuis que j'ai mis ce code que la boutique tourne au ralenti je suis en local sur easy php 12.1

post-19050-0-76755400-1353447770_thumb.jpg

Share this post


Link to post
Share on other sites

Alors j'avoue être perplexe.

Les tags des langues 1, 2, 4 et 5 sont renseignés.

La langue active dans ta page est la langue... 51 ???

Comme le pastis, mais je suis pas sûr que ça aide.

 

Peux-tu faire remplacer $id_lang par $lang_iso dans les variables de test ?

Share this post


Link to post
Share on other sites

Merci mais cette fois ci j'ai

 


Ce produit a les tags suivant : [url="http://127.0.0.1/prestashop/recherche?tag=ipod%20touch%20tactile"][b]ipod touch tactile[/b][/url] Variables de test :

fr1

Array ( [1] => Array ( [0] => Ipod touch ) [2] => Array ( [0] => Ipod touch ) [4] => Array ( [0] => Ipod touch ) [5] => Array ( [0] => ipod touch tactile ) ) 1

 

En fait j'ai copié ce code dans le product.tpl de mon thème qui est celui par défaut à la ligne 491

 

{if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}
  {assign var='id_lang' value=Language::getIdByIso($lang_iso)}
{assign var='productTags' value=$product->tags}
{l s='Ce produit a les tags suivant :'}
{foreach from=$productTags[$id_lang] item=productTag name=productTags}
	   <a href="{$base_dir}recherche?tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
{/foreach}
Variables de test :<br /><br />
{$lang_iso|@print_r}<br /><br />
{$productTags|@print_r}
<!-- description and features -->

 

J'ai remarqué un truc aussi quand je survole le tag qui est dans ma page produit j'ai

127.0.0.1/prestashop/recherche?tag=nom du tag

 

Alors que dans le bloc tag le lien est

127.0.0.1/prestashop/index.php?controller=search&tag=nom du tag

 

Peut etre parce que j'ai activé la redirection d'url?

Edited by papich (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Dans ce cas tu devrais modifier le code pour avoir :

 

{assign var='id_lang' value=Language::getIdByIso($lang_iso)}
   {assign var='productTags' value=$product->tags}
   {l s='Ce produit a les tags suivant :'}
   {foreach from=$productTags[$id_lang] item=productTag name=productTags}
	   <a href="{$base_dir}index.php?controller=search&tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
   {/foreach}

  • Like 1

Share this post


Link to post
Share on other sites

Merci à tous le dernier code proposé par Stabbquadd fonctionne parfaitement en local sous 1.5.2

 

Est il possible de ne pas afficher le texte lorsqu'il n'y a pas de tags?

 

reste plus qu'à insérer un code pour le customiser avec du css et ce serait top

Edited by papich (see edit history)

Share this post


Link to post
Share on other sites

Pour ne pas afficher le code lorsqu'il n'y a pas de tag, ceci devrait fonctionner (non testé) :

 

{if isset($product->tags) && $product->tags}
{assign var='id_lang' value=Language::getIdByIso($lang_iso)}
{assign var='productTags' value=$product->tags}
{l s='Ce produit a les tags suivant :'}
{foreach from=$productTags[$id_lang] item=productTag name=productTags}
	   <a href="{$base_dir}index.php?controller=search&tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
{/foreach}
{/if}

 

 

Pour le product-list.tpl, essayez peut-être comme ça (non testé) :

 

 

{if isset($product.tags) && $product.tags}
{assign var='id_lang' value=Language::getIdByIso($lang_iso)}
   {assign var='productTags' value=$product.tags}
   {l s='Ce produit a les tags suivant :'}
   {foreach from=$productTags[$id_lang] item=productTag name=productTags}
          <a href="{$base_dir}index.php?controller=search&tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
   {/foreach}
{/if}

  • Like 1

Share this post


Link to post
Share on other sites

Merci effectivement ca fonctionne mais quelle différence entre ce code

{assign var='id_lang' value=Language::getIdByIso($lang_iso)}
{assign var='productTags' value=$product->tags}
{l s='Ce produit a les tags suivant :'}
{foreach from=$productTags[$id_lang] item=productTag name=productTags}
			   <a href="{$base_dir}index.php?controller=search&tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
{/foreach}

 

et celui ci le dernier que tu as donné ils ont l'air différent

{if isset($product->tags) && $product->tags}
{assign var='id_lang' value=Language::getIdByIso($lang_iso)}
	{assign var='productTags' value=$product->tags}
	{l s='Ce produit a les tags suivant :'}
	{foreach from=$productTags[$id_lang] item=productTag name=productTags}
			   <a href="{$base_dir}index.php?controller=search&tag={$productTag|escape:'url'}"><strong>{$productTag}</strong></a>{if !$smarty.foreach.productTags.last}, {/if}
	{/foreach}
{/if}

 

Pour le productlist le code est tronqué donc j'ai pensé que c'est le même que le premier mais ca ne marche pas

 

S'aurais tu comment intégrer un visual tag pour la livraison gratuite par exemple avec référence à un CMS par exemple? http://www.prestashop.com/forums/topic/217915-lie-page-cms-ou-texte-html-au-module-reassurance/page__fromsearch__1

 

J'aimerais peut etre déplacé le bloc réassurance sur le pied du produit...

Edited by papich (see edit history)

Share this post


Link to post
Share on other sites

Dans le dernier code il y a un {if} qui teste si il y a des tags ou pas.

S'il n'y en a pas, tout ce qui est entre le {if} et le {/if} ne s'exécute pas !

 

Pour le product-list je ne comprends pas. Le code est tronqué où ? Moi je le vois en entier :s

 

Je n'ai pas bien compris non plus la demande du visual tag avec référence à un CMS, désolé.

  • Like 1

Share this post


Link to post
Share on other sites

Désolé mais sur mon navigateur j'avais le code

{if isset($product.tags) && $product.tags}
{assign....

Mais maintenant il s'affiche correctement je vais essayé avec celui la et je vous tiens au courant (j'ai testé ca ne marche pas ou je l'ai collé au mauvais endroit vers quelle ligne pour etre sous la description?)

 

Avez vous réfléchi à la seconde partie de mon post?

Edited by papich (see edit history)

Share this post


Link to post
Share on other sites

salut Stabbquadd

 

je suis sur 1.5.3.1

 

aucun de tes codes que j'ajoute sur mon product.tpl ne marche.

 

il n'y a aucun tag qui s'affiche.

 

une idée??

Share this post


Link to post
Share on other sites

ça marche :)

 

c'est mon product.tpl qui posait un problème. merci pour cette astuce

Share this post


Link to post
Share on other sites

Bonjour à tous,

 

Archi débutante sur presta...et en informatique pour dire la vérité...

Pourriez vous être un peu plus "enfantins" dans vos explications?

 

Quelqu'un aurait il la patience de reprendre à zéro les explications?

 

Ma version Presta 1.4.6.2

J'ai installé le module [PSF] Tags des produits v1.2 par Pierre-Yves

 

Jusque là tout va bien, je peux mettre des tags dans mon catalogue

 

PROBLEME : rien ne s'affiche sur mes produits

J'ai essayé différentes modif que vous indiquiez mais rien n'y fait...

 

Visiblement 2 fichiers sont à modifier : product.tpl qui se trouve dans mon thème et productControoler.php ou alors product list

A quelle ligne se collent les codes?

 

J'ai vraiment besoin de tout tenter pour ma boutique...surtout depuis que leboncoin est devenu payant...

 

MErci à tous de votre aide précieuse

Share this post


Link to post
Share on other sites

Bonjour à tous,

 

Archi débutante sur presta...et en informatique pour dire la vérité...

Pourriez vous être un peu plus "enfantins" dans vos explications?

 

Quelqu'un aurait il la patience de reprendre à zéro les explications?

 

Ma version Presta 1.4.6.2

J'ai installé le module [PSF] Tags des produits v1.2 par Pierre-Yves

 

Jusque là tout va bien, je peux mettre des tags dans mon catalogue

 

PROBLEME : rien ne s'affiche sur mes produits

J'ai essayé différentes modif que vous indiquiez mais rien n'y fait...

 

Visiblement 2 fichiers sont à modifier : product.tpl qui se trouve dans mon thème et productControoler.php ou alors product list

A quelle ligne se collent les codes?

 

J'ai vraiment besoin de tout tenter pour ma boutique...surtout depuis que leboncoin est devenu payant...

 

MErci à tous de votre aide précieuse

Share this post


Link to post
Share on other sites

Je me permets de remonter ce topic si quelqu'un à essayer sous ps 1.5.6?

 

Comment associer ces tags à une image?

 

Merci

Share this post


Link to post
Share on other sites

Hello,

 

Je fais remonter ce post... Est-ce que quelqu'un a trouvé un moyen d'afficher les tags sur product-list.tpl ?

Sur product.tpl aucun problème grace au code de Stabbquadd

 

Merci :-)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More