【freo】【freoTips】【プラグイン系TIPS】テンプレートを変えるだけでニュースをカテゴリーごとに表示する方法
- 2014/01/04 17:00
- ニュースプラグイン
- 74
当サイトで配布しているニュースプラグインのニュースをカテゴリーごとに表示する方法です。
ニュースプラグインでは、カテゴリーをつけることができます。
これを使って、ニュースを分類することができます。
デフォルトのままだとカテゴリーがごちゃ混ぜで表示されてしまうので、カテゴリーごとに表示してみます。
[freo/templates/plugins/news/default.html]をエディタで開きます。
28~71行目を変更します。
デフォルトではこうなってます↓
<table id="news">
~中略~
</tbody>
</table>
これを、下記のように変更します。
<!--{foreach from=$plugin_news_categories|smarty:nodefaults item='plugin_news_category' name='loop'}--> <h3><a href="{$freo.core.http_file}/news?category_id={$plugin_news_category.id}">{$plugin_news_category.name}</a></h3> <table id="news"> <thead> <tr> <th>日時</th> <th>タイトル</th> <th>コメント</th> <th>ファイル</th> <th>タグ</th> </tr> </thead> <tfoot> <tr> <th>日時</th> <th>タイトル</th> <th>コメント</th> <th>ファイル</th> <th>タグ</th> </tr> </tfoot> <tbody> <!--{foreach from=$plugin_newses|smarty:nodefaults item='plugin_news'}--> <!--{if $plugin_news_category.id == $plugin_news.category_id}--> <tr> <td><a href="{$freo.core.http_file}/news/view/{$plugin_news.id}">{$plugin_news.datetime|date_format:'%Y/%m/%d'}</a></td> <td><!--{if $plugin_news.url}--><a href="{$plugin_news.url}">{$plugin_news.title}</a><!--{else}-->{$plugin_news.title}<!--{/if}--></td> <td>{$plugin_news.text|smarty:nodefaults|strip_tags|mb_truncate:30:'...'|escape}</td> <td> <!--{if $plugin_news_files[$plugin_news.id].file}--> <img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/news_files/{$plugin_news.id}/{$plugin_news_files[$plugin_news.id].file}" alt="{$plugin_news.title}" /> <!--{/if}--> </td> <td> <!--{foreach from=$plugin_news_tags[$plugin_news.id]|smarty:nodefaults item='plugin_news_tag' name='loop'}--> <a href="{$freo.core.http_file}/news?tag={$plugin_news_tag|smarty:nodefaults|escape:'url'}">{$plugin_news_tag}</a><!--{if !$smarty.foreach.loop.last}-->, <!--{/if}--> <!--{/foreach}--> </td> </tr> <!--{/if}--> <!--{/foreach}--> </tbody> </table> <!--{/foreach}-->
つまりはこんな感じです↓
<h3><a href="{$freo.core.http_file}/news?category_id={ニュースカテゴリーID}">{ニュースカテゴリー名}</a></h3>
<table id="news">
<thead>
<tr>
~中略~
</tr>
</thead>
<tfoot>
<tr>
~中略~
</tr>
</tfoot>
<tbody>
<!--{ニュースの繰り返しここから}-->
<!--{もし今繰り返しているカテゴリーIDと今繰り返しているニュースのカテゴリーIDが等しければここから}-->
~中略~
<!--{もし今繰り返しているカテゴリーIDと今繰り返しているニュースのカテゴリーIDが等しければここまで}-->
<!--{ニュースの繰り返しここまで}-->
</tbody>
</table>
<!--{ニュースカテゴリーの繰り返しここまで}-->
ちなみに、ページやデフォルト画面に表示したい場合も、↑のソースを利用できます。
未花 月葉
先日はテンプレートを変えるだけでタグごとに表示するための
ソースの修正、有難うございました!
そしてニュースプラグイン、バナーつきブックマークプラグインの
バージョンアップ、お疲れ様です。
早速、使わせて頂いております。
そこで少しご教授いただけたらと思うのですが、
現在、これまでのミツ様の記事を参考に、
トップページにてニュースプラグインをカテゴリーごとに表示させております。
以下は自分用に改変したソースなのですが…。
----------------------------------------
<h3>news</h3>
<dl class="record">
<!--{foreach from=$plugin_newses|smarty:nodefaults item='plugin_news'}-->
<!--{if $plugin_news.category_id == 'カテゴリーID'}-->
<dt class="recordname">{$plugin_news.datetime|date_format:'%Y-%m-%d:'}</dt>
<dd class="recordlabel">
<!--{if $plugin_news.url}--><a href="{if $plugin_news.url|regex_match:'/^https?\:\/\//'}{$plugin_news.url}{else}{$freo.core.http_file}/{$plugin_news.url}{/if}">{$plugin_news.text}</a><!--{else}-->{$plugin_news.text|smarty:nodefaults}<!--{/if}-->
<!--{if $freo.user.authority == 'root' or $freo.user.authority == 'author'}-->
<a href="{$freo.core.http_file}/news/NULL_form?id={$plugin_news.id}" class="icon-pencil"><img src="{$freo.core.http_url}{$smarty.const.FREO_TEMP_IMG_DIR}space.gif" alt="編集" title="編集"></a>
<!--{/if}-->
</dd>
<!--{/if}-->
<!--{/foreach}-->
</dl>
----------------------------------------
トップページ等の表示件数を設定管理で5件とした場合、
ページ内における総件数の表示が5件になってしまいますよね?
これを、カテゴリーごとに表示件数を固定(5件)にしたい場合、
これはもうプラグインのPHPそのものをいじるか、
プラグインを複数設置するしか方法はないのでしょうか?
ご迷惑でない範囲でいいので、ご教授いただければ幸いです。