a-blog cmsで投稿一覧ページを作成した時のミスなど(エントリー系モジュールの初期スコープとURLコンテキスト)

a-blog cmsには「モジュールID」という概念があります。
WordPressだと標準のループとは違った投稿一覧を表示させる場合、get_postやらquery_postやらを使いますが、使いどころはそれと同じようなものだと勝手に理解しています。
違うのは、引数の指定をテーマ内にコード記述するのではなく、管理画面上のGUIから設定するところです。

ただ以前、自分の案件を引っさげてa-blog cms合宿に参加した時、「モジュールを1つしか使わない場合も、標準モジュールのまま使うのではなく、モジュールIDを付けておいた方が後々何かと助かるよー」と教えていただいたので、そのように使っています。

さて、そういう理解で今回の案件に取り組んだところ、完全に躓いた箇所があったのでまとめておきます。

今回の案件は以下のような実装をしました。

  • 一覧ページはEntry_Summaryモジュールを使って投稿タイトルと画像、カスタムフィールドで簡単な説明文を表示
  • Entry_Summaryには、モジュールIDを指定
  • カテゴリアーカイブ、タグアーカイブも同じモジュールIDを使用

そうしたら、全く意図した表示になりませんでした。。。
どうなったかというと、

  • カテゴリアーカイブ、タグアーカイブページへアクセスしても、すべての投稿一覧が表示されてしまう
  • 投稿が増えて、ページ送り機能で「次へ」をクリックしても、URLは/page/2になるのに表示される内容は1ページ目と同じ

という困ったことになりました。

解決方法

解決方法だけ先に書くと、実は簡単な作業でした。

  • モジュールIDの詳細設定画面で、引数指定の欄の「カテゴリー」「タグ」「ページ」のチェックをONにする→保存

以上!

解説

エントリーを表示させるためのモジュールはいくつかあるのですが、その中でもEntry_bodyとEntry_Headline以外は、モジュールIDの引数を正しく設定しないと意図した表示にならないようです。

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

URLコンテキストは参照されなくなります
モジュールIDとして指定すると、モジュールの表示内容に対して、URLコンテキストは参照されなくなります。モジュールIDを作成した場合は、すべての引数について任意の設定を行ってください。
それぞれの引数項目のチェックボックスを有効にした場合に限り、その項目についてはURLコンテキストを優先する設定になります。URLコンテキストのキーワードやページの情報を参照させたい場合は、その項目にチェックを有効にします。

ページ送りの挙動が違うところはget_postとquery_postの違いにちょっと似てる気がしました。
(いや、違うけど) ※Thanks for @ahomu

重要な補足

実は、記事を新しく投稿せずにモジュールIDの設定を変更した場合、キャッシュが残ってしまって、やっぱり正しく表示されないということが起こります。
(しかも、自分がログイン状態だと気づかない)

設定後はキャッシュクリアを忘れずにしましょう!   ※Thanks for @kazumich

その他の参考ページ

コメントをどうぞ

メールアドレス (必須・公開されません)
コメント本文

  • スパム・迷惑コメント投稿防止のため、メールアドレスの入力が必須ですが、公開はされません。何卒ご協力のほどお願いいたします。
  • 投稿いただいたコメントは管理者のチェック後掲載しておりますので、即時には反映されません。
  • 記載内容に関する批判や間違いの指摘などはそのまま掲載する方針ですが、投稿内容と無関係な誹謗中傷、一方的な罵詈雑言の場合は削除させていただく可能性があります。
  • 通常業務の合間にコメントチェックをしておりますので、すべてのコメントへのお返事が出来ない場合もございます。あらかじめご了承ください。
  • 管理人個人への連絡等は、コメント欄ではなくコンタクトフォームをご利用ください。

書籍を執筆しました

WordPress 標準デザイン講座【Version 4.x対応】


翔泳社さんより、2015/02/27発売しました。2年経ちますのでもう賞味期限切れだとは思いますが、一応実績として...

寄付歓迎(・ω<)☆

当ブログの記事があなたの役に立ったら、気が向いたらでいいのでドネーションいただけると更新の励みになります!
気が向いた方はこちらから

ブログ内検索