如何在Prestashop

时间:2015-11-13 16:09:26

标签: module prestashop

我使用主题Default-Bootstrap在Prestashop(1.6.1.1。)中设置网上商店。

我在您的主页上使用"图像滑块"模块,但它只显示在主页中。我尝试了不同的东西,但其中任何一个都有效:

  • 我已从/homeslider.tpl
  • 中删除了条件{if $page_name =='index'}
  • 我试图在header.tpl中使用以下条件强制它:

    {if $page_name !='index' && $page_name !='pagenotfound'} {include file="$tpl_dir./modules/homeslider/homeslider.tpl"} {/if}

  • 我尝试将/homeslider.tpl中的代码直接复制并粘贴到header / tpl模板中,但只显示<!-- Module HomeSlider -->条评论之间的任何内容({{1 condition似乎返回false)。

  • 当然,该模块已挂钩在DisplayTop中,但主页外部仍未发生任何事情......并且不能使用DisplayTopColumn。

这是homeslider.tpl的代码:

{if isset($homeslider_slides)}

还是header.tpl的一部分:

<!--{if $page_name =='index'} -->
<!-- Module HomeSlider -->
    {if isset($homeslider_slides)}
        <div id="homepage-slider">
            {if isset($homeslider_slides.0) && isset($homeslider_slides.0.sizes.1)}{capture name='height'}{$homeslider_slides.0.sizes.1}{/capture}{/if}
            <ul id="homeslider"{if isset($smarty.capture.height) && $smarty.capture.height} style="max-height:{$smarty.capture.height}px;"{/if}>
                {foreach from=$homeslider_slides item=slide}
                    {if $slide.active}
                        <li class="homeslider-container">
                            <a href="{$slide.url|escape:'html':'UTF-8'}" title="{$slide.legend|escape:'html':'UTF-8'}">
                                <img src="{$link->getMediaLink("`$smarty.const._MODULE_DIR_`homeslider/images/`$slide.image|escape:'htmlall':'UTF-8'`")}"{if isset($slide.size) && $slide.size} {$slide.size}{else} width="100%" height="100%"{/if} alt="{$slide.legend|escape:'htmlall':'UTF-8'}" />
                            </a>
                            {if isset($slide.description) && trim($slide.description) != ''}
                                <div class="homeslider-description">{$slide.description}</div>
                            {/if}
                        </li>
                    {/if}
                {/foreach}
            </ul>
        </div>
    {/if}
<!-- /Module HomeSlider -->
<!--{/if}-->

我希望我能很好地解释这个问题,以便你能够帮助我:)。

提前致谢! iarcas

1 个答案:

答案 0 :(得分:0)

我认为你已经走上了正确的轨道,你在条件模板中找到了条件,但你是否检查了模块中的实际钩子?

见:

<强> homslider.php

public function hookdisplayTopColumn($params)
{
    if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
        return;
    if (!$this->_prepareHook())
        return false;
    return $this->display(__FILE__, 'homeslider.tpl', $this->getCacheId());
}

基本上,你必须对这个函数进行覆盖:

<强> /override/modules/homeslider/homeslider.php

<?php

class HomeSliderOverride extends HomeSlider
{
    public function hookdisplayTopColumn($params)
    {
        if (!$this->_prepareHook())
            return false;
        return $this->display(__FILE__, 'homeslider.tpl', $this->getCacheId());
    }
}