1

prestashop の内部コード/構造を変更せずに、新しく作成したモジュールで prestashop のデフォルトのフロント オフィス テンプレートとコントローラーをオーバーライドしたいと考えています。

例 :

prestashop のアドレス フォーム (address.tpl) を使用する /modules フォルダーに "mymodule" という 1 つのモジュールを作成しました。

参照: http://demo-store.prestashop.com/en/address .

prestashop のコア機能を変更せずに、いくつかの追加フィールド/機能を提供することにより、住所フォームを強化したいと考えています。

では、モジュールでコントローラー/テーマ/テンプレートをオーバーライドするにはどうすればよいですか? 私はグーグルでこれについて多くを検索しましたが、何も見つかりませんでした:(

どんな助けでも大歓迎です。

4

1 に答える 1

1

モジュールは、カスタマイズした関数を実行できる がHOOK内部にある場合にのみ、要求どおりに機能します。template/controller内部に表示されているリストを見て、モジュールをどこかにフックする可能性があるかどうかを確認します

backoffice > modules > position

よく思い出せば、アドレスコントローラーにはフックがありません。そのため、その機能を編集するには3つの方法があります。

  1. 必要なアクションを実行するために jquery/ajax 呼び出しを頻繁に使用することにより、(imho) 恐ろしいクライアント側の変更を行います。関数を使用してヘッダーに js スクリプトを追加するだけのモジュールを使用して、コードを配置しますhookHeader()。このフックはすべてのサイトで常に呼び出されるため、アドレス テンプレートにないフックを利用できます。

  2. 次の手順に従って、コントローラとテンプレート内にフックを追加します: http://www.prestashop.com/forums/topic/218291-create-custom-and-new-hook-in-ps-15/

  3. prestashop フレームワークの驚くべきオーバーライド機能を使用して、コントローラ内prestashop_root/override/controllers/front/AddressController.phpおよび 内に配置されたコントローラ ファイルで必要なものを変更します/prestashop_root/themes/my_theme/address.tpl。このようにして、元の機能を失わずにコントローラーの任意の機能を上書きできます。インストールをアップグレードする必要がある場合は、モジュールに対して行うのと同じように、上書きされたファイルで変更した機能を確認するだけで済みます。

于 2013-07-13T07:08:05.267 に答える