現在いるエントリーと同じカスタムフィールドの値を持つエントリーを表示する

この記事では、現在いるエントリーと同じカスタムフィールドの値を持つエントリーを表示する方法をご紹介します。

たとえば、{select_item}という変数があったとします。{select_item}では「りんご」「もも」「ぶどう」の中から値が選べるようになっています。記事Aというエントリーが、「りんご」という値を持っていたとき、記事Aの詳細ページに、{select_item}という変数で「りんご」を選択しているエントリーをリストにして一覧することができます。


同じように「りんご」が選ばれたエントリーがサブカラムで一覧になっている

select_itemが「りんご」だったときの詳細ページの図


今回はモジュールで出力されるカスタムフィールドの値を使用したいので、モジュールが出力された後にモジュールを実行しなければいけません。実行順序を少し遅らせるためには、ポストインクルードを使います。ポストインクルードについて詳しくはドキュメントをご覧ください。

以下は、{select_item} という変数をキーにしたいときの記述です。

<!-- BEGIN_MODULE Entry_Field id="current_eid" -->
  <form action="" method="post" class="js-post_include-ready">
    <input type="hidden" value="{select_item}" name="select_item">
    <input type="hidden" value="select_item" name="field[]">
    <input type="hidden" name="tpl" value="include/sub/entryList.html">
    <input type="submit" name="ACMS_POST_2GET" style="display:none;">
   </form>
<!-- END_MODULE Entry_Field -->

1行目と8行目の記述

今回はエントリーの情報を表示したかったため、Entry_Fieldのモジュールを使用しました。

あらかじめ、Entry_Fieldモジュールで、モジュールID名で作成しておきます。ここではモジュールID名を「current_eid」としました。新しく作成したモジュールIDでは、現在いるエントリーの情報を表示できるように、「エントリーID(eid)」のURLコンテキストにチェックをつけておきました。


エントリーID(eid)にチェックをつける

ポストインクルードで使用するためのモジュールIDの設定


5行目の記述

5行目で指定している、include/sub/entryList.html には、とくに特殊な設定は必要なく、通常のモジュールを置いてください。

<input type="hidden" name="tpl" value="include/main/curriculum/this_course_summary.html">

include/sub/entryList.html(通常のモジュール)の例:

<!-- BEGIN_MODULE Entry_List id="select_item_list" -->
<div class="acms-margin-bottom-medium">
<!--#include file="/admin/module/setting.html"-->
  <ul class="acms-list-group">
    <!-- BEGIN entry:loop -->
    <li><a href="{url}" class="acms-list-group-item">{title}</a></li>
    <!-- END entry:loop -->
  </ul>
</div>
<!-- END_MODULE Entry_List -->

モジュールの設定

entryList.htmlの中に記述したモジュールにはモジュールIDの設定をしておく必要があります。ポストインクルードでフィールドの情報を渡しているため、フィールドのURLコンテキストが有効になった状態になったので、モジュールでもフィールドの情報が表示できるようになりました。Entry_List でフィールドの情報を表示するため、モジュールの設定も「フィールド(field)」のURLコンテキストを有効にしましょう。


フィールド(field)にチェックをつける

表示用のモジュールIDの設定


動作の確認

ポストインクルードの記述で値を渡したカスタムフィールドの変数(この記事では「select_item」)と同じカスタムフィールド(この記事ではエントリーのカスタムフィールド)を作成し、値を入力してください。

ポストインクルードを設置したページに戻り、「include/sub/entryList.html」のテンプレートの中身が表示されれば完成です。もし表示されなかった方は手順をもう一度ご確認ください。

関連エントリー機能

関連エントリー機能について

その記事に関連する記事を表示するためのモジュールとして、登録されているタグの一致数に応じて関連記事を表示するタグリレーショナル(Entry_TagRelational)というモジュールがありました。a-blog cms Ver.2.6.0からは(Admin_Entry_Autocomplete)モジュールを使うことで、下の図のようにその記事に関連するエントリーを検索し、エントリーに紐付けることができるようになりました。これにより、より柔軟な関連記事登録が可能になります。


登録されたエントリーは下記のピンクの線で囲まれたハンドルを掴んでドラッグアンドドロップすることで表示順を変更することも可能です。また、右の確認ボタンを押すことで、実際にそのエントリーのページに移動して内容を確認することもできます。


紐づけられたエントリーはテンプレートをカスタマイズすることで下の図のように表示することが可能です。


関連エントリー機能の使い方

この機能を使用するためには管理画面の設定が必要になってきます。

オートコンプリートのモジュールIDを作成

オートコンプリート(Admin_Entry_Autocomplete)モジュールは下の図のようにキーワードを入力し、そのキーワードを含むエントリーを絞り込み登録するためのモジュールです。


オートコンプリート(Admin_Entry_Autocomplete)モジュールはデフォルトでブログに登録された記事全体を検索できるようになっています。検索する記事をカテゴリーやカスタムフィールドなどで絞り込みたい場合はモジュールIDの作成が必要になってきます。 モジュールID化した場合は、URLコンテキストのキーワードにチェックをつけてください



モジュールIDを作成する場合にはモジュールから下の図のようにオートコンプリート(Admin_Entry_Autocomplete)を選択します。また引数を指定することでエントリーを絞り込む範囲を制限することができます。例えばカテゴリーの引数に1を指定するとカテゴリーが1のエントリーの中から記事を検索し登録することができます。


関連エントリー機能を有効にする

関連エントリー機能を使用可能にするために、 管理画面 > コンフィグ > 編集設定 の一番下の設定より下の図のように 関連記事グループの設定を行います。
モジュールID側ではなくここでURLコンテキストでbidなどを指定することも可能です。
複数関連エントリー機能を使用したい場合には追加ボタンから設定を追加します。


エントリーサマリーのモジュールIDを作成

次に関連記事を表示するためのエントリーサマリーのモジュールIDを作成します。
その際、関連エントリー一覧を表示できるように表示設定の一番下の表示内容で下の図のようにチェックをつけ関連エントリーのタイプを選択します。


この設定を行う事で従来通りのテンプレートで登録された記事一覧を表示することができます。また、モジュールIDの引数の設定をしなくても登録したエントリー一覧はエントリーサマリーのモジュールIDにて表示されます。ただし登録したエントリー一覧はエントリーの詳細ページのみでしか表示されませんので、注意が必要です。

a-blog cms Ver 2.5.1 β1 のご案内


本日23日a-blog cmsの誕生日に、次のバージョンVer2.5.1を皆様にお試いただけるようβ版をダウンロードできるようにしました。

注意事項

βバージョンはリリース前の開発版です。公開されているWebサイトには使用しないでください。フィードバックや使ってみた感想のSNSやブログでの公開は大歓迎です。

変更内容

  • 未来プレビュー機能の追加(プロ版以上)
  • フォームIDのグローバル化対応
  • エイリアスのグローバル化対応
  • その他バグフィックス

ダウンロードURL

今回は新規インストール版のみ配布させていただきます。

php5.5.x〜用

〜php5.4.x用

要望、不具合報告などありましたらSNS、ブログなどでフィードバック頂けるとありがたいです。