Blog

ブログ

a-blog cmsの実務制作(6)モジュールIDの設定

a-blog cmsの実務制作の流れをまとめています。

初めての方は(1)からお読みください

今回は、a-blog cms独自の機能「モジュールID」についてです。

モジュールIDとは

モジュールIDは、表示条件を細かく設定したい場合に使用する「目印」です。
CSSではHTML要素にclassやid属性を付与し、細かい見た目を定義しますが、モジュールIDもそれと同じ仕様になっています。

例えばテーマ作成時に、以下のようにモジュールにidを付けておくと

<!-- BEGIN_MODULE Entry_Headline id="SampleID" -->
(エントリー一覧のコード)
<!-- END_MODULE Entry_Headline -->

管理メニューの「モジュールID」設定画面で
「IDがSampleIDの場合は、カテゴリーが○○○○の記事だけを昇順で10件表示する」
という条件を定義することができます。

MovableTypeを使っている人は気が付くと思いますが、MTの場合はテンプレート内にmt:Entriesタグに直接表示条件を定義します。

<mt:Entries category='○○○○' sort_order='ascend' limit='10'>
(エントリー一覧のコード)
</mt:Entries>

これに対し、a-blog cmsはテンプレート内に条件を書いていないので、納品後に管理メニューから条件を変更することができますし、使い回しのききそうなIDを付けておくと、その後の別案件でも同じコードを使い回せるのです。

ルールとの違い

a-blog cmsにはモジュールIDと似たような「ルール」という機能もあり、使い分けが難しいところです。
違いを図にしてみました。

ルールは、「表示しているページが特定の条件を満たしたとき」に「コンフィグ全体」をごっそり上書きします。
なので「カテゴリーIDが1と3のときは投稿画面のカラム設定を変更する」とか「ユーザーエージェントがiPhoneのときはスマートフォン用のテーマを表示する」といった、大胆な変更に利用します。
ただし、UA以外の条件はページのURLに依存します。カテゴリーに関する条件を、カスタムフィールド検索や月別アーカイブなどで有効にすることはできません。

一方、モジュールIDは「任意のIDを付けたモジュールを表示するとき」に「コンフィグ内のモジュール設定」のみを上書きします。
また、表示内容をページのURLに依存させることも、無視することもできます。この辺りは以降の設定方法で詳しく書きます。

IDの新規追加

管理メニューの「モジュールID」設定画面で、新規追加を行います。追加ボタンは一覧の左下にあります。

「ID情報」の項目では、上書きするモジュール、結びつけるIDなどを指定します。説明書きは面倒でもちゃんと書くようにしましょう。

「引数」の項目では、絞り込みたい条件を設定します。条件の設定方法には二種類あります。

引数:固定値(テキストボックス)

固定値を入力すると、どのページを表示していても、必ずその条件に合致した記事を表示します。
上のスクリーンショットの場合、カテゴリーIDが「4」となっていますから、他のカテゴリーのページでもIDが4の記事しか出ないことになります。
通常の記事絞り込みの場合は、ほぼ固定値指定で事足ります。

引数:変動値(チェックボックス)

ちょっとわかりにくいのが、チェックボックスの使い方です。

見出しのところに大きく書いてある「URLコンテキストが優先される」とは「現在のページで表示されるはずの内容に従って変動する」という意味です。

例えばトップページからのパスが、/food/meat/だった場合は「food」カテゴリー内の「meat」カテゴリーと考えられます。
このときに表示しているモジュールIDの「カテゴリー」にチェックだけが入っていた場合は、該当記事を自動的に探して表示することになります。

また、/search/field/size/S/だった場合はカスタムフィールド「size」の値が「S」の記事が絞り込まれます。
このとき「フィールド」にチェックだけが入っていると、該当記事を自動的に探して表示することになります。

なので、条件となる値が決まっていない場合、あとで変わってしまう可能性がある場合、他の場所でモジュールIDを使い回したい場合は、チェックを入れておけば融通が利かせることができます。

ページナビゲーションがある場合の注意

さて、モジュールIDの「ページ」にチェックを入れると、2ページ目のURLを表示した場合は自動的に2ページ目の一覧を表示します。

…ここで、沢山のユーザーがつまづいているのですが

ページナビゲーションに対応した一覧を作る場合は、「ページ」にチェックを入れておかないと1ページ目しか出ません。

「ページ」の項目のチェックボックスに
チェックを入れておかないと
たとえ1000件記事があっても
最初の1ページ目しか出ません!

大事なことなので二回言いました。ええ…私も一日悩みましたので…

これ、デフォルトでチェックが入るようにした方がいいんじゃ(ry

…まあ、とりあえず条件の指定が終わったら、モジュールIDを保存してください。

ID別のモジュール設定

設定を保存すると、モジュールIDが一覧に追加され、右端に「モジュール」リンクが加わります。
クリックすると、コンフィグにあるものと同じモジュール設定画面となりますが、ここで設定した内容はIDを指定した箇所でしか反映されません。
全体のコンフィグの記事表示数が1ページにつき「10件」となっていても、ここだけ「3件」とすることができるわけです。

表示順、件数、オフセット(先頭何件目から表示するか)、新着マークの表示時間などを設定しましょう。

表示を確認する

設定が終わったら保存して、IDを指定した一覧を確認してみてください。


モジュールIDは「ページナビゲーションがあるときはページにチェックを入れる」というところにだけ注意すれば、ルールより小回りが利き、便利な機能です。

特にトップページに各コンテンツのピックアップを表示するとき、現在カテゴリーのローカルナビゲーションを表示するときは、必ず使うことになります。
うまく使いこなしてくださいね 😀

次は詳細ページの説明なんですが…まとめ方に悩み中><

補足:エントリーモジュールの初期設定

本記事では割愛しましたが、エントリー系のモジュールは「初期状態でURLコンテキストのどの内容を自動参照するのか」が種類ごとに決まっています。

なので、モジュールにEntryBodyとEntryHeadlineを使ったときはまず問題なくリストが表示されますが、それ以外は必ずモジュールIDで条件を定義しなければならない、ということになります。

カスタムフィールドの絞込み結果などを表示するときは、モジュールにEntryBodyを選択しておけばつまづきにくいと思います。