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コンテキストが取得したい場合は、定数を利用します。

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