Jump to content
ncandelier

Forcer un retour chariot dans le Nom de son produit

Recommended Posts

Bonjour,

Voila je cherche un moyen de forcer un retour chariot dans le nom du produit.
Effectivement sur ma page de produit (productlist) j'ai des noms de produits de la forme :

Television écran
plat 16/9



alors que je souhaiterai quelque chose de la forme :

Télévision
écran plat 16/9



Je ne sais pas si il est très simple de forcer la prise en charge du code HTML dans le champ "nom du produit" en saisie, ce qui serait l'idéal ou de déclarer une fonction TRUNCATE pares la saisie de 16 caractère par ex.. (cette derniere solution n'est pas tres smart parce que je retrouve le pb sur d'autres produits du catalogue ou le Truncate ne tombera pas au meme endroit..)

Merci pour vos lumières.

Share this post


Link to post
Share on other sites

Salut,

dans mon cas, j'ai fait ça comme ça : (je devais remplacer un + par un retour chariot)

{if isset($product.new) && $product.new == 1}{l s='New'}{/if}{$product.name|regex_replace:"/\+/":"
+ "}



Dans ton cas, si tu dois ajouter le retour chariot après le premier mot, je pense que ceci devrait convenir (si regex_replace gère les $0,$1 etc...) je n'ai pas tester

{if isset($product.new) && $product.new == 1}{l s='New'}{/if}{$product.name|regex_replace:"/^([-a-Z_]+)/":"$1
"}

Share this post


Link to post
Share on other sites

Salut pblanc,

merci pour ta réponse.
Je n'ai pas exactement le même code dans productlist.tpl

J'ai remplacé la partie de code par celle que tu m'a donné (dans productlist.tpl donc)

{$product.name|regex_replace:"/^([-a-Z_]+)/":"$1
"}


mais le nom du produit disparait complètement.

Par contre j'ai essayé avec ton code pour le "+" et cela fonctionne bien.

Pour etre précis en fait, les retours chariots peuvent se situer autant apres le premier mot que le second ou le troisieme etc ..

ex:
Television Led
ecran plat 16/9

le retour peut donc se faire apres le deuxieme mot ici.

Ce qui me donne l'idée, je ne sais pas si c'est possible, de faire interpréter au code la présence d'un caractère (le '+' par exemple) comme un retour chariot imposé, mais sans l'afficher ... ( ce qui reviendrait en fait a insérer un

...).. ou encore afficher le caractère "+" en couleur blanche pour tromper l'affichage :) comme ceci :

{$product.name|regex_replace:"/\+/":"
 + "}



mais mon code ne fonctione pas la, j'ai une page de produit blanche.

Share this post


Link to post
Share on other sites

idem avec $0

la piste du

{$product.name|regex_replace:"/\+/":"
+"}



je pense que c'est du au fait que le css impose une couleur.

Share this post


Link to post
Share on other sites

je me répond a moi même :

tout simplement :

 {$product.name|regex_replace:"/\+/":"
"}



ce qui a pour effet de provoquer un retour chariot des la présence d'un + dans le titre du produit, sans afficher le +

Merci pour la piste :)

Share this post


Link to post
Share on other sites

le problème avec ça c'est que tu risques de retrouver des + a des endroits où tu ne le souhaites pas.
si tu veux le retour chariot apres le premier mot, essaye plutôt :

{$product.name|regex_replace:"/^(\w+)/":"\\1
"} 



de cette façon tu ne devrais pas avoir besoin d'ajouter un + dans le nom de ton produit

Share this post


Link to post
Share on other sites

Merci

En fait avec ce code, le "+" que j'ajoute est remplacé par un retour chariot et n'apparait pas , donc c'est niquel car je peux non seulement l'ajouter apres le premier mot mais également le second, troisieme etc ... ce qui est souvent le cas dans mon catalogue
Ce qui répond a me demande initiale.
Je te remercie pour cette piste.

Bonne nuit.

Share this post


Link to post
Share on other sites

Bonjour a tous,
Je viens de tester le code suivant:

{$product.name|regex_replace:"/^(\w+)/":"\\1
"} 



Et cela fonctionne! Merci.
Mais je veux faire un retour à la ligne à partir du deuxième mot. Quelle modification dois-je faire sur le code?

Merci d'avance.

Share this post


Link to post
Share on other sites
{$product.name|regex_replace:"/^(\w+\s+\w+)/":"\\1
"}


devrait te satisfaire

Share this post


Link to post
Share on other sites

Bonjour,

 

Ce post concerne la solution que je cherche exactement. J'utilise prestashop 1.6.0.14, mais je n'arrive pas à faire fonctionner la solution proposée en modifiant mon fichier product-list.tpl. En fait, le seul résultat que j'obtient c'est l'affichage 2 fois du titre produit.

 

Quelqu'un pour m'aider?

 

 

Share this post


Link to post
Share on other sites

Bonjour

Le post date un peu mais sur une version 1.6.1.x j'ai utilisé le code suivant avec succès :

{$product.name|regex_replace:"/\+/":"<br>"}

 

ou plus simplement

{$product.name|replace:"+":"<br>"}

 

 

Si cela peut servir à quelqu'un ...

Edited by romelik (see edit history)

Share this post


Link to post
Share on other sites

Et sous Prestashop 1.7, ça marche avec ce code-ci :

{$product.name|replace:'+':'<br>' nofilter}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

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