Shopware 5:插件不会覆盖模板视图

时间:2018-11-21 16:53:32

标签: php shopware

插件必须覆盖主题中的搜索模板,但不是。它包含以下文件: PrOlgaStartup / PrOlgaStartup.php

<?php

namespace PrOlgaStartup;

use Shopware\Components\Plugin;

class PrOlgaStartup extends Plugin
{

 public static function getSubscribedEvents()
{
     return [
        'Enlight_Controller_Action_PostDispatchSecure_Frontend' => 'extendsFrontend'
    ];
}

public function extendsFrontend(\Enlight_Controller_ActionEventArgs $args)
{
    /** @var \Enlight_Controller_Action $controller */
    // Breadrcrumbs must dissapear
    $subject = $args->getSubject();
    $subject->View()->addTemplateDir(__DIR__ . '/Resources/views');

}
}

PrOlgaStartup /资源/视图/前端/索引/search.tpl

{extends file="parent:frontend/index/search.tpl"}

{block name="frontend_index_search_container"}
    Hello World!
{/block}

一些注意事项

  1. 经过流浪和咬人测试
  2. 主题由protected $injectBeforePlugins = true;扩展
  3. 主题不包含自定义search.tpl
  4. 缓存已清除
  5. solution不能正常工作

非常感谢您!!! :-)

2 个答案:

答案 0 :(得分:0)

尝试使用“新”方式注册模板:

public function extendsFrontend(\Enlight_Event_EventArgs $args)
{
    $this->container->get('Template')->addTemplateDir(
        $this->getPath() . '/Resources/views/'
    );
}

答案 1 :(得分:0)

使其工作(包括插件模板)的唯一方法是:

  1. 将开发环境置于无聊的状态(我在Windows OS上工作)
  2. 将变量protected $injectBeforePlugins = true;放入Theme.php

此变量的注入根本不会对bitnami产生任何影响,并且上面的组合似乎在我的测试中丢失了。为什么会这样,对我(现在)尚不清楚。大概一天中唯一的答案是this,即它取决于您的操作系统和/或您的虚拟机。