2017-06-22 64 views
1

我是Shopware的新用戶,並且想要向Shopware網站添加新路徑(例如/品牌)。由於它很分裂,我不知道從哪裏開始。如何在以下的商店結構中添加路徑

從這個鏈接 https://developers.shopware.com/developers-guide/plugin-quick-start/ 是不是有用的教程,因爲Smarty模板文件不位於

/engine/Shopware/Plugins/Shopware 

/templates/ShopnameXY/ 

(我設計的新在那裏的店鋪tpls,舊的是在另一個名爲/模板/ ShopnameXYold 012)

我知道我不知何故必須用Bootstrap.php文件在Shopware目錄中添加一個目錄,但即使查看現有的Bootstrap.php文件,也找不到任何其他創建的線索(例如,/bottom/legal)

感謝您的幫助!

回答

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你可以找到與測試插件壓縮,你可以學習,希望這將是對你有用。

相關問題