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

Shopware 5: Plugin does not overwrite template view

插件必须覆盖主题中的搜索模板,但它没有。它包含以下文件: 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/Resources/views/frontend/index/search.tpl

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

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

一些笔记

  1. 在 vagrant 和 bitnami 中测试
  2. 主题扩展 protected $injectBeforePlugins = true;
  3. 主题不包含自定义search.tpl
  4. 缓存已清除
  5. 这个也不行

非常感谢您! :-)

尝试使用"new"方式注册模板:

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

让它工作的唯一方法(即包含插件模板)是:

  1. 把开发环境放到vagrant中(我在WindowsOS工作)
  2. 将变量 protected $injectBeforePlugins = true; 放入 Theme.php

这个变量的注入在bitnami中根本没有任何作用,上面的组合在我的测试中似乎被遗漏了。为什么会这样,我(现在)不清楚。据推测,当天唯一的答案是 ,即它取决于您的虚拟机上的 OS and/or。