2016-05-26 10 views
1

プリストアのStore Locatorページにフィーチャーを編集して追加したいと考えています。 Prestashopのドキュメントは本当に明確ではありません。カスタムモジュールにコントローラを実装することが可能かどうかを知りたいと思います。 私はStoreFrontControllerを拡張することができるモジュールを作成したいと思います。 可能ですか?私のためにいくつかの文書がありますか?Prestashopモジュールのフロントコントローラー機能をオーバーライドして使用する[1.6.x.x]

初級、 ベスト。

+0

申し訳ありませんが、私のprestashopバージョンは1.6.1.5です。 –

+0

どのような機能を追加しますか? –

+0

詳細を追加する場合は、データを変更する場合とはプロセスが異なります。 –

答えて

0

多くの要件があるため、クラスStoresController.phpのオーバーライドを行う必要があります。

あなたのモジュールフォルダは次のようになります

:あなたはinitContent()を上書きする必要がありますStoresController.php

/mymodule 
    /mymodule.php 
    /config.xml 
    /override 
     /controllers 
       /front 
        StoresController.php 
    /views 
     /templates 
       /front 
        stores.tpl 

<?php 

class StoresController extends StoresControllerCore 
{ 

    /** 
    * Assign template vars related to page content 
    * @see FrontController::initContent() 
    */ 
    public function initContent() 
    { 
     parent::initContent(); 

     // here add any smarty variables you want 

     $this->setTemplate(_PS_MODULE_DIR_.'mymodule/views/templates/front/stores.tpl'); 
    } 
} 

あなたはこのコントローラで、カスタマイズしたいと今、あなたはできるだけ多くの変数を追加することができます自分のモジュール内のテンプレート


モジュールでオーバーライドを作成すると、インストール時に1回のみ解析されます。あなたのモジュールが既にインストールされている場合は、それをアンインストールしてもう一度インストールする必要があります。次に、上書きファイルがルート/overrideフォルダーにコピーされます。

モジュールオーバーライドで行った変更は、ルートオーバーライドフォルダには反映されません。したがって、変更するたびにモジュールをアンインストールしてインストールする必要があります。

ルートの上書きフォルダですべての変更を直接行うことをお勧めします。完了したら、このファイルをモジュールフォルダにコピーして戻してください。また、モジュールをアンインストールして再度インストールしてこのファイルを宣言したくない場合は、ルートオーバーライドフォルダに直接置き換えてファイル/cache/class_index.phpを削除して、Prestashopがオーバーライドが追加されたことを知ることができます。

あなたはあなたが

`"/modules/mymodule/override/controllers/front/StoresController.php" and in this fine add class "class StoresControllerCore extends FrontController { 
public function initContent() 
    { 
     parent::initContent(); 
//here do whatever you like 
} 
}" 

のようにフロントコントローラをオーバーライドすることによって開始することができます任意の質問:)

+0

あなたの時間とあなたのアドバイスをありがとうございます。それは本当に控えめです。 私はちょうど別の質問があります、私はprestashopに精通していないので、私は理解したいです。 私のモジュールでこのコントローラを上書きすると正常に動作しますか?私の変更はコントローラーの動作を変更するだけです。 残りの部分はまるで何も変更しなかったかのように機能しますか? –

+0

通常どんな意味ですか?オーバーライドすると、Core StoresControllerCoreが拡張されます。 PrestashopがStoresControllerを読み込むと、最初に上書きが検索され、自分のものが検索されます。それから、それはどんなControllerクラスのようにも処理します。 –

+0

「私の変更だけがコントローラの動作を変更し、残りは何も変更しなかったかのように動作します。それでおしまい。オーバーライドでコントローラーを変更することはできますが、変更しなかったメソッドは正常に実行されます。 –

0

を持っている場合は、さらに進行するコーディング知っている必要がありますけれども。

+0

ありがとう! フロリアンは私に解決策を与えました。 –

関連する問題