私は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ファイルの場所をdefinded:[_ 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の間の接続が間違っていますか?
誰かが間違っている場所を知っていますか?多くのThans!
問題が最後にあったものをお知りました?私は同じ問題を抱えています。私は、テーマが/ Frontend/Bare/frontend/index/index.tplの元のテンプレートを編集し、どこかで{$ slogan}を追加すると、ビューにスローガン変数が渡されることを知っています。スローガンが表示されます。 それでは、なぜプラグインのindex.tplファイルが有効でないのですか? – flynorc