GETモジュールのID化
独自に開発した GET モジュール及び、V2 GET モジュールも、標準のビルドインモジュールと同様にモジュールID化できます。ここでは、モジュールID化の仕方と、モジュールID化によってどのような動作になるかを説明します。
モジュールID化できるようにする
まずモジュールID化に対応するため、モジュールID作成時に独自モジュールを選択できるようにします。
ご利用のテーマに以下のファイルを作成し、セレクト要素を記述します。
ファイル: /themes/ご利用テーマ/admin/module/select.user.html
従来のGETモジュールの場合
<optgroup label="独自モジュール">
<option value="Sample"{name:selected#Sample}>独自モジュール(Sample)</option>
</optgroup>V2 GETモジュールの場合
<optgroup label="独自モジュール">
<option value="V2_Sample"{name:selected#V2_Sample}>独自モジュール(V2 Sample)</option>
</optgroup>仕様(共通)
値: テンプレートで呼び出すモジュール名と同じ値
変数:
{name:selected#セレクトの値}
この実装を行うことでモジュールIDの作成ができるようになります。
モジュールIDの作成
管理画面のモジュールID作成画面で、上記で追加した独自モジュールを選択し、識別子(identifier)を設定してモジュールIDを作成します。
従来のGETモジュールの呼び出し
標準テンプレートでは id 属性で識別子を指定します。
<!-- BEGIN_MODULE Sample id="sample" --><!-- END_MODULE Sample -->V2 GETモジュールの呼び出し
Twig テンプレートでは module() の第2引数で識別子を指定します。
{% set result = module('V2_Sample', 'sample') %}モジュールID化でのコンテキスト情報の取得
モジュールID化した時のコンテキスト情報の取得について解説します。従来のGETモジュールと V2 GET モジュールで、スコープの設定方法が異なりますが、引数・固定値によるコンテキストの取得ルールは共通です。
モジュールID化する前
モジュールIDを指定しない場合、スコープで global を設定していれば、$this->bid、$this->cid、$this->eid で表示ページの URL コンテキスト情報を取得できます。
従来のGETモジュール
public $_scope = [
'bid' => 'global',
'cid' => 'global',
'eid' => 'global',
];
function get()
{
return "BID = $this->bid, CID = $this->cid, EID = $this->eid";
}V2 GETモジュール
protected $scopes = [
'bid' => 'global',
'cid' => 'global',
'eid' => 'global',
];
public function get(): array
{
return [
'bid' => $this->bid,
'cid' => $this->cid,
'eid' => $this->eid,
];
}モジュールID化した場合
モジュールIDを指定して呼び出した場合、そのままでは $this->cid や $this->eid で表示ページのコンテキスト情報を取得できません。(bid だけはモジュールID化しても取得できます。)
URLコンテキスト情報を取得するには
モジュールID管理画面で、取得したい情報の引数項目にチェックを付けます。これにより URL コンテキストの情報を取得できるようになります。
固定値の設定
$this->cid や $this->eid は通常 URL コンテキスト情報を取得しますが、モジュールID化すると、固定値を設定することで挙動が変わります。
モジュールID管理画面で固定値を設定した場合、表示している URL が別のカテゴリーや、トップページなどカテゴリー情報がない場合でも、常に $this->cid は固定値で設定したカテゴリーIDを返すようになります。
モジュールID化時のコンテキスト情報の取得まとめ(共通)
引数チェック | 固定値 |
|
|---|---|---|
あり | なし | URL の情報を取得 |
なし | あり | モジュールIDで設定した固定値を取得 |
あり | あり | URL に該当の情報があれば URL の情報を取得。ない場合は固定値を取得 |
表示ページのURLコンテキストを常に取得したい場合
モジュールIDの設定と関係なく表示ページの URL コンテキストを取得したい場合は、定数を利用します。
項目 | 定数 |
|---|---|
ブログID | BID |
ユーザーID | UID |
カテゴリーID | CID |
エントリーID | EID |
キーワード | KEYWORD |
タグ | TAG |
フィールド | FIELD |
日時検索のスタート | START |
日付検索のエンド | END |
ページ番号 | PAGE |
並び順 | ORDER |
最大表示件数 | LIMIT |
// モジュールIDの設定に関係なく表示ページのカテゴリーIDを取得
$displayPageCid = CID;従来のGETモジュールと V2 GETモジュールの違い(モジュールID化)
項目 | 従来のGETモジュール | V2 GETモジュール |
|---|---|---|
スコープの設定 |
|
|
テンプレートでの呼び出し |
|
|
戻り値 | 文字列 | 配列 |