【freo】【freoTips】【freo変数一覧】アルバムプラグインの情報を一覧で表示する方法
- 2016/07/22 10:17
- アルバムプラグイン
- 4
このサイトで配布しているfreo機能拡張プラグインアルバムプラグインの情報を一覧で表示する方法は以下のとおりです。
アルバムを一覧表示する
アルバム一覧表示画面(freo/index.php/album画面)のテンプレートは、[freo/templates/plugins/album/default.html]です。
アルバムを一覧表示しているのは、[freo/templates/plugins/album/default.html]の27~55行目
<!--{foreach from=$plugin_albums|smarty:nodefaults item='plugin_album'}--> <div class="album"> <h3><a href="{$freo.core.http_file}/album/view/{$plugin_album.id}">{$plugin_album.datetime|date_format:'%Y/%m/%d'}<!--{if $plugin_album.title}-->{$plugin_album.title}<!--{/if}--></a><!--{if $freo.user.authority == 'root' or $freo.user.authority == 'author'}--><a href="{$freo.core.http_file}/album/admin_form?id={$plugin_album.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a><!--{/if}--></h3> <ul> <!--{if $plugin_album.category_id}--><li><a href="{$freo.core.http_file}/album?category_id={$plugin_album.category_id}">{$plugin_album_categories[$plugin_album.category_id].name}</a></li><!--{/if}--> <!--{if $plugin_album_tags|smarty:nodefaults}--><li><!--{foreach from=$plugin_album_tags[$plugin_album.id]|smarty:nodefaults item='plugin_album_tag' name='loop'}--><a href="{$freo.core.http_file}/album?tag={$plugin_album_tag|smarty:nodefaults|escape:'url'}">{$plugin_album_tag|smarty:nodefaults}</a><!--{if !$smarty.foreach.loop.last}-->, <!--{/if}--><!--{/foreach}--></li><!--{/if}--> <!--{if $plugin_album.text}--><li>{$plugin_album.text|smarty:nodefaults|strip_tags|mb_truncate:30:'...'|escape}</li><!--{/if}--> </ul> <!--{if $plugin_album.restriction == 'password' and !$smarty.session.security.plugin_album[$plugin_album.id] and $freo.user.authority != 'root' and $freo.user.authority != 'author'}--> <form action="{$freo.core.http_file}/album/view/{$plugin_album.id}" method="post"> <fieldset> <legend>認証フォーム</legend> <dl> <dt>パスワード</dt> <dd><input type="text" name="plugin_album[password]" size="30" value="" /></dd> </dl> <p><input type="submit" value="認証する" /></p> </fieldset> </form> <!--{/if}--> <ul class="album_image"> <!--{if $plugin_album_files[$plugin_album.id]|smarty:nodefaults}--> <!--{foreach from=$plugin_album_files[$plugin_album.id]|smarty:nodefaults item='plugin_album_file'}--> <li><a rel="album{$plugin_album.id}" title="{$plugin_album.title}" href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/album_files/{$plugin_album.id}/{$plugin_album_file.name}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/{if $plugin_album_file.thumbnail|smarty:nodefaults}album_thumbnails{else}album_files{/if}/{$plugin_album.id}/{$plugin_album_file.name}" alt="{$plugin_album_file.name}" title="{$plugin_album_file.name}" /></a></li> <!--{/foreach}--> <!--{/if}--> </ul> </div> <!--{/foreach}-->
の部分です。
上記を解説すると
<!--{アルバムプラグインの情報を'plugin_album'として繰り返して表示するここから}--> <div class="album"> <h3><a href="{$freo設置URL}/album/view/{$アルバムID}">{$アルバムの日付|日付を整形する:'年/月/日'}<!--{もしアルバムにタイトルがあったらここから}-->{$アルバムタイトル}<!--{もしアルバムにタイトルがあったらここまで}--></a><!--{もしログインしているユーザーの権限が管理者または投稿者だったらここから}--><a href="{$freo設置URL}/album/admin_form?id={$アルバムID}"><img src="{$freo設置URL}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a><!--{もしログインしているユーザーの権限が管理者または投稿者だったらここまで}--></h3> <ul> <!--{もし$アルバムカテゴリーIDがあったらここから}--><li><a href="{$freo設置URL}/album?category_id={$アルバムカテゴリーID}">{$アルバムカテゴリーIDのアルバムカテゴリーのアルバムカテゴリー名}</a></li><!--{もし$アルバムカテゴリーIDがあったらここまで}--> <!--{もし$アルバムタグがあったらここから}--><li><!--{アルバムタグを'plugin_album_tag'として繰り返し表示するここから}--><a href="{$freo設置URL}/album?tag={$アルバムタグ}">{$アルバムタグ}</a><!--{もしアルバムタグの繰り返しの最後じゃなかったらここから}-->, <!--{もしアルバムタグの繰り返しの最後じゃなかったらここまで}--><!--{アルバムタグを'plugin_album_tag'として繰り返し表示するここまで}--></li><!--{もし$アルバムタグがあったらここまで}--> <!--{もしアルバム本文があったらここから}--><li>{$アルバム本文|タグをタグとして表示する|タグを全て除く|30文字で区切って最後を'...'にする|エスケープする}</li><!--{もしアルバム本文があったらここまで}--> </ul> <!--{もしアルバムの公開範囲が'password'でかつ閲覧制限を解決していなくてかつログインユーザーの種類が管理者でも投稿者でもなければここから}--> <form action="{$freo設置URL}/album/view/{$アルバムID}" method="post"> <fieldset> <legend>認証フォーム</legend> <dl> <dt>パスワード</dt> <dd><input type="text" name="plugin_album[password]" size="30" value="" /></dd> </dl> <p><input type="submit" value="認証する" /></p> </fieldset> </form> <!--{もしアルバムの公開範囲が'password'でかつ閲覧制限を解決していなくてかつログインユーザーの種類が管理者でも投稿者でもなければここまで}--> <ul class="album_image"> <!--{もしアルバムにファイルが登録されていたらここから}--> <!--{$アルバムIDのアルバムに登録されているファイルを'plugin_album_file'として繰り返して表示するここから}--> <li><a rel="album{$アルバムID}" title="{$アルバムタイトル}" href="{$freo設置URL}{$FILEディレクトリ}plugins/album_files/{$アルバムID}/{$アルバムファイル名}"><img src="{$freo設置URL}{$FILEディレクトリ}plugins/{もしアルバムファイルにサムネイルがあればここから}album_thumbnails{そうじゃなければ}album_files{もしアルバムファイルにサムネイルがあればここまで}/{$アルバムID}/{$アルバムファイル名}" alt="{$アルバムファイル名}" title="{$アルバムファイル名}" /></a></li> <!--{$アルバムIDのアルバムに登録されているファイルを'plugin_album_file'として繰り返して表示するここまで}--> <!--{もしアルバムにファイルが登録されていたらここまで}--> </ul> </div> <!--{アルバムプラグインの情報を'plugin_album'として繰り返して表示するここまで}-->
以上のように、アルバム一覧にアルバムの情報をある程度掲載して一件ずつ繰り返して表示しています。
アルバムの情報を取得する方法
$plugin_albumsテーブルの情報をforeachする。
アルバムの情報は、「$plugin_albums」というテーブルに格納されています。
「$plugin_albums」テーブルの情報を表示したいときは、「foreach」しなければなりません。
とにかく、アルバムのの情報を一覧表示したいなら、下記の通りにしなければならないってことです。
<!--{foreach from=$plugin_albums|smarty:nodefaults item='plugin_album'}--> アルバムの情報を表示したい部分 <!--{/foreach}-->
上記のように、アルバムの情報の内一覧表示したい内容は、<!--{foreach from=$plugin_albums|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、アルバムの情報は表示されませんので注意して下さい。
アルバムの基本的な情報を表示するための変数
変数 | 値 |
---|---|
{$plugin_album.id} | アルバムID |
{$plugin_album.created} | アルバムの投稿日時 |
{$plugin_album.modified} | アルバムの更新日時 |
{$plugin_album.title} | アルバムのタイトル |
{$plugin_album.tag} | アルバムにタグがあるかどうか |
{$plugin_album.text} | アルバム本文 |
{$plugin_album.category_id} | アルバムのカテゴリーID |
{$plugin_album.option01} | アルバムのオプションの入力値 (「option01」部分を「option10」まで変更するとオプション10までの情報を表示できます。) |
{$plugin_album.restriction} | アルバムの閲覧制限 |
{$plugin_album.password} | アルバムの閲覧制限を解除するためのパスワード |
アルバムの添付ファイルの情報を表示する
アルバムの添付ファイルについての情報は、「$plugin_album_files[$plugin_album.id]」テーブルに格納されています。
「$plugin_album_files」テーブルの情報を表示したいときは、「foreach」しなければなりません。
とにかく、アルバムのの情報を一覧表示したいなら、下記の通りにしなければならないってことです。
<!--{foreach from=$plugin_album_files[$plugin_album.id]|smarty:nodefaults item='plugin_album_file'}--> アルバムの情報を表示したい部分 <!--{/foreach}-->
上記のように、アルバムの情報の内一覧表示したい内容は、<!--{foreach from=$plugin_album_files[$plugin_album.id]|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、アルバムの情報は表示されませんので注意して下さい。
変数 | 値 |
---|---|
{$plugin_album_files[$plugin_album.id]|smarty:nodefaults} | アルバムファイルがあるかどうか |
{$plugin_album_file.name} | アルバムファイルのファイル名 |
{$plugin_album_file.height} | アルバムファイルの高さ |
{$plugin_album_file.width} | アルバムファイルの幅 |
{$plugin_album_file.size} | アルバムファイルのサイズ |
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/album_files/{$plugin_album.id}/{$plugin_album_file.name} | アルバムファイルのURL |
{$plugin_album_file.thumbnail|smarty:nodefaults} | アルバムファイルのサムネイルがあるかどうか |
{$plugin_album_file.thumbnail.name} | アルバムファイルのサムネイルのファイル名 |
{$plugin_album_file.thumbnail.height} | アルバムファイルのサムネイルの高さ |
{$plugin_album_file.thumbnail.width} | アルバムファイルのサムネイルの幅 |
{$plugin_album_file.thumbnail.size} | アルバムファイルのサムネイルのサイズ |
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/album_thumbnails/{$plugin_album.id}/{$plugin_album_files[$plugin_album.id].file.thumbnail.name} | アルバムファイルのサムネイルのURL |
{$plugin_album_files}や{$plugin_album_file.thumbnail}などの配列には「smarty:nodefaults」の修飾子をつけるようにしてください。
アルバムのオプション設定の情報を表示する
アルバムのオプションについての情報は、「$freo.config.plugin.album」テーブルに格納されています。
変数 | 値 |
---|---|
{$freo.config.plugin.album.option01_name} | アルバムのオプション01のオプション名 |
{$freo.config.plugin.album.option01_type} | アルバムのオプション01のタイプ |
{$plugin_album.option01} | アルバムのオプション01の入力値 |
「option01」部分を「option10」まで変更すると、それぞれのオプションの情報を表示させることができます。
アルバムのカテゴリーの情報を表示する
アルバムのカテゴリーについての情報は、「$plugin_album_categories」テーブルに格納されています。
どのカテゴリーの情報を引き出すのかを指定するため、[$plugin_album.category_id]で、そのアルバムのカテゴリーIDを指定してあげます。
変数等 | 値 |
---|---|
{$plugin_album_categories[$plugin_album.category_id].name} | {$plugin_album.id}のアルバムのカテゴリーの名前 |
アルバムのタグを表示する
アルバムのタグは「$plugin_album_tags[$plugin_album.id]」という配列に格納されています。
アルバムのタグの情報を表示したいときは、「foreach」しなければなりません。
アルバムの情報を一覧表示する際は、「$plugin_album」のforeachの中に表示しなければならないので、アルバムのタグの情報は、$plugin_albumの中でさらにforeachして表示します。
<!--{foreach from=$plugin_albums|smarty:nodefaults item='plugin_album'}--> <!--{foreach from=$plugin_album_tags[$plugin_album.id]|smarty:nodefaults item='plugin_album_tag' name='loop'}--><a href="{$freo.core.http_file}/album?tag={$plugin_album_tag|smarty:nodefaults|escape:'url'}">{$plugin_album_tag}</a><!--{if !$smarty.foreach.loop.last}-->, <!--{/if}--><!--{/foreach}--> <!--{/foreach}-->
アルバムにフィルターがかかっているか判断する方法
アルバムにフィルターがかかっているかどうかを判断するには、[$plugin_album_filters]配列を利用します。
[$plugin_album_filters]配列は、アルバムにフィルターがかかっているかどうかを格納している変数です。
アルバムIDをキーとして、フィルターがかかっている場合は値が「1」、かかっていない場合は値は「null」となっています。
<!--{foreach from=$plugin_albums|smarty:nodefaults item='plugin_album'}--> <!--{if $plugin_album_filters[$plugin_album.id]}--> このアルバムにはフィルターがかかっています <!--{else}--> このアルバムにはフィルターがかかっていません <!--{/if}--> <!--{/foreach}-->
上記のようにすると、アルバムにフィルターがかかっているかどうか調べて表示することができます。