【freo】【freoTips】【freo変数一覧】ニュースプラグインの情報を一覧で表示する方法
- 2014/08/22 22:55
- ニュースプラグイン
- 81
このサイトで配布しているfreo機能拡張プラグインニュースプラグインの情報を一覧で表示する方法は以下のとおりです。
ニュースを一覧表示する
ニュース一覧表示画面(freo/index.php/news画面)のテンプレートは、[freo/templates/plugins/news/default.html]です。
ニュースを一覧表示しているのは、[freo/templates/plugins/news/default.html]の51~66行目
<tr>
<td><a href="{$freo.core.http_file}/news/view/{$plugin_news.id}">{$plugin_news.datetime|date_format:'%Y/%m/%d'}</a></td>
<td><a href="{$freo.core.http_file}/news?category_id={$plugin_news.category_id}">{$plugin_news_categories[$plugin_news.category_id].name}</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}--><a href="{$freo.core.http_file}/news/view/{$plugin_news.id}"><!--{if $plugin_news_files[$plugin_news.id].file.thumbnail}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/news_thumbnails/{$plugin_news.id}/{$plugin_news_files[$plugin_news.id].file.thumbnail.name}" alt="{$plugin_news.title}" /><!--{else}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/news_files/{$plugin_news.id}/{$plugin_news_files[$plugin_news.id].file.name}" alt="{$plugin_news.title}" /><!--{/if}--></a><!--{/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>
<!--{/foreach}-->
の部分です。
上記を解説すると
<tr>
<td><a href="{$freo.core.http_file}/news/view/{$plugin_news.id}">{$ニュースの日付|日時を成形する:'%Y/%m/%d'のように}</a></td>
<td><a href="{$freo.core.http_file}/news?category_id={$ニュースのカテゴリーID}">{$ニュースカテゴリー配列の[$ニュースのカテゴリーID].の名前}</a></td>
<td><!--{もしニュースURLがあったらここから}--><a href="{$ニュースURL}">{$ニュースタイトル}</a><!--{そうじゃなければ}-->{$ニュースのタイトル}<!--{もしニュースURLがあったらここまで}--></td>
<td>{$ニュース本文|タグを抜く|30文字でカットする:'...'で繋ぐ}</td>
<td>
<!--{もしニュースにファイルがあったらここから}--><a href="{$freo.core.http_file}/news/view/{$ニュースID}"><!--{もしニュースファイルにサムネイルがあったらここから}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/news_thumbnails/{$ニュースID}/{$ニュースファイルのサムネイルのファイル名}" alt="{$ニュースタイトル}" /><!--{そうじゃなければ}--><img src="{$freo設置URL}{$smarty.const.FREO_FILE_DIR}plugins/news_files/{$ニュースID}/{$ニュースファイルのファイル名}" alt="{$ニュースタイトル}" /><!--{もしニュースファイルにサムネイルがあったらここまで}--></a><!--{もしニュースにファイルがあったらここまで}-->
</td>
<td>
<!--{[$ニュースID]のタグ配列を'plugin_news_tag'として繰り返して表示するここから}-->
<a href="{$freo.core.http_file}/news?tag={$ニュースタグ}">{$ニュースタグ}</a><!--{もし繰り返しの最後じゃなければここから}-->, <!--{もし繰り返しの最後じゃなければここまで}-->
<!--{[$ニュースID]のタグ配列を'plugin_news_tag'として繰り返して表示するここまで}-->
</td>
</tr>
<!--{$plugin_newses配列の内容を'plugin_news'として繰り返して表示するここまで}-->
以上のように、ニュース一覧にニュースの情報をある程度掲載して一件ずつ繰り返して表示しています。
ニュースの情報を取得する方法
$plugin_newsesテーブルの情報をforeachする。
ニュースの情報は、「$plugin_newses」というテーブルに格納されています。
「$plugin_newses」テーブルの情報を表示したいときは、「foreach」しなければなりません。
とにかく、ニュースのの情報を一覧表示したいなら、下記の通りにしなければならないってことです。
<!--{foreach from=$plugin_newses|smarty:nodefaults item='plugin_news'}--> ニュースの情報を表示したい部分 <!--{/foreach}-->
上記のように、ニュースの情報の内一覧表示したい内容は、<!--{foreach from=$plugin_newses|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、ニュースの情報は表示されませんので注意して下さい。
ニュースの基本的な情報を表示するための変数
変数 | 値 |
---|---|
{$plugin_news.id} | ニュースID |
{$plugin_news.created} | ニュースの投稿日時 |
{$plugin_news.modified} | ニュースの更新日時 |
{$plugin_news.datetime} | ニュースの日時 |
{$plugin_news.title} | ニュースのタイトル |
{$plugin_news.tag} | ニュースにタグがあるかどうか |
{$plugin_news.text} | ニュース本文 |
{$plugin_news.category_id} | ニュースのカテゴリーID |
{$plugin_news.option01} | ニュースのオプションの入力値 (「option01」部分を「option10」まで変更するとオプション10までの情報を表示できます。) |
ニュースの添付ファイルの情報を表示する
添付ファイルについての情報は、「$plugin_news_files」テーブルに格納されています。
変数 | 値 |
---|---|
{$plugin_news_files[$plugin_news.id].file} | ニュースファイルがあるかどうか |
{$plugin_news_files[$plugin_news.id].file.name} | ニュースファイルのファイル名 |
{$plugin_news_files[$plugin_news.id].file.height} | ニュースファイルの高さ |
{$plugin_news_files[$plugin_news.id].file.width} | ニュースファイルの幅 |
{$plugin_news_files[$plugin_news.id].file.size} | ニュースファイルのサイズ |
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/news_files/{$plugin_news.id}/{$plugin_news_files[$plugin_news.id].file.name} | ニュースファイルのURL |
{$plugin_news_files[$plugin_news.id].file.thumbnail} | ニュースファイルのサムネイルがあるかどうか |
{$plugin_news_files[$plugin_news.id].file.thumbnail.name} | ニュースファイルのサムネイルのファイル名 |
{$plugin_news_files[$plugin_news.id].file.thumbnail.height} | ニュースファイルのサムネイルの高さ |
{$plugin_news_files[$plugin_news.id].file.thumbnail.width} | ニュースファイルのサムネイルの幅 |
{$plugin_news_files[$plugin_news.id].file.thumbnail.size} | ニュースファイルのサムネイルのサイズ |
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/news_thumbnails/{$plugin_news.id}/{$plugin_news_files[$plugin_news.id].file.thumbnail.name} | ニュースファイルのサムネイルのURL |
{$plugin_news_files[$plugin_news.id].file}の「file」の部分を「file01」~「file10」に変えると、添付ファイルの情報を表示することができます。
ニュースのオプション設定の情報を表示する
ニュースのオプションについての情報は、「$freo.config.plugin.news」テーブルに格納されています。
変数 | 値 |
---|---|
{$freo.config.plugin.news.option01_name} | ニュースのオプション01のオプション名 |
{$freo.config.plugin.news.option01_type} | ニュースのオプション01のタイプ |
{$plugin_news.option01} | ニュースのオプション01の入力値 |
「option01」部分を「option10」まで変更すると、それぞれのオプションの情報を表示させることができます。
ニュースのカテゴリーの情報を表示する
ニュースのカテゴリーについての情報は、「$plugin_news_categories」テーブルに格納されています。
どのカテゴリーの情報を引き出すのかを指定するため、[$plugin_news.category_id]で、そのニュースのカテゴリーIDを指定してあげます。
変数等 | 値 |
---|---|
{$plugin_news_categories[$plugin_news.category_id].name} | {$plugin_news.id}のニュースのカテゴリーの名前 |
ニュースのタグを表示する
ニュースのタグは「$plugin_news_tags[$plugin_news.id]」という配列に格納されています。
ニュースのタグの情報を表示したいときは、「foreach」しなければなりません。
ニュースの情報を一覧表示する際は、「$plugin_newses」のforeachの中に表示しなければならないので、ニュースのタグの情報は、$plugin_newsesの中でさらにforeachして表示します。
<!--{foreach from=$plugin_newses|smarty:nodefaults item='plugin_news'}--> <!--{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}--> <!--{/foreach}-->