サポート

カテゴリー別表示

ちっぷ (2015/02/09 19:54)

設置URL : xxx

初めて利用させていただきました。
今回サンプルのサイトで失礼します。
そのサンプルサイトのように同じページにそれぞれカテゴリー毎に表示を分けようと思っています。
What's New= id whatsnew
お知らせ=id oshirase
として、以前サポートにあったような
http://freo.jp/support/view/682
の事故解決をされた方のように

<!--{if $entry_associates[$entry.id].category.facility}-->

の文字列を

<!--{if $entry_associates[$entry.id].category.whatsnew}-->
<!--{if $entry_associates[$entry.id].category.oshirase}-->

として試したのですがうまく行きません。
どのように記述すればいいでしょうか?

ミツ (2015/02/10 01:20)

URL : http://32877.xii.jp

こんにちは。

テンプレートを見ていないのでわからないですが、察するに、上部「What's New」の部分は

<!--{foreach from=$entries|smarty:nodefaults item='entry'}-->

~中略~

<!--{/foreach}-->

と記述し、エントリーを一覧表示しており、下部「お知らせ」部分では

<!--{foreach from=$plugin_entry_recentries|smarty:nodefaults item='plugin_entry_recently'}-->

~中略~

<!--{/foreach}-->

と記述し、新着エントリープラグインを利用して、新着エントリーを一覧表示しているように思います。

「What's New」部分ではカテゴリーIDが「whatsnew」のカテゴリーのみを表示したい
「お知らせ」部分ではカテゴリーIDが「oshirase」のカテゴリーのみを表示したい

というご要望でよろしいでしょうか。

ミツ (2015/02/10 01:21)

URL : http://32877.xii.jp

エントリー一覧表示部分であれば、

<!--{foreach from=$entries|smarty:nodefaults item='entry'}-->
<!--{if $entry_associates[$entry.id].category.カテゴリーID}-->
~中略~
<!--{/if}-->
<!--{/foreach}-->

新着エントリー表示部分では

<!--{foreach from=$plugin_entry_recentries|smarty:nodefaults item='plugin_entry_recently'}-->
<!--{if $plugin_entry_recently_associates[$plugin_entry_recently.id].category.カテゴリーID}-->
~中略~
<!--{/if}-->
<!--{/foreach}-->

と表記すれば、カテゴリーIDを限定することが可能です。
foreachの中に記載しているかどうか確認してください。

ミツ (2015/02/10 01:21)

URL : http://32877.xii.jp

上記方法を利用すれば、テンプレート側でカテゴリーを限定することは可能ですが、件数の表示が想定通りにいかない可能性があります。
トップページでのエントリーの表示件数は、「管理画面→システム→設定管理→表示設定」
新着エントリー表示プラグインの表示件数は、「管理画面→システム→設定管理→プラグインの設定→新着エントリー」で設定できますが、
どちらも、カテゴリーを限定しない状態での1ページでの表示件数を設定するものです。
たとえば、10件のエントリーが表示されており、内7件にカテゴリーID「whatsnew」、3件に「oshirase」が登録されている状態とします。
登録されている順番は、新着順に

・whatsnew ←一番新しい
・whatsnew
・whatsnew
・whatsnew
・oshirase ←Bの記事
・oshirase
・oshirase
・whatsnew ←Aの記事
・whatsnew
・whatsnew ←一番古い

とします。
また、カテゴリーIDが重複して登録されることはないとします。

エントリーの表示件数、新着エントリーの表示件数がどちらも5件であるとき、「What's New」部分でカテゴリーID「whatsnew」のみを表示しようとすると、新着順に「whatsnew」のエントリーが4件表示されます。
Aの記事は表示されません。
また、「お知らせ」部分でカテゴリーID「oshirase」のみ表示しようとすると、Bの記事のみが表示され、その他の「oshirase」が登録されている記事は表示されません。

本来表示されるべき件数の中から、特定のカテゴリーの記事のみを表示しているからです。

以上の通り、テンプレート側でカテゴリーを指定しようとすると、エントリーを登録する順番によっては、表示されるエントリー件数が0になる可能性も有り得ます。

特定のカテゴリーの記事を指定件数分一覧表示する機能は、現在のfreo公式、また少なくとも私のサイトでは公開しておらず、ご紹介することができません(プラグインを作成するか、PHPに編集を加えれば可能です。)。
また、カテゴリーごとの件数指定はできないものの、カテゴリーごとにエントリーを表示するプラグインであれば、拙サイトで公開しておりますので、ご要望に叶うようでしたらご利用下さい。
http://32877.xii.jp/index.php/view/38

また、こちらのページでも更新履歴等を表示する際の注意事項について解説しているので、参考になればご利用ください。
http://32877.xii.jp/index.php/view/238

ちっぷ (2015/02/10 13:29)

ミツさん
ありがとうございます!
新着エントリーは使わず、エントリー一覧表示のみの仕様でしたが、無事解決しました。
ifとforeachを逆に書いてしまったために反映されないようでした。
表現が不足していろいろご面倒をおかけしました。
細かい説明ものすごく参考になりました。
ありがとうございました。

返信

  • この記事に返信します。
  • 返信の際は、設置URL以外の項目は入力必須です。
投稿フォーム
名前
設置URL
本文(本文の装飾について
編集キー(投稿した記事を編集する際に使用します。)
投稿キー(スパム対策に、投稿キー を半角で入力してください。)