Commandesgrp Posted December 13, 2011 Share Posted December 13, 2011 Bonjour, Je m'arrache un peu les cheveux depuis hier en essayant de cacher du texte dans l'éditeur de description des produits du BO pour les personnes qui ne sont pas inscrites uniquement. C'est à dire que le texte deviendrait visible lorsque les personnes s’identifient. J'ai réussi à trouver un code qui fonctionne en PHP : {if $logged} texte {/if} ça marche très bien lorsque je l'insère dans product.tpl par exemple, mais du coup le même texte est affiché sur toutes les fiches produits, alors que ce que je souhaite c'est un texte différent pour chaque produit (c'est pour cela que je souhaite passer par l'éditeur dans le BO). Le problème c'est que ce code ne marche pas en HTML (en tout cas dans la partie description produit). Dans l'idéal il faudrait que je puisse insérer ce code : <?PHP {if $logged} texte {/if} ?> Mais je n'y arrive pas et là je sèche. Si un développeur ou quelqu'un peut m'aider ce serait avec grand plaisir Merci Link to comment Share on other sites More sharing options...
doekia Posted December 13, 2011 Share Posted December 13, 2011 Dans ton BO, quand tu tapes ton texte à cacher, tu l'encapsule dans une div avec une classe precise genre "hidden-for-visitors". Dans ta global.css tu crée un règle: .hidden-for-visitors { display: none } enfin à la fin du template product.tpl tu mets un bout de js {if $logged} <script type="text/javascript"> {literal} $(document).ready(function() { $('.hidden-for-visitors').removeClass('hidden-for-visitors'); }); {/literal} </script> {/if} Soyons clair, c'est du faux caché puisque le contenu est visible dans le source de la page. Faire mieux? simplXML + XPath PS: Il y a peut-être des typos dans le code je l'ai tapé directement ici et non testé Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 13, 2011 Author Share Posted December 13, 2011 Merci tout d'abord pour cette réponse rapide. En revanche ça ne marche toujours pas. Après je ne m'y connais pas trop non plus en programmation donc j'ai peut être pas fait les choses comme il faut. Tout d'abord j'ai remplacé "hidden-for-visitors" par "hidden_for_visitors" car j'ai remarqué que les codes étaient plutôt de cette forme là, mais j'ai aussi essayé la première solution mais elle n'a pas marché non plus. Je suis donc allé dans la description de mon produit dans le BO, puis j'ai cliqué sur le bouton "HTML" (éditeur de code HTML). Ici j'ai rentré ce code : <div class="hidden_for_visitors">test</div> Puis dans global.css de mon template j'ai inséré .hidden_for_visitors { display: none } , mais je sais pas trop ou le mettre alors je l'ai mis dans /* Useful */ comme cela : /* Useful */ .align_center { text-align: center } .align_right { text-align: right } .middle { vertical-align: middle } .align_justify { text-align: justify } .uppercase { text-transform: uppercase } .hidden, .collapsed, .block_hidden_only_for_screen { display: none } .wrap { white-space: normal } .bold { font-weight: bold } .strike { text-decoration: line-through } .italic { font-style: italic } .top { vertical-align: top } .span_link { cursor: pointer } .span_link:hover { text-decoration: underline } .clear { clear: both } .hidden_for_visitors { display: none } Peut être je ne l'ai pas mis au bon endroit ? Et enfin j'ai inséré le bout de js à la fin de mon product.tpl : {if $packItems|@count > 0} <div> <h2>{l s='Pack content'}</h2> {include file="$tpl_dir./product-list.tpl" products=$packItems} </div> {/if} {if $logged} <script type="text/javascript"> {literal} $(document).ready(function() { $('.hidden_for_visitors').removeClass('hidden_for_visitors'); }); {/literal} </script> {/if} {/if} Ou est l'erreur ? Link to comment Share on other sites More sharing options...
doekia Posted December 13, 2011 Share Posted December 13, 2011 Pourquoi 2 {/if} à la fin? réponse tu as mis le code trop tôt il devait être ajouté à la fin - décale un des {/if} avant le {if $logged} Purge ton cache smarty smarty/compile Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 13, 2011 Author Share Posted December 13, 2011 Pour les 2 {/if} à la fin je ne sais pas, j'en avais déjà 2 avant d'insérer le code alors je les ai laissé. Sinon j'ai bien décalé un {/if} avant le {if $logged} et vidé le cache smarty mais j'ai toujours le mot "test" qui s'affiche sur ma page produit même quand je ne suis pas loggé J'ai mis les 2 fichiers en documents joints peut être que ce sera plus simple pour voir directement. presta.zip Link to comment Share on other sites More sharing options...
doekia Posted December 13, 2011 Share Posted December 13, 2011 URL de ton site Pourquoi utilises-tu une version "ancienne" de Prestashop 1.4.0? Le changements tu les as fait dans TON theme? Merci de préciser les répertoires Et ton cache smarty... verifie tools/smarty_v2/compile si jamais tu es en mode smarty V2 Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 14, 2011 Author Share Posted December 14, 2011 Je travaille dessus en local car je souhaite changer complètement ma version actuelle (en ligne) qui n'utilise pas le même système et qui ne me convient pas du tout. En revanche je suis sur prestashop 1.4.5.1 sur ma version locale, je vais essayer de passer sur la 1.4.6.2 pour voir si ça change quelque chose et en essayant avec le template de base. J'utilise un template qui n'a pas été mis à jour depuis la 1.4.0 c'est peut être pour ça. Sinon les changements je les ai bien fait dans mon thème www/prestashop/themes/x-3d/product.tpl et www/prestashop/themes/x-3d/css/global.css Pour le smarty j'avais déjà vidé le smarty et le smarty V2. Tous les codes sont bons sinon et au bon endroit ? on ne peut vraiment pas insérer du PHP dans la partie description HTML des pages produits ? Merci encore Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 14, 2011 Author Share Posted December 14, 2011 J'ai réussi !!! J'ai bien inséré les codes comme précédemment, sauf que lors de la rédaction du texte au lieu d'aller dans "html", j'ai tout simplement sélectionné la partie du texte que je voulais cacher et cliquer sur "styles" à coté de"paragraphe" et "hidden_for_visitors" est apparu, alors je l'ai sélectionné et maintenant du coup ça marche ! Pour info j'ai alors cliqué sur HTML et le code indiqué est le suivant : <p class="hidden_for_visitors">test</p> et non <div class="hidden_for_visitors">test</div> Voilà d'ou venait l'erreur ! je suis content parce que ça me bloqué vraiment. Merci pour tout doekia, sans ton aide je n'y serait jamais arrivé. Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 14, 2011 Author Share Posted December 14, 2011 Une dernière chose, j'aimerai également faire l'inverse, c'est à dire afficher du texte uniquement pour les visiteurs mais ne pas l'afficher pour les personnes enregistrées. Quelles sont les variables et les codes que je dois rajouter ? Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 16, 2011 Author Share Posted December 16, 2011 Problème toujours non résolu à ce jour, quelqu'un saurait me répondre ? Link to comment Share on other sites More sharing options...
doekia Posted December 16, 2011 Share Posted December 16, 2011 @Commandegrp: Ouvre ton propre topic Essaye un peu quand même inverser un test ça doit pas être très dur? Si? Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 16, 2011 Author Share Posted December 16, 2011 Je n'ai pas ouvert d'autre topic car je pense que les éléments de réponse doivent se trouver dans celui-ci. Je pense qu'il faut garder le même code mais simplement changer la variable : {if $logged} par celle faisant référence à une personne visiteur, non loggué. Mais je ne la connais pas. Si quelqu'un la connait je pourrai alors essayer mais pour l'instant je suis un peu bloqué à cause de ça. Link to comment Share on other sites More sharing options...
doekia Posted December 16, 2011 Share Posted December 16, 2011 {if !$logged} ! signifie not Link to comment Share on other sites More sharing options...
Commandesgrp Posted December 17, 2011 Author Share Posted December 17, 2011 Effectivement, ça marche à merveille. Merci encore. Link to comment Share on other sites More sharing options...
Broceliande Posted December 20, 2011 Share Posted December 20, 2011 J'ai juste un petit doute à la lecture de ce topic, mais je crois comprendre que le but est d'afficher la description , si le client est loggué , et ne pas l'afficher s'il ne l'est pas ? Parce que ça fait beaucoup de code pour pas grand chose (tpl + js + css ...), si c'est le cas , à moins que je ne me sois fourvoyé , une simple ligne {if $logged}$product->description{/if} placée en lieu et place ou $product->description est appelé , suffit , non ? Link to comment Share on other sites More sharing options...
doekia Posted December 20, 2011 Share Posted December 20, 2011 Oui en effet tu n'as pas bien lu le topic. Le demandeur veux que seule une partie de la description soit caché aux non connectés Ta solution est absolument parfait sinon, c'est d'ailleurs sur ce principe que l'on cache les prix généralement Cdlt, (d)oekia Link to comment Share on other sites More sharing options...
Broceliande Posted December 20, 2011 Share Posted December 20, 2011 Ah my bad..., bien reçu ... seulement une partie de la description.... Oui en fait c'est exactement sur ce principe que l'on cache les prix. J'ai lu en diagonale , quelque chose me disait que j'avais raté un truc Link to comment Share on other sites More sharing options...
doekia Posted December 20, 2011 Share Posted December 20, 2011 heu non les prix il faut les virer pendant le template avec {if $logged}<prix>{else}<nada>{/if} sinon ça ne sert pas a grand chose c'est surement ce que tu voulais dire mais je précise pour ceux qui nous lisent ... PS: Toi aussi ça déconne le forum quand tu édites? Moi ça quitte plus le mode édition depuis hier. Link to comment Share on other sites More sharing options...
Broceliande Posted December 20, 2011 Share Posted December 20, 2011 heu non les prix il faut les virer pendant le template avec {if $logged}<prix>{else}<nada>{/if} sinon ça ne sert pas a grand chose c'est surement ce que tu voulais dire mais je précise pour ceux qui nous lisent ... PS: Toi aussi ça déconne le forum quand tu édites? Moi ça quitte plus le mode édition depuis hier. Oui je parle de la méthode, mais même , j'ai résumé au maximum car c'est souvent insuffisant... souvent on veut masquer les prix à un groupe et pas à un autre , sans se satisfaire du simple fait d'être loggué , dans ce cas il est nécessaire d'avoir un module qui assigne le flag sur lequel on veut se baser . Et bien sur oui le else sert à afficher un message éventuellement genre 'vous devez vous identifier/enregistrer si ....' Mais je vois pas en quoi il est indispensable en revanche , Imaginons que j'utilise le bloc pub bien en évidence sur le site pour alerter le client qu'il doit être loggué pour voir les prix , mon tout simple : {if $logged}j'affiche le prix{/if} a bien le comportement voulu non ? Mais bon là on chipote .... Oui j'ai eu ce pb de non sortie du mode edition hier également. Je ne l'ai plus . Un pb ajax il semble bien , pas de retour après requete ... Link to comment Share on other sites More sharing options...
doekia Posted December 20, 2011 Share Posted December 20, 2011 C'est clair qui si <nada> c'est nada autant pas faire de else, mais moi dans nada j'affiche quand même les réductions Quand aux groupes, alors qu'il y a tant de globales (legacy quand tu nous tiens) ceux-ci et 2 3 autres manquent. Moi je les bourre dans smarty et/ou le cookie depuis le FrontController override. Link to comment Share on other sites More sharing options...
Yqnn Posted February 23, 2012 Share Posted February 23, 2012 Bonjour, Je souhaiterais également pouvoir cacher une partie de texte dans les descriptions produits. J'ai bien lu le sujet mais je galère un peu. J'ai le problème inverse que celui cité plus haut, mon texte reste tout le temps caché, loggé ou non. Je ne sais pas si j'ai tout bien placé dans le global.css et le product.tpl. Dans l'édition de la fiche produit, j'ai bien le style hidden for visitors, quand je sélectionne du texte et que j'applique le style, celui-ci disparait. Ce qui est différent, je n'ai pas en HTML <p class="hidden-for-visitors">TEXTE</p> mais <p><span class="hidden-for-visitors">TEXTE</span></p> Même si je change en HTML cela ne marche pas. Je vous laisse mon global.css et product.tpl. presta.zip Merci Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now