2017-06-19 14 views
1

私はshopware 5.2.24テンプレートの継承は

上のプログラム例「の日のスローガンを」試すしかし、コードは動作しません動作しません。

ファイルBootstrap.phpでは、3つの重要な機能を定義しました。 関数installでは、コールバック関数 "onFrontendPostDispatch"が呼び出されます。このコールバック関数で

public function install() 
{ 
    $this->subscribeEvent(
     'Enlight_Controller_Action_PostDispatchSecure_Frontend', 
     'onFrontendPostDispatch' 
    ); 

    $this->createConfig(); 

    return true; 
} 

private function createConfig() 
{ 
    $this->Form()->setElement(
     'select', 
     'font-size', 
     array(
      'label' => 'Font size', 
      'store' => array(
       array(12, '12px'), 
       array(18, '18px'), 
       array(25, '25px') 
      ), 
      'value' => 12 
     ) 
    ); 

    $this->Form()->setElement('boolean', 'italic', array(
     'value' => true, 
     'label' => 'Italic' 
    )); 
} 

、私は新しいTPLファイルのパラメータと新しいTPLファイルの場所をdefinded:[_ DIR _。 '/ビュー']

public function onFrontendPostDispatch(Enlight_Event_EventArgs $args) 
{ 
    /** @var \Enlight_Controller_Action $controller */ 
    $controller = $args->get('subject'); 
    $view = $controller->View(); 

    $view->addTemplateDir(
     __DIR__ . '/Views' 
    ); 

    $view->assign('sloganSize', $this->Config()->get('font-size')); 
    $view->assign('italic', $this->Config()->get('italic')); 
    $view->assign('slogan', $this->getSlogan()); 

} 

public function getSlogan() 
{ 
    return array_rand(
     array_flip(
      array(
       'My Slogan Number 1', 
       'My Slogan Number 2', 
       'My Slogan Number 3', 
      ) 
     ) 
    ); 
} 

新しいTPLファイルは次のとおりです。

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

{block name="frontend_index_navigation_categories_top_include"} 

<style> 
    .slogan-box { 
     width:100%; 
     text-align:center; 
    } 
    .slogan { 
     {if $italic}font-style:italic;{/if} 
     font-size:{$sloganSize}px; 
    } 
</style> 

<div class="slogan-box"> 
    <span class="slogan">{$slogan}</span> 
</div> 

{$smarty.block.parent} 

{/block} 

新しいTPLファイルの場所は次のとおりです。

enter image description here

しかし、ホームページでは、私が」することができますスローガンを見ない...それは動作しません。

ファイルBootstrap.phpは正常に動作します。しかし、スローガンはホームページ上には見られません。

Bootstrap.phpとindex.tplの間の接続が間違っていますか?

誰かが間違っている場所を知っていますか?多くのThans!

+0

問題が最後にあったものをお知りました?私は同じ問題を抱えています。私は、テーマが/ Frontend/Bare/frontend/index/index.tplの元のテンプレートを編集し、どこかで{$ slogan}を追加すると、ビューにスローガン変数が渡されることを知っています。スローガンが表示されます。 それでは、なぜプラグインのindex.tplファイルが有効でないのですか? – flynorc

答えて

0

createConfig機能は未定義です。関数またはコメントアウト関数呼び出しを定義するか$this->createConfig();install()関数内にコールします。
プラグインをバックエンドプラグインマネージャから再インストールします。それは動作するはずです。

+0

私は関数 "createConfig"を定義しました。実際に私はここからサンプルプラグインをダウンロードしました:https://developers.shopware.com/developers-guide/plugin-quick-start/しかし、それは動作しません... –

+0

それは私のために働いた。ファイルのアクセス許可をチェックしましたか? –

+0

私は、プラグインファイルのアクセス権はすべてのユーザーに対して書き込みアクセス権と読み取りアクセス権を持っています。そして私は確信しています、プラグインのBootstrap.phpが動作します。コードを書くときなど。 [echo "Test"; die;]、コードは動作します。 –

0

プラグインがうまく見えますが、問題はありません。

インストール後にtemplate cacheをクリーニングしてプラグインを有効にしましたか? バックエンドでConfiguration - >Cache/Perfomanceと入力し、PerfomanceウィンドウのCheキャッシュのタブ - >すべて選択 - >クリアを選択し、テーマのコンパイルを確認します。

それとも、あなたがプラグインを有効にしようと、すべての時間を提案コンパイルするテーマを持ってますので、あなたは、SwagSloganOfTheDay/Bootstrap.phpブートストラッププラグインに次のコードを追加することができます。

public function enable() { 
    if(parent::enable()) 
     return array(
      'success' => true, 
      'message' => 'enabled', 
      'invalidateCache' => array('config', 'template', 'theme') 
     ); 
} 
関連する問題