MT4.xプラグイン作成/PHPスクリプトのTips http://www.ark-web.jp/sandbox/wiki/2633.html

MT4.xプラグイン作成/PHPスクリプトのTips

(主として)ダイナミックパブリッシングに対応したプラグインを作成する場合、エンドユーザーに公開される生成物(エントリーやWebページ、インデックスページや各アーカイブ)に対して作用する機能に関してはPHPスクリプトを実装し、ダイナミックパブリッシング利用時にはこのPHPスクリプトを動作させることで機能を提供します。
このページではダイナミックパブリッシング対応プラグイン作成のPHPのTipsをまとめていきます。新しいTipsが見つかれば随時追加していきます。

[edit]

初期化処理にフックする

ダイナミックパブリッシングでページが描画されるとき、その大まかなシーケンスは

ブラウザでダイナミックパブリッシングで描画されるページにアクセス
   -> Apacheのmod_rewriteによってmtview.phpが呼び出される
      -> mt.phpがrequireされる
         -> (諸々の描画処理)
 描画 <-

という形になります。ここで、mt.phpはinit_pluginsメソッドでPHPで記述されたプラグインのスクリプトを探します。プラグインのPHPスクリプトはデフォルトで

MT_DIR/plugins/[プラグイン名]/php/

配下に存在することを期待されます。
init_pluginsメソッドでは順に存在するプラグインのPHPスクリプトを探していって、

ですので、ダイナミックパブリッシングの初期化処理にフックしたい場合は、

MT_DIR/plugins/[プラグイン名]/php/init.*.php

ファイルを用意することで対応できます。

[edit]

プラグイン管理画面での設定値の取得

MT4.xプラグイン作成/プラグイン管理画面の作成でプラグインの管理画面を作成し、設定値を定義する方法、取得する方法をそれぞれ解説しています。この設定値をPHPスクリプトから取得したい場合は以下のようにして行います。

 global $mt;
 $pluginData = $mt->db->fetch_plugin_config('[プラグインID]');
 $val =  $pluginData['[取得したい設定値のkey]'];

$mtはプラグインのPHPスクリプト内で利用できるmt.php(MTクラス)の参照でglobal変数で定義されています。$mt->db->fetch_plugin_configメソッドを呼び出すことで指定したプラグインIDのプラグインが持つ設定値をハッシュで取得できます。

例えば、AFormの設定値script_url_dirをPHPスクリプトで取得するには

 global $mt;
 $pluginData = $mt->db->fetch_plugin_config('AForm');
 $script_url_dir =  $pluginData['script_url_dir'];

のようにします。

[edit]

セッションの取得

ブラウザのCOOKIEにセッションIDが格納されている状態でPHPスクリプト側でそのセッションを取得したい場合は次のように行います。

# セッションIDを取得
$sessionId = $_COOKIE['[セッションIDが格納されているCOOKIEのname]'];
if ( !empty($sessionId) ) {
  # シリアライズされた状態のセッション値を取得
 $sessionSerializedValue = $mt->cache_driver()->get($sessionId);
 if ( !empty($sessionSerializedValue) ) {
    # unserializeメソッドでunserializeして連想配列(ハッシュ)にする
  $sessionValues = $mt->db()->unserialize($sessionSerializedValue);
  $val = $sessionValues['[取得したいセッション値のkey]'];
 }
}

投稿者進地 | パーマリンク

| append.gif

tag: Movable TypeMTMTPluginダイナミックパブリッシング?


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-11-13 (木) 10:57:19 (3994d)

アークウェブのサービスやソリューションはこちら