• さえずり

    • 広告

    パート5 -あなた自身のPrestashopのモジュールの記述

    仕上げ

    はじめ

    私たちの基本的なモジュールの書き込みチュートリアルシリーズのこの最後の部分では、我々は新たなモジュールの書き込みを開始キックするために使用できる基本テンプレートに私達のTutorialthirdモジュールのクラスを変換するための最終的な手順について見ていきます。 再び同じ古いコードを再発行するのではなく我々は、変更部分のみを説明しますが、あなたが最終的なコードを拾って自分のプロジェクトの基礎として使用できるように私はこの部分の最後にあるダウンロードリンクを追加しました。 それに基づいて、新しいモジュールを生産することになると我々は我々自身で交換いたします名 - 我々は、このモジュールの"スケルトン"と呼ぶつもりだ。

    設定フォームのスタイル設定

    我々のユーザーに一貫したインタフェースを提供したいので、我々が行おうとしている最初の変更は純粋に表面的な、しかしこれは重要な要素です。 私たちのフォームのコードは次のようになっていました。

    	プライベート関数_displayForm()
    	 {
    		 $この - > _html .='
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    				 <label>は"する$ this -> L("世界の').'</のラベルへのメッセージ>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ DIV>
    				 <input type="submit" name="submit" value="'.$this-> L('更新').'"クラス="ボタン"/>
    
    		 </フォーム>';
    	 }
    

    これらの設定画面のための規則はフィールドセットの設定をラップすることです、そして我々はまた、アイコンとの完全な素敵なフレンドリーな(翻訳)、凡例を追加する必要があります。 私たちのコードは、現在のようになります。

    	プライベート関数_displayForm()
    	 {
    		 $この - > _html .='
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    
    			の<fieldset>
    				 <legend> <img src="../img/admin/cog.gif" alt="" class="middle" />'する$ this -> L('設定').'</伝説>
    
    				 <label>は"する$ this -> L("世界の').'</のラベルへのメッセージ>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ DIV>
    			 <input type="submit" name="submit" value="'.$this-> L('更新').'"クラス="ボタン"/>
    
    			 </ fieldsetの>
    		 </フォーム>';
    	 }
    

    私たちの最終的な化粧の変化は、彼らがどこにいるユーザが忘れてしまった場合に備えて私たちの設定画面の上部に見出しを追加することです! 我々は、getContent()関数の先頭で次の行を追加してこの手順を実行します。

     。。で$ this -> _html .='<H2>'$この - >表示名"</ H2>';
    

    事前設定と設定フォームフィールド

    当社独自のチュートリアルの設計から別の欠けている要素は、モジュール構成の形で現在の設定の表示であり、値の更新からフォームが返すフィールドが空白の場合でも、私たちはあまりにもこのグリッチを修正する必要があります。 我々が処理する必要のある二つの可能性があります。

    1. フォームの初期表示は、(もしあれば)現在の設定が表示されます
    2. フォームの更新後に我々は、ユーザが入力したデータが表示されます

    我々は、コンフィギュレーションを使用することができます:::()データベースから現在の設定を取得する関数、およびツールの取得:getValue()でフィールド内容を取得する。 ツール::getValue()でこれが使用する"default"を指定すると関数は、このコンテキストでは有用である二番目のパラメータを取るには、フィールドを空にする必要があります。 我々は現在、適切にこれらの2つの関数を用いて私たちのinputタグの"value"属性を設定することができますので、私たちの最終的なフォームの入力コードは次のようになります。

     <input type="text" name="our_message" value="'.Tools::getValue('our_message', Configuration::get($this->名前。"_MESSAGE ')).'"/>
    

    の設定のいくつかのフィールドを扱うときにするもう一つの有用な変更は、それ自身のプライベート関数にデータベースの更新コードを移動することです。 このため我々は、行を置き換えます。

    
    するif(!はsizeof($この - > _postErrors))
    	 {
    		設定::updateValue($この - >名'_MESSAGE"、ツール::。GetValueメソッド('our_message')、真の);
    		 $この - > _html .='<div class="conf confirm">"の$ this -> L('設定は').'</ divを更新>';
    	 }
    

    :以下のと

    するif(!はsizeof($この - > _postErrors))
    	の$ this -> _postProcess();
    

    そして我々は、単一の、簡単に識別できる場所に実際の更新を処理するために私たちのクラスに新しいプライベートメンバ関数を追加します。

    	プライベート関数_postProcess()
    	 {
    		設定::updateValue($この - >名'_MESSAGE"、ツール::。GetValueメソッド('our_message')、真の);
    
    		 $この - > _html .='<div class="conf confirm">"の$ this -> L('設定は').'</ divを更新>';
    	 }
    

    他のフィールドの型の処理

    スケルトンモジュールの最後のダウンロードで、私はまた、モジュールの設定フォームを作成する便利なショートカットとして機能するフィールドの他の種類の例を追加しました。 これは、チェックボックス、ラジオボタン、テキストエリア、ドロップダウンリストをカバーしています。 あなたがする必要があるのは、機能を適切に)追加する/フィールドの名前を変更、_postValidation()関数に必要な検証を追加し、_postProcess(の更新コードを修正することです。

    必須の設定についてはまた、インストールの機能で自分の存在をテストし、コンフィギュレーションを使用して適切なデフォルトを設定することにより、フロントオフィスなどでエラーが発生してモジュールを防ぐために適切な処置を行う必要があります::updateValue()関数。 それは、(インストール中にこれを実行する方が正しいですがまたこれが)、モジュールのコンストラクタ内で行うことができます。

    複数の表示位置のフックを追加する

    これは我々が実装した唯一のフックだったので私たちのTutorialthirdモジュールは左側の列に私たちのコンテンツを表示することができます。 幸いにもそれは我々のコードで、"移植モジュール"のBackOfficeの機能を実装するのは非常に簡単です。 最も単純な形で我々だけですべての場所で​​同じ出力を使用しますが、必要に応じてこれらの追加のフックのすべてが異なる結果を生むことができます。

    すべての普及した場所に同じ出力を生成するために、我々は単に私たちのモジュールの追加のフック関数を実装し、出力を生成するために、オリジナルのフックのコードを呼び出す必要があります。 我々は、実際にインストールする()メンバ関数のデフォルトのもののためにregisterHook()を呼び出し、およびバックオフィスは、他人の登録を処理させることに注意してください。

    	 hookRightColumn機能($ params)を
    	 {
    		戻すの$ this -> hookLeftColumn($ params)を、
    	 }
    
    	関数hookTop($ params)を
    	 {
    		戻すの$ this -> hookLeftColumn($ params)を、
    	 }
    
    	機能hookHome($ params)を
    	 {
    		戻すの$ this -> hookLeftColumn($ params)を、
    	 }
    
    	関数hookFooter($ params)を
    	 {
    		戻すの$ this -> hookLeftColumn($ params)を、
    	 }
    

    まとめ

    このシリーズの記事にわたって、基本的なモジュールシステムがPrestashopで動作し、フロントオフィスでのさまざまなプレゼンテーション領域に出力を提供するコードモジュールにできること方法を学びましたしてください。 また、上で独自のモジュールを基準にする良いコードのフレームワークがあるでしょう。 あなたは、どの時点で、われわれが実際にモジュールの作成にSmartyのか、そのテンプレートファイルを使用していることに気づいたかもしれない - それらはモジュールの設計自体とは別のエンティティとして見ることができるようにこれは意図的なものです。

    Smartyは、非常に柔軟ですが、それを使用する選択は、多くの要因に基づいており、パフォーマンス上の理由から可能であればその使用を避けるのがベストです。 後の記事では、どのように探求する、それがPrestashopアーキテクチャの基本的な部分なので、ものの、モジュールの機能を強化するためにSmartyを使用するとき。

    下のリンクを使用して、完全なスケルトンモジュールのコードをダウンロードすることができます。

    骨格v0.1.0

    カテゴリ: チュートリアル