MODx Revolutionの新機能に関するプログラマーズノート

この記事では、MODx Revolutionの新しいブランチ(MODx Evolution)にはなかった新機能のいくつかを検討します。 このCMFを使用して、modx-2.0.0-beta-2バージョンが利用可能になったときに作業を開始しました。 約一年半前。 システムがベータ版であった2009年夏から、2010年夏のリリースまで、MODxは開発に大いに役立ち、新しい機能が追加され、古い機能はより速く、より良くなったと言えます。 現在、MODx Revolutionは、シンプルなサイトから大規模なポータルまで、さまざまなWebアプリケーションを構築するための非常に強力なプラットフォームであると考えています。 それでは始めましょう。



MODx Revolutionの次の革新について説明しようと思います。

  1. xPDO
  2. 名前空間
  3. コンテキスト
  4. 新しいキャッシングシステム
  5. 国際化


さあ、まず最初に。





xPDO


最初に、 公式サイトの xPDOの説明からの抜粋:



xPDOは、PHP 4および5で動作する軽量のORBライブラリで、PHP 5.1以降のデータベースアクセスの新しい標準であるPDOの利点を提供します。 データにアクセスするための非常にシンプルで効果的なActive Recordパターンを実装します。



xPDOは、メインのMODxクラスもxPDOクラスの子孫であるMODxコミュニティによって開発されたORBライブラリです。 MODx Revolutionでは、すべてのデータベース操作はxPDOを使用して実行され、コンポーネント開発者もこのライブラリを使用することをお勧めしますが、MODx Evolutionの古いデータベースメカニズムは後方互換性のために残されています。

xPDOを使用すると、さまざまなタイプのデータベースとの通信に単一のインターフェースを使用できます。 現在、MySQLとSQLiteのコネクタが利用可能です。将来、サポートされるデータベースのリストを拡張する予定です。

すべてのデータ操作は、特殊な方法を使用して実行されます。 データの選択、作成、更新、削除には、直接クエリを使用する必要はありません。これにより、SQLインジェクションが実質的に排除されます。



次の例では、親リソースが3に設定されているWebコンテキスト内のすべてのリソースをデータベースから選択し、ヘッダーを出力します。



//

$resources = $modx->getCollection(“modResource”, array(

“parent” => 3,

“context_key” => “web”

));

//

foreach ($resources as $resource) {

echo($resource->get(“pagetitle”).”|”);

}








同様に、オブジェクトの作成、編集、削除が実行されます。



//

$resource = $modx->newObject(“modResource”);

//

$resource->set(“pagetitle”, “ ”);

$resource->set(“content”, “ ”);

// .

//! !

$resource->save();



// 1

$resource = $modx->getObject(“modResource”, 1);

//

$resource->set(“pagetitle”, “ ”);

//

$resource->save();



// 5

$resource = $modx->getObject(“modResource”, 5);

//

$resource->remove();









名前空間


名前空間は、システムコアの一部ではないさまざまなコンポーネントを識別するために使用されます。 実際、名前空間はコア/コンポーネント内のフォルダーであり、xPDO、辞書、およびコンポーネントに必要なその他のリソースのモデルファイルが含まれています。

ネームスペースは、管理システムで追加のページとメニュー項目を作成するためにも使用されます。

各外部コンポーネントには、管理システムで作成できる独自のネームスペースが必要です。



コンテキスト


コンテキストは、MODxのリソースのストレージです。 各リソースは、コンテキストのいずれかに関連する必要があります。 コンテキストには、それに属するリソースツリーの個別のキャッシュがあります。 したがって、コンテキストにリソースを追加または削除するたびに、システムはキャッシュをクリアします。 コンテキストに再度アクセスすると、リソースツリーが生成され、キャッシュに書き込まれます。これにより、リソースが頻繁に追加または削除されると、サイトの動作が遅くなる可能性があります。 そのため、頻繁に更新されるサイトで多数のドキュメントが存在する場合、特定のセクションを別々のコンテキストに配置するのが妥当な場合があります。



コンテキストアクセスポリシーは、特定のコンテキストで特定のユーザーグループに設定された一連の権限を使用して実装されます。 したがって、特定のユーザーが特定のコンテキストでリソースを編集したり、表示したりすることを防ぐことができます。

デフォルトでは、インストール後、システムには2つのコンテキストがあります。web(サイトのユーザー部分のコンテキスト)とmgr(管理パネルのコンテキスト)です。



Webのコンテキストでは、匿名ユーザーにはリソースを表示する権限のみがあり、管理者グループのメンバーであるユーザーにはリソースを使用するすべてのアクションに対する完全な権限があります。 したがって、mgrのコンテキストでは、管理者グループのユーザーのみがリソースを使用してアクションを実行できます。

コンテキストを使用して、単一のMODx Revolutionインストールで複数のサイトを作成したり、サイトユーザーが資料を投稿できるサブドメインを作成したりできます。 ただし、この動作を実装するには、Webコンテキストがデフォルトで初期化され、場合によっては他のコンテキストを初期化する必要があるため、index.phpファイルを少し編集する必要があります。



新しいキャッシュシステム


MODx Revolutionは、新しいキャッシュシステムを提供します。プログラマはこれを使用して、キャッシュにデータを保存し、ライフサイクルを完全に制御できます。 キャッシュからのデータの書き込みと取得の例( 公式 MODx ドキュメントから取得):



// -

$colors = array('red','blue','green');

$modx->cacheManager->set('colors',$colors); /* core/cache/colors.cache.php */



//

$colors = $modx->cacheManager->get('colors');

foreach ($colors as $color) {

echo $color.'-';

} /* 'red-blue-green' */








保存したデータも削除できます。 アンインストールの例:





$modx->cacheManager->delete('colors');









国際化


MODx Revolutionでは、ファイルまたはデータベースに保存されている辞書を使用して、サイトの国際化バージョンを作成できます。 辞書は、言語、テーマ、および行のレベルに分けられます。 ファイルシステムでは、言語とはテーマを持つファイルを含むフォルダーであり、テーマには文字列が含まれます。



ファイルシステムでMODxシステムディクショナリのストレージを整理する例を考えてみましょう。

辞書のルートフォルダーには、IANAが受け入れる言語指定(たとえば、enまたはru)と名前が一致するサブフォルダーが含まれます。 さらに、各言語サブフォルダーには、theme_name.inc.phpという形式の名前のファイルが含まれています。 テーマのある各ファイルには、次の形式の行が含まれています



$_lang['_'] = '_';







サイトページで、辞書の行の値が次のタグとともに挿入されます。



[[%_? &topic=`_` &namespace=`modx` &language=``]]







名前空間パラメータは、レキシコンをロードする名前空間を指定するために使用されます。 言語パラメーターはオプションです。省略した場合、システムのデフォルト設定で設定された言語が選択されます。



MODx Revolutionの新機能の一部のみを検討しようとしました。 このシステムには、私が想像できる以上のものがたくさんあります。 私は、この素晴らしいCMFの研究を続けていくことを嬉しく思っています。



資源


  1. MODx公式ウェブサイト
  2. ドキュメントMODx
  3. XPDOウェブサイト
  4. MODxロシア
  5. 非公式のロシア語コミュニティMODx



All Articles