Shopware 5.2.24上的插件中的模板继承不起作用

时间:2017-06-19 08:02:40

标签: php smarty smarty3 shopware

我尝试了示例程序"当天的标语"在shopware 5.2.24上

但代码不起作用。

在文件Bootstrap.php中,我定义了3个重要的功能。 在函数install中,回调函数" onFrontendPostDispatch"将被召唤。

public function install()
{
    $this->subscribeEvent(
        'Enlight_Controller_Action_PostDispatchSecure_Frontend',
        'onFrontendPostDispatch'
    );

    $this->createConfig();

    return true;
}

private function createConfig()
{
    $this->Form()->setElement(
        'select',
        'font-size',
        array(
            'label' => 'Font size',
            'store' => array(
                array(12, '12px'),
                array(18, '18px'),
                array(25, '25px')
            ),
            'value' => 12
        )
    );

    $this->Form()->setElement('boolean', 'italic', array(
        'value' => true,
        'label' => 'Italic'
    ));
}

在这个回调函数中,我定义了新tpl文件的参数和新tpl文件的位置:[_ DIR _。 ' /浏览次数' ]

public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
{
    /** @var \Enlight_Controller_Action $controller */
    $controller = $args->get('subject');
    $view = $controller->View();

    $view->addTemplateDir(
        __DIR__ . '/Views'
    );

    $view->assign('sloganSize', $this->Config()->get('font-size'));
    $view->assign('italic', $this->Config()->get('italic'));
    $view->assign('slogan', $this->getSlogan());

}

public function getSlogan()
{
    return array_rand(
        array_flip(
            array(
                'My Slogan Number 1',
                'My Slogan Number 2',
                'My Slogan Number 3',
            )
        )
    );
}

新的tpl文件是:

{extends file="parent:frontend/index/index.tpl"}

{block name="frontend_index_navigation_categories_top_include"}

<style>
    .slogan-box {
        width:100%;
        text-align:center;
    }
    .slogan {
        {if $italic}font-style:italic;{/if}
        font-size:{$sloganSize}px;
    }
</style>

<div class="slogan-box">
    <span class="slogan">{$slogan}</span>
</div>

{$smarty.block.parent}

{/block}

新tpl文件的位置是:

enter image description here

但在主页上,我看不到口号......它不起作用。

文件Bootstrap.php工作正常。但是在主页上不能看到口号。

Bootstrap.php与index.tpl之间的连接是否错误?

有谁知道我哪里出错了?吃了很多!!!

2 个答案:

答案 0 :(得分:0)

似乎 createConfig 功能未定义。在$this->createConfig();函数中定义函数或注释掉函数调用install()
现在从后端插件管理器重新安装插件。它应该工作。

答案 1 :(得分:0)

插件看起来很好,没有任何问题。

安装并激活插件后,您是否清除了template cache? 在后端manu中:Configuration - &gt; Cache/Perfomance,然后转到Perfomance窗口中的Che cache选项卡 - &gt;全选 - &gt;清除,然后确认主题编译。

或者你可以在插件引导程序SwagSloganOfTheDay/Bootstrap.php中添加下一个代码,这样当你尝试启用插件时,你会得到主题编译建议:

public function enable() {
    if(parent::enable())
        return array(
            'success' => true,
            'message' => 'enabled',
            'invalidateCache' => array('config', 'template', 'theme')
        );
}