BeRoots Posted September 8, 2016 Share Posted September 8, 2016 Bonjour à tous. J'ai fait un module qui injecte du html dans mon header.tpl. Le code injecté est issue d'une autre fichier.tpl propre au module et je doit faire ceci de façon conditionnel suivant la configuration du module. Grosso modo si "enabled" le hook renvoi le contenu du .tpl que j'injecte et sinon rien n'est fait... j'ai fait mon injection comme ceci: <div id="page"> {capture name='displayMyHook'}{hook h='displayMyHook' mod='MyModule'}{/capture} {if $smarty.capture.displayMyHook != false} {hook h='displayMyHook' mod='MyModule'} {/if} <!-- suite du header.tpl ... --> Le code de mon hook: public function hookDisplayMyHook() { if($this->with_option === true) { return $this->display(__FILE__, 'file.tpl', $this->getCacheId()); } else { return false; } } Le fichier de template : <!-- Block Mymodule::MyHook --> <p>voila du code injecté défini dans le fichier.tpl du module</p> <p>Encore du code...</p> <!-- /Block Mymodule::MyHook --> Mon soucis est que l'injection ce fait avec une multitude d'espace avant le code de template et que l'indentation de mon code html final n'est pas propre <div id="page"> <!-- Block Mymodule::MyHook --> <p>voila du code injecté défini dans le fichier.tpl du module</p> <p>Encore du code...</p> <!-- /Block Mymodule::MyHook --> <!-- suite du header.tpl ... --> Je souhaiterai savoir comment faire pour avoir du code propre sans ces espaces issue de je ne sais où. Si quelqu'un à une idée Merci d'avance... Link to comment Share on other sites More sharing options...
coeos.pro Posted September 8, 2016 Share Posted September 8, 2016 Je n'ai pas compris l'intérêt de {if $smarty.capture.displayMyHook != false} Autant supprimer tout simplement cette condition ainsi que la balise capture Link to comment Share on other sites More sharing options...
BeRoots Posted September 9, 2016 Author Share Posted September 9, 2016 (edited) Comment ça ? faire juste un : {hook h='displayMyHook' mod='MyModule'} Mais cela risque pas de retourner false dans le html ? Edited September 9, 2016 by BeRoots (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted September 9, 2016 Share Posted September 9, 2016 remplace <div id="page"> {capture name='displayMyHook'}{hook h='displayMyHook' mod='MyModule'}{/capture} {if $smarty.capture.displayMyHook != false} {hook h='displayMyHook' mod='MyModule'} {/if} <!-- suite du header.tpl ... --> par <div id="page">{hook h='displayMyHook' mod='MyModule'} Link to comment Share on other sites More sharing options...
BeRoots Posted September 9, 2016 Author Share Posted September 9, 2016 Arf j'étais en train d'éditer le msg. Désolé... Mais cela ne va pas retourner false dans le html alors ? Link to comment Share on other sites More sharing options...
coeos.pro Posted September 9, 2016 Share Posted September 9, 2016 non, tu peux tester, et tu peux changer ta fonction hookDisplayMyHook par : public function hookDisplayMyHook() { if($this->with_option === true) return $this->display(__FILE__, 'file.tpl', $this->getCacheId()); } Link to comment Share on other sites More sharing options...
BeRoots Posted September 9, 2016 Author Share Posted September 9, 2016 Aussi en effet... En fait moi je m'étais inspiré directement de la façon de faire que l'on trouve dans le fichier header.tpl du theme par default de prestashop 1.6 : <header id="header"> {capture name='displayBanner'}{hook h='displayBanner'}{/capture} {if $smarty.capture.displayBanner} <div class="banner"> <div class="container"> <div class="row"> {$smarty.capture.displayBanner} </div> </div> </div> {/if} {capture name='displayNav'}{hook h='displayNav'}{/capture} {if $smarty.capture.displayNav} <div class="nav"> <div class="container"> <div class="row"> <nav>{$smarty.capture.displayNav}</nav> </div> </div> </div> {/if} <div> Link to comment Share on other sites More sharing options...
coeos.pro Posted September 9, 2016 Share Posted September 9, 2016 Oui mai eux ils ont du code en plus dans la condition if (en rouge) : {if $smarty.capture.displayBanner} <div class="banner"> <div class="container"> <div class="row"> {$smarty.capture.displayBanner} </div> </div> </div> {/if} {capture name='displayNav'}{hook h='displayNav'}{/capture} {if $smarty.capture.displayNav} <div class="nav"> <div class="container"> <div class="row"> <nav>{$smarty.capture.displayNav}</nav> </div> </div> </div> {/if} toi comme tu n'en as pas, capture et if ne servent à rien. Link to comment Share on other sites More sharing options...
BeRoots Posted September 9, 2016 Author Share Posted September 9, 2016 (edited) C'est pas faux. Je comprend mieux l'intérêt maintenant. Un super merci pour les explication Edited September 9, 2016 by BeRoots (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted September 9, 2016 Share Posted September 9, 2016 de rien Link to comment Share on other sites More sharing options...
J. Danse Posted September 9, 2016 Share Posted September 9, 2016 Sinon, pour les espacements dans un capture, il faut réaliser un {capture}{strip}...{/strip}{/capture}. Link to comment Share on other sites More sharing options...
BeRoots Posted September 11, 2016 Author Share Posted September 11, 2016 Merci également. Toujours bon à savoir 1 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