我的 Shopware5 联系我们页面需要使用不同的设计模板。
目前这个表单是从“Form”控制器加载的,视图是“frontend/form/index.tpl”,如果我可以在“frontend/form/”目录下创建一个自定义模板,我可以解决这个问题。
我的问题是,当 url 或某个 id 是“contact-us2”或其他东西时,我如何告诉我的控制器使用新模板。
我的 Shopware5 联系我们页面需要使用不同的设计模板。
目前这个表单是从“Form”控制器加载的,视图是“frontend/form/index.tpl”,如果我可以在“frontend/form/”目录下创建一个自定义模板,我可以解决这个问题。
我的问题是,当 url 或某个 id 是“contact-us2”或其他东西时,我如何告诉我的控制器使用新模板。
有两种不同的方法可以做到这一点。
1. 在视图中切换:
您将能够在视图中获取 Url 段。因此,一种非常肮脏的方式:只需根据给定的 Url 决定 Smarty 中将包含哪个子模板。但正如我已经说过的,这不是你应该做的!虽然是一种方式...
2.通过事件订阅者切换:
只需创建一个 Shopware 插件,监听 Enlight_Controller_Action_PostDispatch_Frontend_Form 事件。然后检查确定应该加载哪个视图所需的任何内容 - 可能是当前的 Shops 区域设置或其他任何内容。做就是了
$this->View()->loadTemplate('frontend/path/to/your/file.tpl');
并且控制器应该加载您指定的模板。
亲切的问候