PowerCMS X ブログ

2020-09-25

複数のモデルから公開日順に5件出力する方法

複数のモデルから公開日順に5件出力する方法について解説します。

方法としては、以下の3点で実装できます。

  1. ビューで各モデルの情報を配列に入れLoopで取り出す方法
  2. SearchEstraier プラグイン (サイト内全文検索機能) を使用して、属性検索を行う方法
  3. プラグインで実装する方法※

※(2020/11/18追記)プラグインを公開しました - 複数のモデルのデータをマージしてソート出力する (MixedObjectsプラグイン) 

本記事では1のビューで各モデルの情報を配列に入れLoopで取り出す方法をメインに解説します。



ここでは記事モデルをコピーして、TestAモデル、TestBモデル、TestCモデルを作成しました。

以下のビューは、この3つのモデルの中から公開日順に5件出力するサンプルとなります。

サンプルビュー

<!-- TestAモデルを公開日順で10件出力 -->
<mt:testas cols="title,published_on" sort_by="published_on" sort_order="descend">
    <mt:testatitle setvar="test_title">
    <mt:testapublishedon setvar="test_pub">
    <mt:setvar name="test_ids" key="$test_pub" value="$test_title"><!-- 公開日をキーに配列に格納 -->
</mt:testas>

<!-- TestBモデルを公開日順で10件出力 --> <mt:testbs cols="title,published_on" sort_by="published_on" sort_order="descend"> <mt:testbtitle setvar="test_title"> <mt:testbpublishedon setvar="test_pub"> <mt:setvar name="test_ids" key="$test_pub" value="$test_title"><!-- 公開日をキーに配列に格納 --> </mt:testbs>
<!-- TestCモデルを公開日順で10件出力 --> <mt:testcs cols="title,published_on" sort_by="published_on" sort_order="descend"> <mt:testctitle setvar="test_title"> <mt:testcpublishedon setvar="test_pub"> <mt:setvar name="test_ids" key="$test_pub" value="$test_title"><!-- 公開日をキーに配列に格納 --> </mt:testcs>
<!-- 配列をキーの降順でループ --> <mt:loop name="test_ids" sort_by="key,reverse"> <!-- 5件だけ出力 --> <mt:if name="__counter__" le="5"> <mt:var name="__value__"> ---- <mt:var name="__key__"><br> </mt:if> </mt:loop>


2,3は別の機会にご紹介しますが、SearchEstraier プラグイン (サイト内全文検索機能) を使用して属性検索を行う方法を少し触れておきます。

https://powercmsx.jp/about/search_estraier_plugin.html


対象のモデルを検索インデックスの対象とし、最新版では mt:estraiersearch タグに no_query 属性が指定できますので、以下のように属性で出力します。

「タグ」で絞り込む例:

<mt:estraiersearch no_query="1" ad_attr="@tags" add_condition="STRINC" value="ドキュメント">
</mt:estraiersearch>

カテゴリー:テンプレート作成Tips | 技術情報

投稿者:ai

ブログ内検索

アーカイブ