モジュールID

目次

モジュールIDの基本

それぞれのモジュールを区別する任意の英数字をモジュールIDといいます。それぞれのモジュールはこのモジュールIDを名付けることによって作動し、またこれによってブラウザ上から「何件表示するか」「何を表示するか」などのモジュールに関する設定ができるようになります。

例えば以下のようなモジュールの設定が可能です。

  • 特定のカテゴリーのエントリー一覧を表示させる
  • 特定の期間だけ表示させる
  • キーワードを対象にした一覧を表示させる
  • タグで絞り込んだ一覧を表示させる
  • エントリー一覧にページャーをつける
  • 特定のモジュールの表示件数を変える

モジュールは、モジュールIDがなくても基本的には動作しますが、モジュールの表示内容を個々に変更したい場合にモジュールIDを作成し適用します。  
モジュールIDを利用することで、URLコンテキストを利用したデータの表示だけでなく、管理画面から指定した条件設定や表示設定に合わせてモジュールを動作させることが可能です。

モジュールIDが適用できるモジュールは、ビルトインモジュールとフィールドモジュールの2つです。

モジュールIDの設定

指定方法としては、テンプレート上のモジュールの BEGIN_MODULE モジュール名の後に id="モジュールID" のように指定をします。以下、Entry_Headlineに対して設定した場合で説明します。

<!-- BEGIN_MODULE Entry_Headline id="top_headline" -->
<ul>
<!-- BEGIN entry:loop -->
<li><a href="{url}">{title}</a></li>
<!-- END entry:loop -->
</ul>
<!-- END_MODULE Entry_Headline-->

モジュールID管理画面から[モジュールIDを作成]ボタンを押すとモジュールIDの条件設定画面に移動します。モジュールではIDを指定したモジュールを選択してください。idには「top_headline」など指定したIDを入力してください。名前はそのモジュールIDがどんな働きをしているのか分かりやすい名前にするとよいでしょう。


下階層の子ブログでもこのモジュールを利用できるようにする

グローバルの項目で下の階層のブログが利用することを許可するというチェックをすると自分より下階層の子ブログで同じモジュールIDをテンプレートに記述すると継承して使うことができます。ここにチェックを入れない場合はこのモジュールはこのブログだけに所属することになり、下階層の子ブログで使うことができません。

条件を指定する

引数にはブログID、カテゴリーID、エントリーID、ユーザーID、タグ、キーワード、カスタムフィールドなどさまざまな条件を指定することができます。

特定のカテゴリーで絞り込む

お知らせカテゴリーの一覧を表示したいときは、お知らせカテゴリーのIDを指定します。もしお知らせカテゴリーのカテゴリーIDが3の場合、入力フォームに3と入力してください。またID参照というリンクをクリックするとブログ、カテゴリー、ユーザーのIDを調べて選択するとIDを調べることができます。



特定のカスタムフィールドの値を持っているエントリーを表示する

特定のカスタムフィールドを持っているエントリーを一覧で表示することができます。

チェックボックスのカスタムフィールド(カスタムフィールド変数:pickup、値:true)でチェックしたエントリーだけ表示させる場合は、フィールド(field)のところに pickup/true と入力してください。(カスタムフィールド変数:pickup、値:true)を持っているエントリーのみ表示できます。

