dkbane Posted April 13, 2015 Share Posted April 13, 2015 (edited) Bonsoir, Autre demande, qui ne va pas chercher bien loin je pense. Cela se passe sur mon site http://www.kosmeopolis.com/, qui est en version 1.5.4.1. J'ai deux problèmes : - le premier via le backoffice où, dans le module de configuration du templace, je voudrais ajouter du php. J'ai des lignes de type : <li class="item"><a href="mon-lien">mon-texte</a></li> et je dois changer le a href par quelque chose comme : <li class="item"><span title=<?php echo base64_encode("mon-lien")?> class="url">mon-texte</span></li> (ensuite un script mouline le tout pour crypter le lien) Bien entendu, cela ne fonctionne pas ! - le second, je dois modifier des fichiers tpl (exemple : myaccountfooter) avec des lignes du genre : <li><a href="mon-lien" title="">mon texte</a></li> ici encore, je dois mettre ce fameux <span title=<?php echo base64_encode("mon-lien")?> class="url">mon-texte</span> J'ai essayé un include mais j'ai dû me tromper et puis, j'aimerais faire cela proprement. J'attends vos propositions par MP, merci ! Edited April 13, 2015 by dkbane (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted April 13, 2015 Share Posted April 13, 2015 L'inclusion des balises php est interdite dans Prestashop ou alors on ne respecte plus le MVC (Modèle Vue Controleur) Vous devez utiliser des variables smarty, assignées dans le controleur correspondant avec la syntaxe suivante: $this->context->smarty->assign(array( 'ma_variable' => base64_encode("mon-lien") )); et l'utiliser dans votre tpl: <span title={$ma_variable} class="url">mon-texte</span> ou dans votre cas assigner une nouvelle fonction à smarty $smarty->registerPlugin("modifier",'base64_encode', 'base64_encode'); et utiliser celle-ci dans votre tpl {assign var="mon_url" value='http://mon_url.com'} {$mon_url|base64_encode} Mais c'est assez curieux de vouloir encoder une balise title ??? (celle-ci servant d'information, et là vous la cachez^^) Link to comment Share on other sites More sharing options...
dkbane Posted April 13, 2015 Author Share Posted April 13, 2015 Bonsoir, Pfiou, c'est technique mais merci beaucoup !! "Vous devez utiliser des variables smarty, assignées dans le controleur correspondant avec la syntaxe suivante:" => où dois-je écrire le code présenté ensuite ? (Je suis vraiment nul en php et cie...) Pour aller plus loin, ce que je veux dire c'est que je vois de quoi vous parlez, je comprends à peu près mais il me manque des éléments pour réussir à appliquer ce que vous dites ! Link to comment Share on other sites More sharing options...
Eolia Posted April 13, 2015 Share Posted April 13, 2015 dans quel tpl êtes-vous ? Link to comment Share on other sites More sharing options...
dkbane Posted April 13, 2015 Author Share Posted April 13, 2015 mes deux problèmes sont sur : blockmyaccountfooter.tpl du thème (cf ci-dessous) et sinon dans un module dans le back office. <!-- Block myaccount module --> <div class="blocks span3"> <p class="p_titre_footer">{l s='My account' mod='blockmyaccountfooter'}</p> <ul> <li><a href="{$link->getPageLink('history', true)}" title="">{l s='My orders' mod='blockmyaccountfooter'}</a></li> <li><a href="{$link->getPageLink('order-slip', true)}" title="">{l s='My credit slips' mod='blockmyaccountfooter'}</a></li> <li><a href="{$link->getPageLink('addresses', true)}" title="">{l s='My addresses' mod='blockmyaccountfooter'}</a></li> <li><a href="{$link->getPageLink('identity', true)}" title="">{l s='My personal info' mod='blockmyaccountfooter'}</a></li> <li><a href="{$wishlist_link}" title="{l s='My wishlists' mod='blockwishlist'}">Mes sélections</a></li> </ul> </div> Sinon, pour le module dans le back office ce doit être un peu plus compliqué mais, déjà, si je résouds blockmyaccountfooter ce sera bien Link to comment Share on other sites More sharing options...
Eolia Posted April 13, 2015 Share Posted April 13, 2015 ben vous rajoutez votre assignation dans blockmyaccountfooter.php public function hookFooter($params) { if (!$this->isCached('blockmyaccountfooter.tpl', $this->getCacheId())) $this->smarty->assign(array( 'mon-title' => base64_encode("http://votre_url"), 'voucherAllowed' => CartRule::isFeatureActive(), 'returnAllowed' => (int)Configuration::get('PS_ORDER_RETURN'), 'HOOK_BLOCK_MY_ACCOUNT' => Hook::exec('displayMyAccountBlockfooter') )); return $this->display(__FILE__, 'blockmyaccountfooter.tpl', $this->getCacheId()); } et vous utilisez {$mon-title} dans le tpl Link to comment Share on other sites More sharing options...
dkbane Posted April 13, 2015 Author Share Posted April 13, 2015 Je vais regarder cela demain, merci beaucoup et bonne soirée !! Link to comment Share on other sites More sharing options...
Alexandre Carette Posted April 13, 2015 Share Posted April 13, 2015 Mais c'est assez curieux de vouloir encoder une balise title ??? (celle-ci servant d'information, et là vous la cachez^^) Bonsoir, Je me demande pour ma part à quoi sert de mettre une balise title dans un span ! Link to comment Share on other sites More sharing options...
dkbane Posted April 14, 2015 Author Share Posted April 14, 2015 Bonjour, En premier lieu, j'ai essayé mais aucun lien ne se créé. Mon fichier php contient (j'ai mis echo sur le premier pour tester mais cela ne marche pas non plus - je mets que les 2 premières occurences) : <?php public function hookFooter($params) { if (!$this->isCached('blockmyaccountfooter.tpl', $this->getCacheId())) $this->smarty->assign(array( 'mon-titlea1' => echo base64_encode("http://www.kosmeopolis.com/historique-des-commandes"), 'voucherAllowed' => CartRule::isFeatureActive(), 'returnAllowed' => (int)Configuration::get('PS_ORDER_RETURN'), 'HOOK_BLOCK_MY_ACCOUNT' => Hook::exec('displayMyAccountBlockfooter') )); return $this->display(__FILE__, 'blockmyaccountfooter.tpl', $this->getCacheId()); } public function hookFooter($params) { if (!$this->isCached('blockmyaccountfooter.tpl', $this->getCacheId())) $this->smarty->assign(array( 'mon-titlea2' => base64_encode("http://www.kosmeopolis.com/avoirs"), 'voucherAllowed' => CartRule::isFeatureActive(), 'returnAllowed' => (int)Configuration::get('PS_ORDER_RETURN'), 'HOOK_BLOCK_MY_ACCOUNT' => Hook::exec('displayMyAccountBlockfooter') )); return $this->display(__FILE__, 'blockmyaccountfooter.tpl', $this->getCacheId()); } Mon fichier TPL quant à lui contient : <div class="blocks span3"> <p class="p_titre_footer">{l s='My account' mod='blockmyaccountfooter'}</p> <ul> <li><span title="{$mon_titlea1}" class="url">{l s='My orders' mod='blockmyaccountfooter'}</span></li> <li><span title="{$mon_titlea2}" class="url">{l s='My credit slips' mod='blockmyaccountfooter'}</span></li> <li><span title="{$mon_titlea3}" class="url">{l s='My addresses' mod='blockmyaccountfooter'}</span></li> <li><span title="{$mon_titlea4}" class="url">{l s='My personal info' mod='blockmyaccountfooter'}</span></li> <li><span title="$mon_titlea5}" class="url">Mes sélections</span></li> </ul> </div> Je suppose que la solution n'est pas loin ! Sinon, pour répondre à Alexandre : j'ai un scrit dans le header qui fait que le lien est visible si on a javascript, et non-visible sur on a pas javascript (google n'a pas javascript). Link to comment Share on other sites More sharing options...
Eolia Posted April 14, 2015 Share Posted April 14, 2015 Commencez par enlever le echo (qui ne vous montrera rien de toute façon à cet endroit) et supprimez le fichier cache : cache/smarty/cache/blockmyaccountfooter En effet, si ce fichier existe, le tpl n'est pas régénéré: if (!$this->isCached('blockmyaccountfooter.tpl', $this->getCacheId())) Link to comment Share on other sites More sharing options...
dkbane Posted April 14, 2015 Author Share Posted April 14, 2015 Bonsoir et merci encore, J'avais fait ces modifs, supprimé du cache mais rien n'y fait :S Link to comment Share on other sites More sharing options...
Eolia Posted April 14, 2015 Share Posted April 14, 2015 essayez avec juste 'mon-titlea2' => 'test', et voir si test s'affiche en title, je sens le coup du htmlcleaner... Link to comment Share on other sites More sharing options...
dkbane Posted April 14, 2015 Author Share Posted April 14, 2015 Bonsoir, Effectivement, rien ne s'affiche ! Qu'est-ce que cela veut dire ? Link to comment Share on other sites More sharing options...
Recommended Posts