PowerCMS X ブログ
2020-09-25
複数のモデルから公開日順に5件出力する方法について解説します。
方法としては、以下の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