メニュー

Home >freoTIPS>freo変数一覧> エントリーの情報を個別に表示する方法(VIEW画面)

【freoTIPS】【freo変数一覧】エントリーの情報を個別に表示する方法(VIEW画面)

2016/06/10 09:14|タグ:エントリーグッジョブ表示 1

freoにはエントリーを登録・表示する機能があります。
VIEW画面(freo/index.php/view/エントリーID)では、指定されたエントリーIDのエントリーの情報を表示します。

上記画面でエントリーを表示する方法及び変数は以下のとおりです。

エントリーを表示する

VIEW画面(freo/index.php/view/エントリーID)のテンプレートは、[freo/templates/internals/view/default.html]です。
エントリーを一覧表示しているのは、[freo/templates/internals/view/default.html]の3~89行目

        <div id="entry">
            <h2>エントリー</h2>
            <div class="entry">
                <h3><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}">{$entry.title}</a></h3>
                <ul class="information">
                    <li>{$entry.datetime|date_format:'%Y/%m/%d %H:%M'}</li>
                    <!--{if $entry_associate.category}-->
                    <li>カテゴリー:<!--{foreach from=$entry_associate.category|smarty:nodefaults key='entry_category' item='entry_category' name='loop'}--><a href="{$freo.core.http_file}/category/{$entry_category}">{$freo.refer.categories[$entry_category].name}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}--></li>
                    <!--{/if}-->
                    <!--{if $entry_tags}-->
                    <li>タグ:<!--{foreach from=$entry_tags|smarty:nodefaults item='entry_tag' name='loop'}--><a href="{$freo.core.http_file}/entry?tag={$entry_tag|smarty:nodefaults|escape:'url'}">{$entry_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}--></li>
                    <!--{/if}-->
                </ul>
                <div class="content">
                    <!--{if $entry.restriction == 'user' and !$entry_security}-->
                        <p class="attention">このエントリーは、登録ユーザーのみに公開されています。</p>
                    <!--{elseif $entry.restriction == 'group' and !$entry_security}-->
                        <p class="attention">このエントリーは、一部のグループのみに公開されています。</p>
                    <!--{elseif $entry.restriction == 'password' and !$entry_security}-->
                        <p class="attention">このエントリーは、パスワードで認証した人のみに公開されています。</p>
                    <!--{/if}-->
                    <!--{if $entry.file and $entry.image}-->
                        <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$entry.id}/{$entry.image}" alt="{$entry.memo|default:$entry.file}" title="{$entry.memo|default:$entry.file}" width="{$entry_image.width}" height="{$entry_image.height}" /></a></p>
                    <!--{elseif $entry_thumbnail}-->
                        <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$entry.id}/{$entry.file}" alt="{$entry.memo|default:$entry.file}" title="{$entry.memo|default:$entry.file}" width="{$entry_thumbnail.width}" height="{$entry_thumbnail.height}" /></a></p>
                    <!--{elseif $entry.file and $entry_file.width and $entry_file.height}-->
                        <p><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}" alt="{$entry.memo|default:$entry.file}" title="{$entry.memo|default:$entry.file}" width="{$entry_file.width}" height="{$entry_file.height}" /></p>
                    <!--{elseif $entry.file}-->
                        <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}">{$entry.memo|default:$entry.file}</a></p>
                    <!--{/if}-->
                    <!--{if $entry_text.excerpt}-->
                        {$entry_text.excerpt|smarty:nodefaults}
                    <!--{/if}-->
                    <!--{if $entry_text.more}-->
                        <!--{if $freo.query.continue}-->
                        <div id="continue">
                            {$entry_text.more|smarty:nodefaults}
                        </div>
                        <!--{else}-->
                        <p><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}?continue=1#continue" title="No.{$entry.id}の続き">続きを読む</a></p>
                        <!--{/if}-->
                    <!--{/if}-->
                    <!--{if $entry.restriction == 'password' and !$smarty.session.security.entry[$entry.id] and $freo.user.authority != 'root' and $freo.user.authority != 'author'}-->
                        <form action="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}" method="post">
                            <fieldset>
                                <legend>認証フォーム</legend>
                                <dl>
                                    <dt>パスワード</dt>
                                        <dd><input type="text" name="entry[password]" size="30" value="" /></dd>
                                </dl>
                                <p><input type="submit" value="認証する" /></p>
                            </fieldset>
                        </form>
                    <!--{/if}-->
                    <!--{if $entry_associate.option}-->
                    <dl>
                        <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
                        <!--{if $entry_associate.option[$option.id] != ''}-->
                        <dt>{$option.name}</dt>
                            <dd><!--{if $option.type == 'file'}--><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_options/{$entry.id}/{$option.id}/{$entry_associate.option[$option.id]}">{$entry_associate.option[$option.id]}</a><!--{else}-->{$entry_associate.option[$option.id]|nl2br}<!--{/if}--></dd>
                        <!--{/if}-->
                        <!--{/foreach}-->
                    </dl>
                    <!--{/if}-->
                </div>
                <ul class="link">
                    <li><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}" title="No.{$entry.id}の固定URL">この記事のURL</a></li>
                    <!--{if $entry.comment != 'closed'}-->
                    <li><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}#comment" title="No.{$entry.id}のコメント">コメント({$comments|smarty:nodefaults|@count})</a></li>
                    <!--{/if}-->
                    <!--{if $entry.trackback != 'closed'}-->
                    <li><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}#trackback" title="No.{$entry.id}のトラックバック">トラックバック({$trackbacks|smarty:nodefaults|@count})</a></li>
                    <!--{/if}-->
                    <!--{if $freo.user.authority == 'root' or $freo.user.id == $entry.user_id}-->
                    <li><a href="{$freo.core.http_file}/admin/entry_form?id={$entry.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a></li>
                    <!--{/if}-->
                </ul>
            </div>
            <div id="entry_link">
                <h3>ページ移動</h3>
                <ul class="entry_link">
                    <!--{if $plugin_entry_link_previous}--><li class="previous"><a href="{$freo.core.http_file}/view/{if $plugin_entry_link_previous.code}{$plugin_entry_link_previous.code}{else}{$plugin_entry_link_previous.id}{/if}">{$plugin_entry_link_previous.title}</a></li><!--{/if}-->
                    <li class="home"><a href="{$freo.core.http_file}/entry">記事一覧</a></li>
                    <!--{if $plugin_entry_link_next}--><li class="next"><a href="{$freo.core.http_file}/view/{if $plugin_entry_link_next.code}{$plugin_entry_link_next.code}{else}{$plugin_entry_link_next.id}{/if}">{$plugin_entry_link_next.title}</a></li><!--{/if}-->
                </ul>
            </div>
        </div>

