从插件覆盖 Shopware 4 中的模板
Overriding Template in Shopware 4 from plugin
public function install() {
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatchSecure_Frontend',
'onFrontendPostDispatch',
0
);
return array('success' => true, 'invalidateCache' => array('frontend'));
}
public function onFrontendPostDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Enlight_Controller_Action $controller */
$controller = $args->get('subject');
$view = $controller->View();
$view->addTemplateDir(
__DIR__ . '/Views'
);
}
我曾尝试 运行 插件并覆盖模板,但 Shopware 没有看到插件中的变化。
我正在 /Views/frontend/checkout/cart_footer.tpl
插件根目录中创建新文件。
我也在插入
{extends file='parent:frontend/checkout/cart_footer.tpl'}
.tpl 文件中的行,但仍然没有成功。
有谁知道哪里出了问题吗?
这很简单
我只加一行
$view->loadTemplate('frontend/plugins/checkout/cart.tpl');
并稍微更改代码。
我正在将事件从 Enlight_Controller_Action_PostDispatchSecure_Frontend
更改为
Enlight_Controller_Action_PostDispatch_Frontend_Checkout
并添加 $view->loadTemplate('frontend/plugins/checkout/cart.tpl');
此路径与 "/Views"
文件夹相关,该文件夹在 addTemplateDir
方法中声明。
下面是完整的代码,请尽情享受:)
public function install() {
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend_Checkout',
'onFrontendPostDispatch'
);
return array('success' => true, 'invalidateCache' => array('frontend'));
}
public function onFrontendPostDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Enlight_Controller_Action $controller */
$controller = $args->get('subject');
$view = $controller->View();
$view->addTemplateDir(
__DIR__ . '/Views'
);
$view->loadTemplate('frontend/plugins/checkout/cart.tpl');
}
public function install() {
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatchSecure_Frontend',
'onFrontendPostDispatch',
0
);
return array('success' => true, 'invalidateCache' => array('frontend'));
}
public function onFrontendPostDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Enlight_Controller_Action $controller */
$controller = $args->get('subject');
$view = $controller->View();
$view->addTemplateDir(
__DIR__ . '/Views'
);
}
我曾尝试 运行 插件并覆盖模板,但 Shopware 没有看到插件中的变化。
我正在 /Views/frontend/checkout/cart_footer.tpl
插件根目录中创建新文件。
我也在插入
{extends file='parent:frontend/checkout/cart_footer.tpl'}
.tpl 文件中的行,但仍然没有成功。
有谁知道哪里出了问题吗?
这很简单
我只加一行
$view->loadTemplate('frontend/plugins/checkout/cart.tpl');
并稍微更改代码。
我正在将事件从 Enlight_Controller_Action_PostDispatchSecure_Frontend
更改为
Enlight_Controller_Action_PostDispatch_Frontend_Checkout
并添加 $view->loadTemplate('frontend/plugins/checkout/cart.tpl');
此路径与 "/Views"
文件夹相关,该文件夹在 addTemplateDir
方法中声明。
下面是完整的代码,请尽情享受:)
public function install() {
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend_Checkout',
'onFrontendPostDispatch'
);
return array('success' => true, 'invalidateCache' => array('frontend'));
}
public function onFrontendPostDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Enlight_Controller_Action $controller */
$controller = $args->get('subject');
$view = $controller->View();
$view->addTemplateDir(
__DIR__ . '/Views'
);
$view->loadTemplate('frontend/plugins/checkout/cart.tpl');
}