我尝试了示例程序"当天的标语"在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文件的位置是:
但在主页上,我看不到口号......它不起作用。
文件Bootstrap.php工作正常。但是在主页上不能看到口号。
Bootstrap.php与index.tpl之间的连接是否错误?
有谁知道我哪里出错了?吃了很多!!!
答案 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')
);
}