の部分です。

上記を解説すると

                <h3><a href="{$freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}">{エントリータイトル}</a></h3>
                <ul class="information">
                    <li>{エントリー日時|日付を'%Y/%m/%d %H:%M'に整形する}</li>
                    <!--{もしカテゴリーがあったらここから}-->
                    <li>カテゴリー:<!--{$entry_associates[$entry.id].category配列を'entry_category'として繰り返して表示するここから}--><a href="{$freo設置URL}/category/{エントリーに登録されているカテゴリーID}">{エントリーに登録されているカテゴリー名}</a><!--{もし最後のループじゃなかったらここから}-->,&nbsp;<!--{もし最後のループじゃなかったらここまで}--><!--{$entry_associates[$entry.id].category配列を'entry_category'として繰り返して表示するここまで}--></li>
                    <!--{もしカテゴリーがあったらここまで}-->
                    <!--{もしタグがあったらここから}-->
                    <li>タグ:<!--{$entry_tags[$entry.id]配列を'entry_tag'として繰り返して表示するここから}--><a href="{$freo設置URL}/entry?tag={エントリータグ}">{エントリータグ}</a><!--{もし最後のループじゃなかったらここから}-->,&nbsp;<!--{もし最後のループじゃなかったらここまで}--><!--{$entry_tags[$entry.id]配列を'entry_tag'として繰り返して表示するここまで}--></li>
                    <!--{もしタグがあったらここから}-->
                </ul>
                <div class="content">
                    <!--{もしエントリーの閲覧制限が'user'でエントリー保護データが入っていなかったらここから}-->
                        <p class="attention">このエントリーは、登録ユーザーのみに公開されています。</p>
                    <!--{もしエントリーの閲覧制限が'group'でエントリー保護データが入っていなかったら}-->
                        <p class="attention">このエントリーは、一部のグループのみに公開されています。</p>
                    <!--{もしエントリーの閲覧制限が'password'でエントリー保護データが入っていなかったら}-->
                        <p class="attention">このエントリーは、パスワードで認証した人のみに公開されています。</p>
                    <!--{もしエントリーの閲覧制限が'user'でエントリー保護データが入っていなかったらここまで}-->
                    <!--{もしエントリーファイルとエントリーイメージがあったらここから}-->
                        <p><a href="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}"><img src="{freo設置URL}{ファイルディレクトリのURL}entry_images/{エントリーID}/{エントリーイメージ名}" alt="{エントリーファイルの説明|デフォルトはエントリーファイル名}" title="{エントリーファイルの説明|デフォルトはエントリーファイル名}" width="{エントリーイメージの横幅}" height="{エントリーイメージの高さ}" /></a></p>
                    <!--{もしエントリーファイルのサムネイルがあったら}-->
                        <p><a href="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}"><img src="{freo設置URL}{ファイルディレクトリのURL}entry_thumbnails/{エントリーID}/{エントリーファイル名}" alt="{エントリーファイルの説明|デフォルトはエントリーファイル名}" title="{エントリーファイルの説明|デフォルトはエントリーファイル名}" width="{エントリーファイルのサムネイルの横幅}" height="{エントリーファイルのサムネイルの高さ}" /></a></p>
                    <!--{もしエントリーファイルが}--あってエントリーファイルの横幅があったら(画像だったら)}-->
                        <p><img src="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}" alt="{エントリーファイルの説明|デフォルトはエントリーファイル名}" title="{エントリーファイルの説明|デフォルトはエントリーファイル名}" width="エントリーファイルの横幅" height="エントリーファイルの高さ" /></p>
                    <!--{もしエントリーファイルがあったら}-->
                        <p><a href="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}">{エントリーファイルの説明|デフォルトはエントリーファイル名}</a></p>
                    <!--{もしエントリーファイルとエントリーイメージがあったらここまで}-->
                    <!--{もしエントリー本文があったらここから}-->
                        {$entry_texts[$entry.id].excerpt|smarty:nodefaults}
                    <!--{もしエントリー本文があったらここから}-->
                    <!--{もしエントリー本文(続き)があったらここから}-->
                        <p><a href="{freo設置ULR}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}?continue=1#continue" title="No.{エントリーIDd}の続き">続きを読む</a></p>
                    <!--{もしエントリー本文(続き)があったらここまで}-->
                    <!--{もしエントリーの閲覧制限が'password'でこのエントリーの閲覧制限でパスワード認証が済んでなくてユーザーの権限が'root'でなくてユーザーの権限が'author'でなかったらここから}-->
                        <form action="{freo設置ULR}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}" method="post">
                            <fieldset>
                                <legend>認証フォーム</legend>
                                <dl>
                                    <dt>パスワード</dt>
                                        <dd><input type="text" name="entry[password]" size="30" value="" /></dd>
                                </dl>
                                <p><input type="submit" value="認証する" /></p>
                            </fieldset>
                        </form>
                    <!--{もしエントリーの閲覧制限が'password'でこのエントリーの閲覧制限でパスワード認証が済んでなくてユーザーの権限が'root'でなくてユーザーの権限が'author'でなかったらここまで}-->
                    <!--{もしエントリーオプションがあったらここから}-->
                    <dl>
                        <!--{$freo.refer.options配列を'option'として繰り返して表示するここから}-->
                        <!--{もしエントリーオプションとして値が登録されているオプションであればここから}-->
                        <dt>{オプション名}</dt>
                            <dd><!--{もしオプションの種類が'file'だったらここから}--><a href="{freo設置URL}{ファイルディレクトリのURL}entry_options/{エントリーID}/{オプションID}/{エントリーオプションとして登録されている内容}">{エントリーオプションとして登録されている内容}</a><!--{そうじゃなければ}-->{エントリーオプションとして登録されている内容|改行は改行として表示する}<!--{もしオプションの種類が'file'だったらここまで}--></dd>
                        <!--{もしエントリーオプションとして値が登録されているオプションであればここまで}-->
                        <!--{$freo.refer.options配列を'option'として繰り返して表示するここまで}-->
                    </dl>
                    <!--{もしエントリーオプションがあったらここから}-->
                </div>
                <ul class="link">
                    <li><a href="{freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}" title="No.{エントリーID}の固定URL">この記事のURL</a></li>
                    <!--{もしエントリーコメントが'closed'じゃなかったらここから}-->
                    <li><a href="{freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}#comment" title="No.{エントリーID}のコメント">コメント({エントリーのコメント数})</a></li>
                    <!--{もしエントリーコメントが'closed'じゃなかったらここまで}-->
                    <!--{もしエントリートラックバックが'closed'じゃなかったらここから}-->
                    <li><a href="{freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}#trackback" title="No.{エントリーID}のトラックバック">トラックバック({エントリーのトラックバック数})</a></li>
                    <!--{もしエントリートラックバックが'closed'じゃなかったらここまで}-->
                    <!--{もしユーザーの権限が'root'またはユーザーIDがエントリーの投稿者ユーザーID同じだったらここから}-->
                    <li><a href="{freo設置URL}/admin/entry_form?id={エントリーID}"><img src="{freo設置URL}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a></li>
                    <!--{もしユーザーの権限が'root'またはユーザーIDがエントリーの投稿者ユーザーID同じだったらここまで}-->
                </ul>
            </div>
            <!--{$entries配列を'entry'として繰り返して表示するここから}-->

