2017-06-22 7 views
1

Shopwareを初めて使用しており、ショップウェアサイトに新しいパス(例:/ブランド)を追加したいと考えています。それはかなり分裂しているので、私はどこから始めるべきか分かりません。以下のショップウェア構造にパスを追加するには

Smartyテンプレートファイルは

/engine/Shopware/Plugins/Shopware 

に配置されていないが、

/templates/ShopnameXY/ 

に(私は新しいを設計していますので、このリンク https://developers.shopware.com/developers-guide/plugin-quick-start/ からチュートリアルでは、その有用ではなかったですそこに店舗のトランプがあり、古いものは/ templates/ShopnameXYoldという別のディレクトリにあります)

私は知っていますどうやらShopwareディレクトリのディレクトリをBootstrap.phpファイルで追加する必要がありますが、既存のBootstrap.phpファイルを見ても、作成される他のpathesのヒントは見つかりません。/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'); 
    } 
} 

に配置する必要があります。そして、我々はのためのテンプレートを追加しますindexアクション新しいコントローラ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を作成し、これはあなたのために役立つことを願っています。

関連する問題