a-blog cmsの実務制作の流れをまとめています。
今回は、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を選択しておけばつまづきにくいと思います。