以上のように、一件のエントリーの詳細を表示しています。

エントリーの基本的な情報を表示するための変数
変数
{$entry.id} エントリーID
{$entry.user_id} エントリーの投稿者ユーザーID
{$entry.created} エントリーの投稿日時
{$entry.modified} エントリーの更新日時
{$entry.approved} エントリーの承認状況(yesまたはno)
{$entry.restriction} エントリーの閲覧制限(userまたはgroupまたはpasswordまたは無し)
{$entry.password} エントリーのパスワード
{$entry.title} エントリーのタイトル
{$entry.status} エントリーの状態(publishまたはprivateまたはfuture)
{$entry.display} エントリーの表示(pub;ishまたはprivate)
{$entry.comment} エントリーのコメントの受付(openまたはclosedまたはviewまたはuser)
{$entry.trackback} エントリーのトラックバックの受付(openまたはclosedまたはview)
{$entry.title} エントリーのタイトル
{$entry.tag} エントリーのタグ
{$entry.datetime} エントリーの日付
{$entry.close} エントリーの公開終了日時
{$entry.file} エントリーファイルのファイル名
{$entry.image} エントリーイメージのファイル名
{$entry.memo} エントリーファイルの説明
{$entry.text} エントリー本文
エントリーの添付ファイルの情報を表示する
エントリーファイルの情報を表示する

