如何在以下商品结构中添加路径

时间:2017-06-22 09:14:25

标签: templates smarty shopware

我是Shopware的新手,想在商店网站上添加新路径(例如/品牌)。由于它分崩离析,我不知道从哪里开始。

此链接的教程 https://developers.shopware.com/developers-guide/plugin-quick-start/ 由于智能模板文件不在

中,因此没有用处
/engine/Shopware/Plugins/Shopware 

但在

/templates/ShopnameXY/

(我在那里设计新店tpls,旧的在另一个名为/ templates / ShopnameXYold的目录中)

我知道我不得不在Shopware目录中添加一个带有Bootstrap.php文件的目录,但即使查看现有的Bootstrap.php文件,我也无法找到任何其他模式的提示(例如/底部/法律)

感谢您的帮助!

1 个答案:

答案 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你可以找到你可以学习的测试插件存档,希望这对你有用。