2016-10-11 9 views
3

私はPrestaShop(v 1.6)に基づいてストアを作成しています。カスタム修正子プラグインを登録して、任意のテンプレートからアクセスできるようにします(フロントとバックオウンテンプレートを含みます)。PrestaShopでglobal smarty modifierを登録する場所は?

質問はです。は登録コードを配置しますか?

今、私はプラグインを登録する(つまり、私の知る限り、店舗固有の機能の場合に許容できるやり方である)修飾子を処理するための機能を追加するためのツールクラスオーバーライドを使用し、smarty.config.inc.php (PrestaShopのプラグインはすべてここに登録されているため)、このファイルには「ファイルを直接変更しない」という警告が表示され、わかっている限り、PrestaShopをアップグレードすると上書きされます。

私のコードを上書きしないようにプラグインを登録する場所はどこですか?

ありがとうございます。

答えて

3

これはモジュールで行うことができます。

1.インサイド

モジュールを作成したフォルダは、フォルダtestmoduleを作成し、内部のPHPファイルtestmodule.phpを作成するモジュール。

フックactionDispatcherはすべてのページコントローラのインスタンス化の後に実行され、修飾子プラグインをsmartyに登録します。

require_once _PS_MODULE_DIR_ . 'testmodule' . DIRECTORY_SEPARATOR . 'TestClass.php'; 

class TestModule extends Module { 
    public function __construct() 
    { 
     $this->name = 'testmodule'; 
     $this->tab = 'front_office_features'; 
     $this->version = '1.0'; 

     parent::__construct(); 

     $this->displayName = $this->l('Test Module'); 
     $this->description = $this->l('Testing smarty plugins.'); 
    } 

    public function install() 
    { 
     return parent::install() && $this->registerHook('actionDispatcher'); 
    } 

    public function hookActionDispatcher() 
    { 
     /* 
      We register the plugin everytime a controller is instantiated 

      'modifier'       - modifier type of plugin 
      'testToUpper'      - plugin tag name to be used in templates, 
      array('TestClass', 'toUpperMethod') - execute toUpperMethod() from class TestClass when using modifier tag name 
     */ 
     $this->context->smarty->registerPlugin('modifier', 'testToUpper', array('TestClass', 'toUpperMethod')); 
    } 
} 

2.ファイルTestClass.phpを作成するのと同じモジュールフォルダで修飾法

を保持するクラスを作成します。 スマートプラグインが呼び出されたときに実行する静的メソッドを記述します。この簡単なテストでは、大文字にしたい文字列を修正します。

class TestClass { 
    public static function toUpperMethod($param) 
    { 
     return strtoupper($param); 
    } 
} 

モジュールをインストールし、大文字にページ名をエコーと変えていく前のページ

{$page_name|testToUpper} 

に、たとえば任意のテンプレートで、あなたのプラグインを使用することができます。

たとえば、配列の修飾語を使用しようとすると、スマートプラグインを登録する際の基本です。

オーバーライドがなく、コアハッキングも不要です。

+0

ありがとう、このフックは、コントローラがロードされた直後の初期化には本当に良い場所です。 – AlexandrX

+0

ありがとうございます! – iamrobert

関連する問題