エントリーファイルの情報は$entry_files配列に格納されています。

変数
{$entry.file} エントリーファイルのファイル名
{$entry_files.height} エントリーファイルの高さ
{$entry_files.width} エントリーファイルの横幅
{$entry_files.size} エントリーファイルのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file} エントリーファイルのURL
エントリーファイルのサムネイルの情報を表示する

エントリーファイルのサムネイルの情報は$entry_thumbnails配列に格納されています。

変数
{$entry.file} エントリーファイルのサムネイルのファイル名
{$entry_thumbnails.height} エントリーファイルの高さ
{$entry_thumbnails.width} エントリーファイルの横幅
{$entry_thumbnails.size} エントリーファイルのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$entry.id}/{$entry.file} エントリーファイルのURL
エントリーイメージの情報を表示する

エントリーイメージの情報は$entry_images配列に格納されています。

変数
{$entry.image} エントリーイメージのファイル名
{$entry_images.height} エントリーイメージの高さ
{$entry_images.width} エントリーイメージの横幅
{$entry_images.size} エントリーイメージのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$entry.id}/{$entry.image} エントリーイメージのURL

エントリーのタグの情報を表示する

エントリーのタグは、「$entry_tags」という配列に格納されています。
$entry_tagsに格納されているタグを表示するには、foreachしなければなりません。

