• 虹色ミツバチ
  • freoカスタマイズメモ、テンプレート・プラグイン配布/officeTIPS
検索プラグイン
虹色ミツバチ

> Entry >freo>freoTips>freo変数一覧> 兄妹ページ表示プラグインで兄妹ページのオプションを取得する方法

【freo】【freoTips】【freo変数一覧】兄妹ページ表示プラグインで兄妹ページのオプションを取得する方法

freo公式サイトで、兄妹ページ表示プラグインが配布されています。
これは、同階層のページ一覧を表示するプラグインです。

【関連リンク】
32877|兄妹ページ表示プラグインで取得できる情報

下記に、兄妹ページのオプションの情報を取得する方法を紹介します。

兄妹ページのオプション情報を取得する方法

兄妹ページの情報についての解説

あるページの兄妹ページは、複数存在する可能性があります。
よって、兄妹ページの情報を格納するテーブルは、多次元配列になっています。
よって、兄妹ページの情報を取り出すときには、foreachを利用しなければなりません。

兄妹ページの情報は、「$plugin_page_sibling」というテーブルに格納されています。
「$plugin_page_sibling」テーブルの情報を表示したいときは、foreachしなければなりません。

とにかく、兄妹ページの情報を表示したいなら、下記の通りにしなければならないってことです。

<!--{foreach from=$plugin_page_siblings|smarty:nodefaults item='plugin_page_sibling'}-->

兄妹ページの情報を表示したい部分

<!--{/foreach}-->

