Jump to content

[1.6]Smarty capture et hook


BeRoots
 Share

Recommended Posts

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...

Share this post


Link to post
Share on other sites

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'}

Share this post


Link to post
Share on other sites

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());
}

Share this post


Link to post
Share on other sites

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>

Share this post


Link to post
Share on other sites

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.

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
 Share

×
×
  • Create New...

Important Information

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