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化時のコンテキスト情報の取得まとめ(共通)

引数チェック

固定値

$this->cid などのプロパティ

あり

なし

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モジュール

スコープの設定

$_scope プロパティ

$scopes プロパティ

テンプレートでの呼び出し

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

module('V2_Sample', 'sample')

戻り値

文字列

配列