上記のように、兄妹ページの情報を表示したい箇所は、<!--{foreach from=$plugin_page_siblings|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、兄妹ページの情報は表示されませんので注意して下さい。

兄妹ページのオプションのとりかたについての解説

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

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

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

説明すると、

{$plugin_page_sibling_associates[$plugin_page_sibling.id].option.[$option.id]}

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

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

こういうことです。

しかし、上の変数だけを書いても兄妹ページのオプションの情報は取得できません。

オプションを一括で取得する場合も、個別に取得する場合も、共通しているのは、[$plugin_page_sibiling.id]=[$兄妹ページのID]を指定するために、やはり、<!--{foreach from=$plugin_page_siblings|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟む必要があるということです。

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

<!--{foreach from=$plugin_page_siblings|smarty:nodefaults item='plugin_page_sibling'}-->

{$plugin_page_sibling_associates[$plugin_page_sibling.id].option.test1}

<!--{/foreach}-->

のようになります。

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

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

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

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

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

<!--{/foreach}-->

このようにします。

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

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

       {$plugin_page_sibling_associates[$plugin_page_sibling.id].option.[$option.id]}

   <!--{/foreach}-->
<!--{/foreach}-->

 このようになります。

兄妹ページのオプション情報を一括で表示するテンプレート編集例

[templates/internals/page]フォルダの[default.html]の兄妹ページプラグイン使用部分を以下の通り編集する。

<!--{if $plugin_page_siblings|smarty:nodefaults}-->
    <h3>ページ直接移動</h3>
        <ul>
            <!--{foreach from=$plugin_page_siblings|smarty:nodefaults item='plugin_page_sibling'}-->
                <li><a href="{$freo.core.http_file}/page/{$plugin_page_sibling.id}">{$plugin_page_sibling.title}</a>
                <!--{if $plugin_page_sibling_associates[$plugin_page_sibling.id].option}-->
                    <dl>
                        <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
                            <!--{if $plugin_page_sibling_associates[$plugin_page_sibling.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/{$plugin_page_sibling.id}/{$option.id}/{$plugin_page_sibling_associates[$plugin_page_sibling.id].option[$option.id]}">{$plugin_page_sibling_associates[$plugin_page_sibling.id].option[$option.id]}</a>
                                    <!--{else}-->{$plugin_page_sibling_associates[$plugin_page_sibling.id].option[$option.id]|nl2br}
                                    <!--{/if}-->
                                </dd>
                            <!--{/if}-->
                        <!--{/foreach}-->
                    </dl>
                <!--{/if}-->
                </li>
            <!--{/foreach}-->
        </ul>
<!--{/if}-->

解説

<!--{もし兄妹ページがあったらここから}-->
    <h3>ページ直接移動</h3>
        <ul>
            <!--{兄妹ページを[$plugin_page_sibling]として繰り返して表示するここから}-->
                <li><a href="{freo設置URL}/page/{兄妹ページのID}">{兄妹ページのタイトル}</a>
                <!--{もし兄妹ページにオプションがついてたらここから}-->
                    <dl>
                        <!--{freoに登録されているオプションを[$option]として繰り返して表示するここから}-->
                            <!--{もし兄妹ページ[$plugin_page_sibling.id]のオプションIDが[$option.id]のオプションに情報が登録されていたらここから}-->
                                <dt>{オプションの名前}</dt>
                                <dd>
                                    <!--{もしオプションの種類がファイルアップロードだったらここから}--><a href="{freo設置URL}{freoのファイル設置フォルダ}page_options/{兄妹ページのID}/{オプションのID}/{兄妹ページ[$plugin_page_sibling.id]のオプションIDが[$option.id]のオプションに登録されている情報=ファイル名}">{兄妹ページ[$plugin_page_sibling.id]のオプションIDが[$option.id]のオプションに登録されている情報=ファイル名}</a>
                                    <!--{そうじゃなければ}-->{兄妹ページ[$plugin_page_sibling.id]のオプションIDが[$option.id]のオプションに登録されている情報|改行を<br />として表示する}
                                    <!--{もしオプションの種類がファイルアップロードだったらここまで}-->
                                </dd>
                            <!--{もし兄妹ページ[$plugin_page_sibling.id]のオプションIDが[$option.id]のオプションに情報が登録されていたらここまで}-->
                        <!--{freoに登録されているオプションを繰り返して表示するここまで}-->
                    </dl>
                <!--{もし兄妹ページにオプションがついてたらここまで}-->
                </li>
            <!--{兄妹ページを繰り返して表示するここまで}-->
        </ul>
<!--{もし兄妹ページがあったらここまで}-->

兄妹ページのオプション情報を個別に表示するテンプレート編集例

オプションID「test1」「test2」「test3」が登録されている場合を解説します。
ちなみに、それぞれの種類は
test1…一行入力
test2…複数行入力
test3…アップロード
とします。

[templates/internals/page]フォルダの[default.html]の兄妹ページプラグイン使用部分を以下の通り編集する。

 <!--{if $plugin_page_siblings|smarty:nodefaults}-->
<h3>ページ直接移動</h3>
<ul>
<!--{foreach from=$plugin_page_siblings|smarty:nodefaults item='plugin_page_sibling'}-->
   <li><a href="{$freo.core.http_file}/page/{$plugin_page_sibling.id}">{$plugin_page_sibling.title}</a>
      <!--{if $plugin_page_sibling_associates[$plugin_page_sibling.id].option}-->
         <table summary="オプション">
         <tr>
             <th>{$freo.refer.options.test1.name}</th>
             <td>{$plugin_page_sibling_associates[$plugin_page_sibling.id].option.test1}</td>
         </tr>
         <tr>
             <th>{$freo.refer.options.test2.name}</th>
             <td>{$plugin_page_sibling_associates[$plugin_page_sibling.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/{$plugin_page_sibling.id}/test3/{$plugin_page_sibling_associates[$plugin_page_sibling.id].option.test3}">{$plugin_page_sibling_associates[$plugin_page_sibling.id].option.test3}</a></td>
         </tr>
         </table>
      <!--{/if}-->
   </li>
<!--{/foreach}-->
</ul>
<!--{/if}-->

解説)

 <!--{もし兄妹ページがあったらここから}-->
<h3>ページ直接移動</h3>
<ul>
<!--{兄妹ページを繰り返して表示するここから}-->
   <li><兄妹ページのURLへリンクここから>兄妹ページのタイトル<兄妹ページのURLへリンクここまで>
      <!--{もし兄妹ページ[$plugin_page_sibling]にオプションが利用されていたらここから}-->
         <table summary="オプション">
         <tr>
             <th>{オプションID「test1」のオプション名}</th>
             <td>{兄妹ページ[$plugin_page_sibling]に登録されてるオプションID「test1」の内容}</td>
         </tr>
         <tr>
             <th>{オプションID「test2」のオプション名}</th>
             <td>{兄妹ページ[$plugin_page_sibling]に登録されてるオプションID「test2」の内容|改行は<br />に変換}</td>
         </tr>
         <tr>
             <th>{オプションID「test3」のオプション名}</th>
             <td><兄妹ページ[$plugin_page_sibling]に登録されてるオプションID「test3」ファイルへのリンク>{兄妹ページ[$plugin_page_sibling]に登録されてるオプションID「test3」の内容}</a></td>
         </tr>
         </table>
      <!--{もし兄妹ページ[$plugin_page_sibling]にオプションが利用されていたらここまで}-->
   </li>
<!--{兄妹ページを繰り返して表示するここまで}-->
</ul>
<もし兄妹ページがあったらここまで>

freo公式サイトの各機能の解説から「オプションを個別に表示する」を参考にしてください。

ページ移動

関連記事

ページ上部へ