<label class="acms-form-checkbox" for="input-pickup-true"><input type="checkbox" name="pickup[]" value="true" id="input-pickup-true"{pickup:checked#true} /><i class="acms-ico-checkbox"></i> pickupする</label>
<input type="hidden" name="field[]" value="pickup" />


また演算子もエントリーの絞り込みに利用できます。 例えば、nem(値が空でないとき)を使うことで、pickupというカスタムフィールドに値が入っている場合にのみエントリーを表示することができます。 このフィールドで使用出来る演算子として以下のものがあります。

演算子条件意味
eq=等しい
neq!=等しくない
gt>より大きい
gte>=以上
lt<より小さい
lte<=以下
lkLIKE含まれる
nlkNOT LIKE含まれない
reREGEXP指定した正規表現に合致する
nreNOT REGEXP指定した正規表現に合致しない
emEMPTY値が空(何も入っていない)
nemNOT EMPTY値が空(何も入っていない)ではない

また、_or_ や _and_ といった演算子も使用可能です。
例えば、toho(徒歩)6分以下でprice(家賃)50000円以下の物件を表示したい場合は以下のような値がフィールドに入ります。
toho/lte/6/_and_/price/lte/50000

特定の日時のエントリーを表示させる

開始日時(start)や終了日時(end)に年月日と時分秒を入れて特定の期間内に該当するエントリーを表示させることができます。応用として、値の欄にグローバル変数を使うことで現在時刻を基準とした制御をすることもできます。この条件ではエントリーの日時を参照します。



下階層のデータを絞り込み

自分より下階層のブログやカテゴリーのデータも表示内容に含めるか選択することができます。

  • 下階層のブログを含めない場合は、自分自身のエントリーだけ表示します。
  • 下階層のブログも含める場合は、自分自身と下階層のブログのエントリーを含んだ内容を表示します。
  • 下階層のブログのみを対象とする場合は、自分の下階層のブログのエントリーだけ表示します。

モジュールIDの引数

モジュールID条件設定ではカテゴリーやエントリー、ページなどの項目にチェックボックスがついています。このチェックボックスはURLコンテキストの値を参照しています。



カテゴリーIDの入力フォームではcidの数字を入力しますが、引数にチェックすることでURLの情報に合わせてデータの表示することができます。

引数チェックボックスの使い方

引数のチェックボックスは、URLコンテキストに応じて表示する内容を変えることができます。URLコンテキストについてはURLコンテキストのページをご覧ください。

現在表示しているカテゴリーの一覧を表示させたい

カテゴリーIDの引数チェックボックスにチェックをしてください。

http://www.example.com/news/ のときはnewsカテゴリーのエントリー一覧を表示します。 http://www.example.com/products/ のときはproductsカテゴリーのエントリー一覧を表示します。
このようにURLの値によって表示させるデータを変えることができます。わざわざnewsカテゴリー一覧表示用のモジュールを作ったり、productsカテゴリー一覧表示用のモジュールを作ったりしなくてよくなります。

ページャーを使いたい

ページャーを表示させ、さらにページ(page)の引数チェックボックスにチェックをしてください。

例えば、お知らせエントリーの2ページ目のエントリーを表示させるときは、ページャーで2ページ目へのリンクを表示させると、URLの値に /page/2/ が出力されます。しかし、これだけでは2ページ目の情報を表示することはできません。
さらに、ページ(page)の引数チェックボックスにチェックすることで、2ページ目へのリンクをクリックしたときに現在のページの情報を表示することができます。 http://www.example.com/news/page/2/

キーワード検索したい

キーワード(keyword)の引数チェックボックスにチェックをしてください。

検索フォームからキーワードを入力して検索するとURLに検索したキーワードが入ります。例えば「醤油」というキーワードで検索するとURLに /keyword/醤油/ という値が含まれ、「醤油」という文字を持っているエントリー一覧を表示することができます。
http://www.example.com/keyword/醤油/

タグの絞り込みがしたい

タグ(tag)の引数チェックボックスにチェックをしてください。

タグクラウドのリンクをクリックするとURLに選択したタグの値が入ります。例えば「フォーム」というタグを持ったエントリーの一覧を表示させたいときはURLに /tag/フォーム/ と入れて絞り込めるようにします。
http://www.example.com/tag/フォーム/

カスタムフィールドの絞り込みがしたい

フィールド(field) の引数チェックボックスにチェックをしてください。

カスタムフィールドの絞り込みをする場合はURLに /field/カスタムフィールド変数名/値/ が入っていれば、そのカスタムフィールドの値を持っているエントリーを表示することができます。
http://www.example.com/field/pickup/true/

期間で絞り込みがしたい

開始日時(start)と 終了日時(end)の引数チェックボックスにチェックをしてください。

例えば、Entry_ArchiveListモジュールなどで2014年1月に投稿したエントリー一覧を表示させる場合はURLに /2014/01/ という値が入ります。「開始日時(start)」と「 終了日時(end)」の引数がチェックすることで、2014年1月に投稿したエントリー一覧を表示させることができます。
http://www.example.com/2014/01/

思うようにモジュールの表示ができない場合

中には、モジュールを設定しても思うように表示されないことがあるかもしれません。 その場合は、以下の項目をご参考にしてください。

カテゴリーエントリーリスト ( Category_EntryList ) またはカテゴリーエントリーサマリー ( Category_EntrySummary ) が表示されない

カテゴリーエントリーリスト(Category_EntryList)またはカテゴリーエントリーサマリー ( Category_EntrySummary ) は、モジュールIDを割り当てていないデフォルトの状態だと、今見ているページが属するカテゴリーを基点にコンテンツを表示しようとします。

そのため、今見ているページが属するカテゴリーが、子カテゴリーやエントリーなどのコンテンツを持っていない場合、何も表示されなくなります。常に任意のカテゴリーを基点に表示したい場合は、モジュールIDを割り当てて、cidを任意のカテゴリーのものに設定してください。



ページ(page)やキーワード(keyword)の一覧に移動しても表示が変わらない

URLコンテキスト上で指定されたページやキーワードの指定を反映するかどうかは、各モジュールの引数の設定によって変わります。

またデフォルトの設定値もモジュールによって異なります。たとえば、Entry_Bodyモジュールは、ページやキーワードを反映しますが、Entry_Summaryモジュールはそれらをデフォルトでは反映しません。

そのため、ページやキーワードを反映させるには、モジュールIDを設定します。 モジュールIDの設定画面に「キーワード(keyword)」「タグ(tag)」「ページ(page)」などURLの値を参照するチェックボックスがあります。

たとえば、「http://ドメイン/page/2/」というURLの場合は、URLの値を参照してモジュール側で/page/の2ページ目のデータを表示してくれます。

エントリーの一覧のページャーを使いたい場合

フォト (Entry_Photo)モジュールやサマリー (Entry_Summary)モジュールなどエントリーの一覧を表示するときにページャー機能を使うことがあります。 ページャー機能を使うときは、モジュールIDを作成し「ページ(page)」の引数にチェックをしてください。

検索結果の一覧を表示したい場合

「キーワード(keyword)」と「ページ(page)」の引数にチェックをしてください。

タグの絞り込み(タグクラウド)結果の一覧を表示したい場合

「タグ(tag)」と「ページ(page)」の引数にチェックをしてください。



ページャー機能を有効にしましょう

ページャー機能を有効にすると、以下の画像のように各ページ一覧へのリンクが生成されます。



モジュールの表示設定にページャーという項目があります。「 ページャーを表示できるようにする」にチェックを入れてください。


エントリー系モジュールの初期スコープ

エントリー系モジュールの初期スコープ

モジュールIDを設定していない状態のモジュールの場合、表示内容にURLコンテキストを反映するかどうかは、固有の初期スコープによって決定されます。

そのためモジュールによっては、モジュールIDを設定しないとURLコンテキスト上のpageが反映されなかったり、下階層のブログの情報を表示しなかったりします。

下記の表を参考に、モジュール毎の初期設定をご確認ください。

URLコンテキストの反映に関する初期設定

  • ○ = 反映する
  • × = 反映しない


名称 Body List Headline Photo Summary ArchiveList GeoList
bid × × × × ×
uid × × × × ×
cid × × × × ×
eid × × × ×
keyword × × × × ×
tag × × × × ×
field × × × × ×
start × × × × ×
end × × × × ×
page × × × × ×

階層構造の追跡に関する初期設定



モジュール名 Body List Headline Photo Summary ArchiveList GeoList
ブログ階層 自分+自分以下 自分のみ 自分のみ 自分のみ 自分のみ 自分のみ 自分のみ
カテゴリー階層 自分+自分以下 自分のみ 自分のみ 自分のみ 自分のみ 自分のみ 自分のみ

モジュールIDのキャッシュ

a-blog cms Ver.2.11.0よりモジュールIDのキャッシュ機能が使えるようになりました。a-blog cms のキャッシュ機能は基本的に、ページ単位でキャッシュを行う仕組みになっております。 そのため、URLが少しでも違うとキャッシュが利用されず、そのページにある全てのモジュールが動作してしまいます。ページを構成する要素はたくさんありますが、例えば「グローバルナビゲーション」や「フッター」の情報などは頻繁に変わるものではありません。 情報は変わっていないのに、そのページにある他の要素が更新されたことで、このような更新が少ないモジュールも毎回PHPが動作して生成しなおすのは、パフォーマンス的にあまりよろしくありません。

そこでVer.2.11.0からはページ単位以外に更新頻度が違うモジュールごとにキャッシュができる仕組みを導入しました。

設定方法

管理画面 > モジュール > 該当するモジュールIDに移動します。「条件設定」を開き「キャッシュ」に分単位で数値を設定します。 ここで設定した時間がキャッシュの有効期限となります。


モジュールキャッシュの削除タイミング

モジュールのキャッシュは以下のような条件で削除されるようになっています。

  • 該当のモジュールIDが更新されたタイミング
  • 該当のモジュールIDのキャッシュ時間の設定を経過したタイミング

なお、該当のモジュールIDのテンプレートが更新されたタイミングで別のキャッシュができますがキャッシュ自体が削除されるわけではないのでご注意ください。