GETモジュールのID化

独自に開発したGETモジュールも、標準のビルドインモジュールと同様にモジュールID化する事ができます。ここでは、モジュールID化の仕方と、モジュールID化によってどのような動作になるかみていきます。

モジュールID化できるようにする

まずモジュールID化に対応するため、モジュールID作成時に独自モジュールを選択できるようにします。

ご利用のテーマに以下のファイルを作成し、セレクト要素を記述します。

  • /themes/ご利用テーマ/admin/module/select.user.html
<optgroup label="独自モジュール">
	<option value="Sample"{name:selected#Sample}>独自モジュール(Sample)</option>
</optgroup>

以下の仕様でセレクト要素を記述してください。

  • 値: GETモジュールの呼び出しと同じ値
  • 変数: {name:selected#セレクトの値}

この実装を行う事でモジュールIDの作成ができるようになります。

モジュールIDの作成

モジュールIDの作成ができるようになったので、モジュールIDを作成してみます。以下画像のように作成できると思います。


独自モジュールのID作成画面

独自モジュールのID作成画面


モジュールID化でのコンテキスト情報の取得

モジュールID化した時のコンテキスト情報の取得について解説します。モジュールID化する前は、以下のコードを書く事により、そのページの情報を取得できていました。

var $_scope = array(
  'bid' => 'global',
  'cid' => 'global',
  'eid' => 'global',
);

function get()
{
  $string[] = 'Global Vars';
  $string[] .= "BID = $this->bid";
  $string[] .= "CID = $this->cid";
  $string[] .= "EID = $this->eid";

  return nl2br(implode("\r\n", $string));
}

しかし、モジュールID化したモジュールを利用すると $this->cid や $this->eid で、そのページのコンテキスト情報を取得できなくなります。(bidだけはモジュールID化しても取得できます。)

モジュールID化したモジュールを利用すると、そのままではコンテキスト情報は取得できない。

<!-- BEGIN_MODULE Sample id="sample" --><!--END_MODULE Sample -->

ではどのようにURLコンテキスト情報を取得するかというとモジュールID管理画面で取得したい情報の引数項目にチェックをつけます。これによりURLコンテキストの情報を取得できるようになります。


引数の設定画面

引数の設定画面


これでプログラム側で、以下のようにURLコンテキスト情報を取得できるようになりました。

$string[] = 'Global Vars';
$string[] .= "BID = $this->bid";
$string[] .= "CID = $this->cid";
$string[] .= "EID = $this->eid";

return nl2br(implode("\r\n", $string));

ここまで、$this->cid や $this->eid はURLコンテキスト情報(つまりURLの情報)を取得すると説明してきましたが、モジュールID化する事により、そうでなくなる場合があります。以下の設定画面をみてください。


引数の設定画面2

引数の設定画面2


この場合、表示しているURLが別のカテゴリーや、トップページなどカテゴリー情報がない場合でも、常に $this->cid はお知らせのカテゴリーIDを返すようになります。このようにモジュールID化するとモジュールIDの設定により取得してくる情報は変わるようになります。

モジュールID化時のコンテキスト情報の取得まとめ

引数チェック 固定値 $this->cid などのプロパティ
あり なし URLの情報を取得
なし あり モジュールIDで設定した固定値を取得
あり あり URLに該当の情報があればURLの情報を取得。ない場合は固定値を取得

モジュールIDの設定と関係なく表示ページのURLコンテキストが取得したい場合は、定数を利用します。

項目 定数
ブログID BID
ユーザーID UID
カテゴリーID CID
エントリーID EID
キーワード KEYWORD
タグ TAG
フィールド FIELD
日時検索のスタート START
日付検索のエンド END
ページ番号 PAGE
並び順 ORDER