我是Shopware的新手,想在商店网站上添加新路径(例如/品牌)。由于它分崩离析,我不知道从哪里开始。
此链接的教程 https://developers.shopware.com/developers-guide/plugin-quick-start/ 由于智能模板文件不在
中,因此没有用处/engine/Shopware/Plugins/Shopware
但在
/templates/ShopnameXY/
(我在那里设计新店tpls,旧的在另一个名为/ templates / ShopnameXYold的目录中)
我知道我不得不在Shopware目录中添加一个带有Bootstrap.php文件的目录,但即使查看现有的Bootstrap.php文件,我也无法找到任何其他模式的提示(例如/底部/法律)
感谢您的帮助!
答案 0 :(得分:2)
不确定我是否理解你的问题。
想在商店网站上添加新路径(例如/品牌)。
如果您想在自己的页面中添加新路径,则应创建新控制器:
public function install() {
$this->registerController('Frontend', 'Example');
}
控制器应放在OurPluginRoot/Controllers/Frontend/Example.php
class Shopware_Controllers_Frontend_Example extends Enlight_Controller_Action
{
public function indexAction()
{
$this->view->assign('variable', 'value');
}
}
然后我们将索引操作的模板添加到OurPluginRoot/View/example/index.tpl
{extends file='frontend/index/index.tpl'}
{block name="frontend_index_content"}
<div class="container">
My own controller view
</div>
{/block}
通过后端设置现有控制器的路径。
如果您需要扩展现有模板,您需要为此编写非常简单的插件。
class Shopware_Plugins_Frontend_ExtendQuickCart_Bootstrap extends Shopware_Components_Plugin_Bootstrap {
/**
* Returns the version of plugin as string.
*
* @return string
*/
public function getVersion() {
return '0.0.1';
}
/**
* Returns the plugin name for backend
*
* @return string
*/
public function getLabel() {
return 'Extend Quick Cart View';
}
/**
* Standard plugin install method to register all required components.
* @return array
*/
public function install() {
$this->subscribeEvent();
}
/**
* @return Shopware_Plugins_Frontend_ExtendQuickCart_Bootstrap
*/
private function subscribeEvents(){
//Frontend_Checkout -> Frontend/Backend, Checkout mean controller checkout
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend_Checkout', 'onPostDispatchCheckout'
);
return $this;
}
/**
* @param Enlight_Controller_ActionEventArgs $arguments
*/
public function onPostDispatchCheckout(Enlight_Controller_ActionEventArgs $arguments){
/**@var $controller Shopware_Controllers_Frontend_Checkout */
$controller = $arguments->getSubject();
$request = $controller->Request();
$response = $controller->Response();
$action = $request->getActionName();
$view = $controller->View();
// Extend only ajaxCart Action, all other actions - don't do anything
if ( $action !== 'ajaxCart' || !$request->isDispatched()
|| $response->isException() || !$view->hasTemplate()
) {
return;
}
$view->addTemplateDir($this->Path() . 'Views/');
}
}
然后创建模板OurPluginRoot/View/checkout/ajax_cart.tpl
{extends file='parent:frontend/checkout/ajax_cart.tpl'}
{block name='frontend_checkout_ajax_cart_prices_container_inner'}
<div class="prices--articles">
<span class="prices--articles-text">{s name="AjaxCartTotalAmount"}{/s}</span>
<span class="prices--articles-amount">{$sBasket.Amount|currency}</span>
</div>
<div class="prices--articles">
<span class="prices--articles-text">{s name="AjaxSomething"}Something{/s}</span>
<span class="prices--articles-amount">{$sBasket.Amount}</span>
</div>
<div class="prices--articles">
<span class="prices--articles-text">{s name="AjaxSomething1"}Something ssecond{/s}</span>
<span class="prices--articles-amount">@@@@@@@@@@@@@@@@@</span>
</div>
{/block}
There你可以找到你可以学习的测试插件存档,希望这对你有用。