<!--{foreach from=$entry_tags|smarty:nodefaults item='entry_tag' name='loop'}--><a href="{$freo.core.http_file}/entry?tag={$entry_tag|smarty:nodefaults|escape:'url'}">{$entry_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->

エントリーのカテゴリーの情報を表示する

エントリーのカテゴリーについての情報は、$entry_associates.category」という配列に格納されています。
$entry_associates[$entry.id].categoryに格納されているカテゴリーを表示するには、foreachしなければなりません。

<!--{foreach from=$entry_associates.category|smarty:nodefaults key='entry_category' item='entry_category' name='loop'}--><a href="{$freo.core.http_file}/category/{$entry_category}">{$freo.refer.categories[$entry_category].name}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->

上記~

変数
{$entry_category} エントリーに紐付けられているカテゴリーID
{$freo.refer.categories[$entry_category].name} エントリーに紐付けられているカテゴリーIDのカテゴリー名

エントリーのオプションを表示する

オプションの表示方法には、二種類あります。
一括で表示するか、個別に表示するかです。

上記をふまえて、ページのオプションを取得するときに使用する変数は以下のとおりです。

変数
オプションを一括で表示する場合
{$entry_associate.option.[$option.id]} エントリーのオプションIDが[$option.id]のオプションに登録されている内容
オプションを個別に表示する場合
{$entry_associate.option.取得したいオプションID}
※「取得したいオプションID」部分にはオプションIDを代入してください。
例)取得したいオプションIDが「test1」の場合は{$entry_associate.option.test1}
エントリーのオプションIDが「取得したいオプションID」のオプションに登録されている内容

説明すると、

{$entry_associate.option.[$option.id]}

こんな感じです。
つまり、

{$エントリーのオプションのテーブルを指定して.オプションが.[$どのIDのオプションなのかを指定する]}

こういうことです。

オプションを個別に表示する場合は、[$option.id]部分に、[取得したいオプションID]を書き込みます

たとえば、オプションID「test1」のオプションを取得したいなら、

{$entry_associate.option.test1}

のようになります。

オプションを一括で表示する場合は、[$option.id]部分を取得するために、オプション格納テーブルの情報を取得する必要があります。

オプション格納テーブルには、そのfreoに登録されているオプションのID、名前などが格納されています。
詳細は、freo公式サイトの機能解説→本体のテーブル構成→オプション格納テーブルのページをご覧下さい。

オプション格納テーブルの情報を取得するには、foreachを使います。
つまり、

<!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->

オプションの情報を表示する部分

<!--{/foreach}-->

このようにします。

よって、ページのオプションを取得する場合は、

   <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->

       {$entry_associate.option.[$option.id]}

   <!--{/foreach}-->

 このようになります。

エントリーのオプションを一括で表示しているのは、[freo/templates/internals/view/default.html]の57~66行目の部分です。
オプションを個別で表示するときのテンプレート編集例はfreo公式サイトの各機能の解説から「オプションを個別に表示する」を参考にしてください。

ページ移動

関連エントリー

コメント

  • コメントはまだありません。

コメント登録

登録フォーム
名前
メールアドレス
URL
コメント
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

新着コメント

Twitter

サイト内検索

ページ上部へ