2017-03-15 1 views
0

템플릿을 frontend/home/index.tpl 자신의 플러그인을 통해 확장하려고합니다. 폴더 리소스 \ 전망 \ 프론트 엔드 \ 홈 \Shopware 5.2.20. 플러그인을 통해 템플릿을 확장 할 수 없습니다.

에서 여기
<?php 
namespace TdevExtend; 
use Shopware\Components\Plugin; 
class TdevExtend extends Plugin 
{ 
    public static function getSubscribedEvents(){ 
    return [ 
     'Enlight_Controller_Dispatcher_ControllerPath_Frontend_MyPlugin' => 
      'onDetailPostDispatch' 
    ]; 
    } 
    public function onDetailPostDispatch(\Enlight_Event_EventArgs $args) 
    { 
     $this->container->get('template')->addTemplateDir(
     $this->getPath() . '/Resources/views/' 
    ); 
    return __DIR__ . '/Controllers/Frontend/MyPlugin.php'; 
    } 
} 
?> 

이 dirrectory 컨트롤러 내 컨트롤러 MyPlugin.php \ 프런트 엔드

public function preDispatch() 
    { 
    /** @var \Shopware\Components\Plugin $plugin */ 
    $plugin = $this->get('kernel')->getPlugins()['TdevProductTab']; 

    $this->get('template')->addTemplateDir($plugin->getPath() . '/Resources/views/'); 
} 

그리고 템플릿 : 여기

내 루트 파일

{extends file="parent:frontend/home/index.tpl"} 
{block name='frontend_index_content'} 
    <div class="">Hello world!</div> 
    {$smarty.block.parent} 
{/block} 

나는 official documentation을 읽었습니다. 조사한 플러그인 예 plugins examples 백엔드에 플러그인 crear 캐시를 설치/재설치 한 후 var/cache에 수동 폴더를 삭제하십시오. 그러나 아무것도 나를 도왔습니다.

+1

당신은 –

+0

링크는 기존의 플러그인을 보여줍니다 당신이 URL https://developers.shopware.com/developers-guide/shopware-5-plugin-update-guide/#template-extensions에서 원하는 것을 얻을 것이다 시스템에서 사용할 수 있지만, 내가 아는 한 그는 새로운 플러그인 시스템을 사용하고있다. – Sadik

+0

네, 새로운 시스템을 사용하고 있습니다. – Andrii

답변

1

Enlight_Controller_Dispatcher_ControllerPath_Frontend_MyPlugin 대신 getSubscribedEvents에서 이벤트 Enlight_Controller_Action_PostDispatchSecure_Frontend_Index을 사용할 수 있습니다.

이벤트 Enlight_Controller_Dispatcher_ControllerPath_Frontend_MyPlugin을 사용 중입니다. 컨트롤러를 찾을 때 MyPlugin Shopware가이 이벤트를 만듭니다. 따라서이 이벤트를 사용할 때 자신 만의 컨트롤러를 작성해야합니다. 하지만 당신이 원하는 것은 위에서 언급 한 이벤트입니다. 사실 컨트롤러를 작성할 필요가 없습니다.

<?php 
namespace TdevExtend; 
use Shopware\Components\Plugin; 
class TdevExtend extends Plugin 
{ 
    public static function getSubscribedEvents(){ 
    return [ 
     'Enlight_Controller_Action_PostDispatchSecure_Frontend_Index' => 
      'onPostDispatch' 
    ]; 
    } 
    public function onPostDispatch(\Enlight_Event_EventArgs $args) 
    { 
     $this->container->get('Template')->addTemplateDir(
     $this->getPath() . '/Resources/views/' 
    ); 
    } 
} 
?> 
+0

안녕하세요 @Sadik. 그것은 또한 작동하지 않습니다. 다음은 [zip] (https://drive.google.com/file/d/0B-uO_5Pl1EFBRGpWcnQ1QjRJaFU/view?usp=sharing) 위키 내 플러그인 링크입니다. 확인해 주시겠습니까? xdebug breakpoint가'onPostDispatch'에서 작동하기 때문에 템플릿에 문제가있을 수 있습니다. – Andrii

+0

zip 파일의 플러그인이 완벽하게 작동합니다. 그냥/custom/plugins 폴더에 넣으십시오. 수정 후에는 플러그인을 다시 설치해야한다는 것을 기억하십시오. – Sadik

+0

어떤 OS를 사용합니까? Windows를 사용하고 있는데 아직 작동하지 않습니다. – Andrii

관련 문제