2017年に最小規模のMODX Evolutionのモジュールを作成する

モジュールとは



次のタイプのリソーステンプレート、チャンク、スニペット、プラグイン、およびモジュールがMODX EVOに表示されます。 システムで作業している場合、最初の3つが何を担当しているのかを正確に知っていますが、おそらく後者を個人的に操作したことがないでしょう。 プラグインはMODXに統合されたコードであり、管理インターフェイスとの相互作用の仕組みを変更できます。プラグインを使用すると、リソースを編集するためのデータの表示方法を変更し、実行する対話の段階を指定できます。 簡単に言えば、プラグインの助けを借りて、ハンドラーをハングさせます。



しかし、この記事では、モジュールに関する他の何かについて少しお話したいと思います。 私はインターネット上でこのトピックに関する情報が非常に少ないという理由でこの記事を書いていますが、ロシアのセグメントではまったく見つけられませんでした。

モジュールは、MODXアーキテクチャに基づくアプリケーションであり、制御システムの機能を拡張します。 モジュールは一連の要素(スニペット、チャンク、データ)をグループ化し、インターフェースと実装を分離することでカプセル化の原則を実装できます。


具体的には、モジュールの助けを借りて、ドキュメントの大量編集やユーザーにとって便利なオンラインストアの管理など、独自のインターフェイスでアドオンを作成できます。



新しいモジュールを作成する



モジュールの作成は非常に明白です。 モジュールタブ->モジュール管理に移動し、右上隅で新しいモジュールボタンをクリックしてから、必要なすべてのフィールドに入力してボタンを保存します。誰もこれに問題はないと確信しています。 モジュールを保存すると、モジュールタブに表示されます。



画像



モジュールコード



モジュールの作成は素晴らしいですが、このモジュールが何かをしたいという奇妙な欲求がある場合があります...モジュールが行うすべてのことについて、モジュールコードフィールドが責任を負い、モジュールに入るとすぐに実行されるphpコードを単に記述します。 開始タグと終了タグ<?Php?>を使用することはできないため、HTMLコードを表示する場合は、標準エコーストリームを介して出力するか、このコードがより便利になるファイルに書き込む準備をしてください。フォーム。 もちろん、コードを別のファイルに入れて停止することをお勧めします。 従来、モジュールファイルはディレクトリ「/ assets / modules / {Module name}」にあるため、このディレクトリに適切なフォルダを作成し、そのモジュールコードを参照します。



//         modx  MODX_BASE_PATH require_once(MODX_BASE_PATH.'assets/modules/newmodule/index.php');
      
      





これで、モジュールの起動時にこのコードがすべて実行されます。



ここで便利なことを試してみましょう。たとえば、特定のテンプレートを使用してすべてのドキュメントを1か所に表示します。これは、たとえば、サイトに多くの製品があり、カテゴリに散らばっている場合に便利です。 これを行うには、modx自体の機能を使用するか、たとえば$ modx-> runSnippetメソッドを使用して、すべてのドキュメントをお気に入りのDittoのすべての進化論者を通じて取得します。 しかし、まず最初に、非常に単純なものに焦点を当て、$ modx-> dbで指定されたベースを操作するためのラッパーを介してこれらのドキュメントを取得します。



 //   ,             $docs = $modx->db->query("SELECT id, pagetitle FROM modx_site_content WHERE template='8'")->fetch_all(); foreach($docs as $doc){ $docId = $doc[0]; $docTitle = $doc[1]; echo "<p><a href='index.php?a=3&id=$docId'>$docTitle</a></p>"; }
      
      





モジュールに移動すると、最も美しいものではなく、id = 8のすべてのドキュメントへのリンクが表示されます。



画像



しかし、誰もがコードにアクセスしてテンプレートのIDをそこに記述したくない場合はどうでしょうか。



MODXの構成



アプリケーションの変数を設定するために、プラグインとモジュールにはいわゆる設定があり、コード内の特定の変数として利用できるさまざまな入力タイプで好きなだけ変数を設定できます。 構成は、プロパティタブでJSON配列の形式で構成され、保存後、構成ページで自動的に美しいプレートに変換されます。 プロパティタブにデータを入力する例を次に示します。



 { "card_template": [ { "label": " ", "type": "string", "default": "", "desc": "id   " } ], "price_tv": [ { "label": "", "type": "string", "default": "", "desc": "id tv    " } ] }
      
      





ここにも質問はありません。 その後、コードを再構築して、テンプレートidがこの変数から$ card_templateという名前で取得されるようにすることができます。



美しくする方法



他のことを行うことに加えて、アプリケーションを管理パネルの一般的なスタイルに合わせたいと思うでしょう。 modxコードを掘るのはあまり楽しくないので、少し苦しむ必要があります。そのため、以下にモジュールとして使用するテンプレートとして使用できるコードを挿入します。



 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AndyShop</title> <link rel="stylesheet" type="text/css" href="media/style/MODxRE2/style.css"> <link rel="stylesheet" href="media/style/common/font-awesome/css/font-awesome.min.css"> <script type="text/javascript" src="media/script/tabpane.js"></script> </head> <body> <h1 class="pagetitle"> <span class="pagetitle-icon"> <i class="fa fa-shopping-bag"></i> </span> <span class="pagetitle-text">   </span> </h1> <div class="sectionBody" id="andyShopPane"> <div class="tab-pane"> <script type="text/javascript"> tpResources = new WebFXTabPane( document.getElementById( "andyShopPane" ), true); </script> </div> <div class="tab-page" id="Products"> <h2 class="tab"><i class="fa fa-newspaper-o"></i></h2> <script type="text/javascript">tpResources.addTabPage( document.getElementById( "Products" ) );</script> <!--    --> </div> <div class="tab-page" id="Orders"> <h2 class="tab"><i class="fa fa-shopping-bag"></i></h2> <script type="text/javascript">tpResources.addTabPage( document.getElementById( "Orders" ) );</script> <!--    --> </div> </div> </body> </html>
      
      





画像



さて、これでクライアントに表示できる非常に簡潔なページが得られました。



なぜMODX EVO



現在、まともな社会では、可能な限りあらゆる方法でMODXの進化ブランチを中傷することが慣習となっています。 私はこの意見に同意せず、MODX Revolutionのような強力なツールを使用しても、彼の兄にはまだ存在する権利があると信じています。 これは、主に、EVOが企業のWebサイトや可変リンク先ページの開発により適しているという事実によるものです。



まず、より明確な構文と、インターフェイスをオーバーロードする多くのツールがないためです。 第二に、2016年12月からのバージョン1.2のリリースにより、ユーザーにとって快適なテーマが登場し始めたという事実によります。 そして、3番目に、Evolution管理パネルはRevoよりも本当に速いと感じています。 コミュニティと幅広い既製のソリューションについては、若い戦闘機がここで確実に勝ちます。



画像



おわりに



ショップキーパーやドキュメントマネージャーなど、MODX Evolutionには非常に多くの便利なモジュールがありますが、それらのほとんどは大幅な改良が必要であるか、タスクを解決するのにまったく適していません。 このCMFを使い始めたばかりの頃、私は本当に注意を失っていました。 まだ質問があれば、喜んでお答えします。



All Articles