freo公式サイトで、ページ一括表示プラグインが配布されています。
これは、あるページの下層にあるページの一覧を表示するプラグインです。
【関連リンク】
32877|ページ一括表示プラグインテンプレートの読み方
32877|ページ一括表示プラグインで取得できる情報
下記に、一括表示するページのオプションの情報を取得する方法を紹介します。
ページ一括表示プラグインでページのオプション情報を取得する方法
ページ一括表示プラグインで表示するページの情報についての解説
あるページの下層ページは、複数存在する可能性があります。
よって、一括表示するページの情報を格納するテーブルは、多次元配列になっています。
よって、一括表示するページの情報を取り出すときには、foreachを利用しなければなりません。
一括表示するページの情報は、「$page_alls」というテーブルに格納されています。
「$page_alls」テーブルの情報を表示したいときは、「foreach」しなければなりません。
とにかく、一括表示するページの情報を表示したいなら、下記の通りにしなければならないってことです。
<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
一括表示するページの情報を表示したい部分
<!--{/foreach}-->
上記のように、一括表示するページの情報を表示したい箇所は、<!--{foreach from=$page_alls|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、一括表示するページの情報は表示されませんので注意して下さい。
一括表示するページのオプションのとりかたについての解説
オプションの表示方法には、二種類あります。
一括で表示するか、個別に表示するかです。
上記をふまえて、一括表示するページのオプションを取得するときに使用する変数は以下のとおりです。
変数 |
値 |
オプションを一括で表示する場合 |
{$page_all_associates[$page_all.id].option.[$option.id]} |
ページIDが[$page_all.id]の一括表示するページのオプションIDが[$option.id]のオプションに登録されている内容 |
オプションを個別に表示する場合 |
{$page_all_associates[$page_all.id].option.取得したいオプションID} ※「取得したいオプションID」部分にはオプションIDを代入してください。 例)取得したいオプションIDが「test1」の場合は{$page_all_associates[$page_all.id].option.test1} |
ページIDが[$page_all.id]一括表示するページのオプションIDが「取得したいオプションID」のオプションに登録されている内容 |
説明すると、
{$page_all_associates[$page_all.id].option.[$option.id]}
こんな感じです。
つまり、
{$一括表示するページのオプションのテーブルを指定して[$一括表示するページのIDを指定して].オプションが.[$どのIDのオプションなのかを指定する]}
こういうことです。
しかし、上の変数だけを書いても一括表示するページのオプションの情報は取得できません。
オプションを一括で取得する場合も、個別に取得する場合も、共通しているのは、[$plugin_page_sibiling.id]=[$一括表示するページのID]を指定するために、やはり、<!--{foreach from=$page_alls|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟む必要があるということです。
オプションを個別に表示する場合は、[$option.id]部分に、[取得したいオプションID]を書き込みます。
たとえば、オプションID「test1」のオプションを取得したいなら、
<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
{$page_all_associates[$page_all.id].option.test1}
<!--{/foreach}-->
のようになります。
オプションを一括で表示する場合は、[$option.id]部分を取得するために、オプション格納テーブルの情報を取得する必要があります。
オプション格納テーブルには、そのfreoに登録されているオプションのID、名前などが格納されています。
詳細は、freo公式サイトの機能解説→本体のテーブル構成→オプション格納テーブルのページをご覧下さい。
オプション格納テーブルの情報を取得するには、foreachを使います。
つまり、
<!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
オプションの情報を表示する部分
<!--{/foreach}-->
このようにします。
よって、一括表示するページのオプションを取得する場合は、
<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
<!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
{$page_all_associates[$page_all.id].option.[$option.id]}
<!--{/foreach}-->
<!--{/foreach}-->
このようになります。
一括表示するページのオプション情報を一括で表示するテンプレート編集例
[templates/internals/page]フォルダの[default.html]の一括表示するページプラグイン使用部分を以下の通り編集する。
<!--{if $page_alls|smarty:nodefaults}-->
<ul>
<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
<li><a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
<!--{if $page_all_associates[$page_all.id].option}-->
<dl>
<!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
<!--{if $page_all_associates[$page_all.id].option[$option.id]}-->
<dt>{$option.name}</dt>
<dd>
<!--{if $option.type == 'file'}--><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}page_options/{$page_all.id}/{$option.id}/{$page_all_associates[$page_all.id].option[$option.id]}">{$page_all_associates[$page_all.id].option[$option.id]}</a>
<!--{else}-->{$page_all_associates[$page_all.id].option[$option.id]|nl2br}
<!--{/if}-->
</dd>
<!--{/if}-->
<!--{/foreach}-->
</dl>
<!--{/if}-->
</li>
<!--{/foreach}-->
</ul>
<!--{/if}-->
解説
<!--{もし一括表示するページがあったらここから}-->
<ul>
<!--{一括表示するページを[$page_all]として繰り返して表示するここから}-->
<li><a href="{freo設置URL}/page/{一括表示するページのID}">{一括表示するページのタイトル}</a>
<!--{もし一括表示するページにオプションがついてたらここから}-->
<dl>
<!--{freoに登録されているオプションを[$option]として繰り返して表示するここから}-->
<!--{もし一括表示するページ[$page_all.id]のオプションIDが[$option.id]のオプションに情報が登録されていたらここから}-->
<dt>{オプションの名前}</dt>
<dd>
<!--{もしオプションの種類がファイルアップロードだったらここから}--><a href="{freo設置URL}{freoのファイル設置フォルダ}page_options/{一括表示するページのID}/{オプションのID}/{一括表示するページ[$page_all.id]のオプションIDが[$option.id]のオプションに登録されている情報=ファイル名}">{一括表示するページ[$page_all.id]のオプションIDが[$option.id]のオプションに登録されている情報=ファイル名}</a>
<!--{そうじゃなければ}-->{一括表示するページ[$page_all.id]のオプションIDが[$option.id]のオプションに登録されている情報|改行を<br />として表示する}
<!--{もしオプションの種類がファイルアップロードだったらここまで}-->
</dd>
<!--{もし一括表示するページ[$page_all.id]のオプションIDが[$option.id]のオプションに情報が登録されていたらここまで}-->
<!--{freoに登録されているオプションを繰り返して表示するここまで}-->
</dl>
<!--{もし一括表示するページにオプションがついてたらここまで}-->
</li>
<!--{一括表示するページを繰り返して表示するここまで}-->
</ul>
<!--{もし一括表示するページがあったらここまで}-->
一括表示するページのオプション情報を個別に表示するテンプレート編集例
オプションID「test1」「test2」「test3」が登録されている場合を解説します。
ちなみに、それぞれの種類は
test1…一行入力
test2…複数行入力
test3…アップロード
とします。
[templates/internals/page]フォルダの[default.html]の一括表示するページプラグイン使用部分を以下の通り編集する。
<!--{if $page_alls|smarty:nodefaults}-->
<ul>
<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
<li><a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
<!--{if $page_all_associates[$page_all.id].option}-->
<table summary="オプション">
<tr>
<th>{$freo.refer.options.test1.name}</th>
<td>{$page_all_associates[$page_all.id].option.test1}</td>
</tr>
<tr>
<th>{$freo.refer.options.test2.name}</th>
<td>{$page_all_associates[$page_all.id].option.test2|nl2br}</td>
</tr>
<tr>
<th>{$freo.refer.options.test3.name}</th>
<td><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}page_options/{$page_all.id}/test3/{$page_all_associates[$page_all.id].option.test3}">{$page_all_associates[$page_all.id].option.test3}</a></td>
</tr>
</table>
<!--{/if}-->
</li>
<!--{/foreach}-->
</ul>
<!--{/if}-->
解説
<!--{もし一括表示するページがあったらここから}-->
<ul>
<!--{一括表示するページを繰り返して表示するここから}-->
<li><一括表示するページのURLへリンクここから>一括表示するページのタイトル<一括表示するページのURLへリンクここまで>
<!--{もし一括表示するページ[$page_all]にオプションが利用されていたらここから}-->
<table summary="オプション">
<tr>
<th>{オプションID「test1」のオプション名}</th>
<td>{一括表示するページ[$page_all]に登録されてるオプションID「test1」の内容}</td>
</tr>
<tr>
<th>{オプションID「test2」のオプション名}</th>
<td>{一括表示するページ[$page_all]に登録されてるオプションID「test2」の内容|改行は<br />に変換}</td>
</tr>
<tr>
<th>{オプションID「test3」のオプション名}</th>
<td><一括表示するページ[$page_all]に登録されてるオプションID「test3」ファイルへのリンク>{一括表示するページ[$page_all]に登録されてるオプションID「test3」の内容}</a></td>
</tr>
</table>
<!--{もし一括表示するページ[$page_all]にオプションが利用されていたらここまで}-->
</li>
<!--{一括表示するページを繰り返して表示するここまで}-->
</ul>
<もし一括表示するページがあったらここまで>
freo公式サイトの各機能の解説から「オプションを個別に表示する」を参考にしてください。
続きを読む