カテゴリ別にエントリーの表示順を変更したい

49 views
Skip to first unread message

kosuke takata

unread,
Mar 2, 2023, 12:49:02 AM3/2/23
to a-blog cms forum
いつもお世話になります。
表題の件でお伺いしたいと思います。

システムバージョンは 2.10.44です。

親カテゴリ ┗子カテゴリ1 ┗子カテゴリ2 ┗子カテゴリ3

という階層になっている状態で、
各一覧ページには同じテンプレートを使用し、Entry_Headlineでエントリーを一覧表示しています。
表示にはサイト内の他ページで影響があった時に面倒なのでコンフィグを直接触らずモジュールIDを作成しています。

通常は表示順を日付(降順)にしているのですが、
子カテゴリ3を一覧表示している場合は日付(昇順)にしたいと思っています。

専用にモジュールIDを作成することなく実装するのに良い方法はありますでしょうか。
BEGIN_MODULE に ctx="order/datetime-asc" を入れれば?かと思いましたがうまくいきませんでした。

どうぞご教授お願い致します。

笠谷亜貴子

unread,
Mar 3, 2023, 2:58:29 AM3/3/23
to a-blog cms forum

いつもお世話になっております。アップルップル笠谷と申します。


https://developer.a-blogcms.jp/document/template/entry-2851.html

こちらに記載のあるとおり、コンテキストの優先順位は


1. モジュールIDの設定に、URLコンテキストのチェックが入っていて、現在表示しているページでURLコンテキストが指定されている状態

2. モジュールIDの設定に、引数が固定値で指定されている状態

3. テンプレートで外部コンテキスト(ctx)を設定した状態


となっています。つまり、表示順に関しては、モジュールIDの方で空欄にはできないので、

ctxでの指定が有効になるのは、モジュールIDと併用されていない場合のみとなります。


なので、テンプレート側でモジュールIDの指定を削除してしまい、

 ctx="cid/%{CID}/order/datetime-asc" のように指定すれば

一応「日付(昇順)」で並ぶようにはなるのですが、

件数や階層などctxでは指定できない項目があるので、

モジュールIDを削除することはできないことが多いかと思います。


そこで、やはり、ソート順をカテゴリーごとに別にしたい場合には、

モジュールIDを分けるしかないということになります。


コンフィグを触らなくてもテンプレートを共通化してモジュールIDを分けることは可能です。


/themes/テーマフォルダ/include/entry-headline.html

のようにEntry_Headlineモジュールを別のファイルにして

<!-- BEGIN_MODULE Entry_Headline id="{{module_id}}" -->

とidを変数で書いておき、


/themes/テーマフォルダ/category3/index.html

側には

@include("/include/entry-headline.html", {"module_id":"category3_asc"}

のように書いて、管理画面でモジュールIDを設定します。


一度お試しの上、ご希望どおりに動かない場合はまたお知らせください。


2023年3月2日木曜日 14:49:02 UTC+9 kosuke takata:

笠谷亜貴子

unread,
Mar 5, 2023, 8:45:41 PM3/5/23
to a-blog cms forum
お世話になっております。アップルップル笠谷です。

申し訳ありません、私の回答を見直していて、ソースに間違いがあるのを見つけました。

インクルードする方のソースは
誤:@include("/include/entry-headline.html", {"module_id":"category3_asc"}
正:@include("/include/entry-headline.html", {"module_id":"category3_asc"})
です。閉じカッコが抜けていました。

参考URL:

ご確認のほど、よろしくお願いいたします。

2023年3月3日金曜日 16:58:29 UTC+9 笠谷亜貴子:
Reply all
Reply to author
Forward
0 new messages