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

> Entry >freo>freo講座>初心者の為のfreoサイト運営講座> 【メニュー編(06)】ページ一括表示プラグインを利用してメニューを作る

【freo】【freo講座】【初心者の為のfreoサイト運営講座】【メニュー編(06)】ページ一括表示プラグインを利用してメニューを作る

4.ページ一括表示プラグインを使う。

ページ一括表示プラグインを利用したメニュー作成方法です。
まずは、ページ一括表示プラグインの解説から始めたいと思います。

ページ一括表示プラグインとは

ページ一括表示プラグインは、freo公式で配布しているプラグインです。
ページをツリー状に一括表示することができます。
特定のページ以下のみをツリー表示することもできるので、作品ページの目次として利用することもできます。

ページのタイトル、URLはもちろん、本文、ファイル、オプションの情報など、ページに関する様々な情報を取得できます。
ページは、ページの並び順で表示されます。
ある階層のページ以下のページをツリー状に一覧表示するプラグインなので、ページ以外の画面、たとえばエントリー画面やプロフィール画面、メール送信プラグインなどの情報は取得することができません。
しかし、ページ一括表示プラグインのテンプレートに編集を加えれば、エントリー画面など、ページ機能を使ったページ以外の画面へのリンクを貼ることができます。

ページ一括表示プラグインを使ってメニューを作成するメリット

ページ一括表示プラグインを利用してメニューを作成することのメリットとしては、以下の二点が大きいと考えます。

  1.  ページを階層表示できる
  2. ページのオプションやファイルなどの情報を取得できる

ページを階層表示できるということは、jqueryを使ったドロップダウンメニュー(例えばこんなやつ)を作れたりするということです。
また、オプションの情報を取得できれば、オプションを利用した新着マークを表示(例えばこういうこと)できたりします。

ページ一括表示プラグインを全ての画面で利用できるようにする

ページ一括表示プラグインは、デフォルトの状態だとページ画面でのみ利用可能となっていますが、ページ一括表示プラグインでメニューを作成する場合、全ての画面(デフォルト・エントリー・VIEWその他プラグイン画面)で利用できるように、プラグインを編集する必要があります。

編集方法は以下のとおりです。

  1. [freo/libs/freo/plugins/config.page_all.php]をエディタで開く。
  2. 17・18行目(displayファイルの読み込み設定)部分を削除する
  3. [freo/libs/freo/plugins/config.page_all.php]をアップロードする。

参考URL↓
freo公式:プラグインを色々なページに表示する

ページ一括表示プラグインをつかってページ一覧を表示する
  1. freo公式サイトからページ一括表示プラグインをDLして実装する。
  2. 【実践編(04)】メニュー作成準備・メニュー登録プラグインの利用の「0.メニュー用のテンプレートを作る」で作ったmenu.htmlの<div id="menu">~</div>の間に、下記のように記載する。
    {include file='plugins/page_all/menu.html'}
    
  3. [freo/templates/plugins/page_all/default.html]をコピーして同フォルダにペーストし、[menu.html]とリネームする。

以上の手順で、全ページをツリー状に一覧を表示することができます。

  • ABOUT
  • NOVEL
    • ジャンル1
    • ジャンル2
    • ジャンル3
  • GALLERY
    • ジャンル1
    • ジャンル2
    • ジャンル3
  • INFO

のように表示されていれば成功です。

メニューツリーにページ以外の画面へのリンクを挿入させたい場合は、[freo/templates/plugins/page_all/menu.html]の編集が必要です。

ページ一覧に別の画面へのリンクを挿入してみる。

たとえば、メニューにブックマークやメールフォームへのリンクを追加してみます。
[freo/templates/plugins/page_all/menu.html]を以下のように編集します。

<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
    <!--{if $page_all.pid == $pid}-->
    <!--{php}if (!$flag) :{/php}--><ul><!--{php}endif;{/php}-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
        <!--{assign var="pid" value=$page_all.id}-->
        {include file='plugins/page_all/default.html'}
        <!--{assign var="pid" value=$page_all.pid}-->
    </li>
    <!--{php}$flag = 1;{/php}-->
    <!--{/if}-->
<!--{/foreach}-->
    <li><a href="{$freo.core.https_file}/bookmark">BOOKMARK</a></li>
    <li><a href="{$freo.core.https_file}/contact">CONTACT</a></li>
    <li><a href="{$freo.core.https_file}/clap">CLAP</a></li>
    <li><a href="{$freo.core.https_file}">TOP</a></li>
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->

また、ページの一覧に別のメニューへのリンクを割りこませる場合は以下のようになります。
たとえば、ABOUTとNOVELの間にDIARYへとしてエントリーへのリンクを割りこませます。

<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
    <!--{if $page_all.pid == $pid}-->
    <!--{php}if (!$flag) :{/php}--><ul><!--{php}endif;{/php}-->
    <!--{if $page_all.id == 'about' }-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
        <!--{assign var="pid" value=$page_all.id}-->
        {include file='plugins/page_all/default.html'}
        <!--{assign var="pid" value=$page_all.pid}-->
    </li>
    <li><a href="{$freo.core.https_file}/entry">DIARY</a></li>
    <!--{else}-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
        <!--{assign var="pid" value=$page_all.id}-->
        {include file='plugins/page_all/default.html'}
        <!--{assign var="pid" value=$page_all.pid}-->
    </li>
    <!--{/if}-->
    <!--{php}$flag = 1;{/php}-->
    <!--{/if}-->
<!--{/foreach}-->
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->
ページ一覧でオプションや添付ファイルの情報を利用する方法
ある階層以下をページ一覧で表示しないようにする方法

ページ一括表示プラグインは、デフォルトだと全階層のページを一覧表示してしまいます。
ある階層以下はページ一覧で表示しないようにしたい場合は、[freo/templates/plugins/page_all/menu.html]を以下のようにするといいと思います。
ちなみに、テンプレートのどの部分で子階層を読み込んでいるかは、ページ一括表示プラグインテンプレートの読み方でご確認下さい。

※ページの階層は、freoを小説サイトやイラストサイトとして使用するときのページID設定例のようになっていることを想定しています。

ページの親IDで判断する

親ページIDが「novel」かページIDが「gallery」か「info」だったら子ページを読み込まない。
それ以外の場合は子階層を読み込む。

<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
    <!--{if $page_all.pid == $pid}-->
    <!--{php}if (!$flag) :{/php}--><ul><!--{php}endif;{/php}-->
    <!--{if $page_all.pid == 'novel' or $page_all.pid == 'gallery' or $page_all.pid == 'info' }-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
    </li>
    <!--{else}-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
        <!--{assign var="pid" value=$page_all.id}-->
        {include file='plugins/page_all/default.html'}
        <!--{assign var="pid" value=$page_all.pid}-->
    </li>
    <!--{/if}-->
    <!--{php}$flag = 1;{/php}-->
    <!--{/if}-->
<!--{/foreach}-->
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->
ページIDで判断する

ページIDに「/genre」という文字列が含まれていたら子階層を読み込まない。
それ以外の場合は子階層を読み込む。

<!--{foreach from=$page_alls|smarty:nodefaults item='page_all'}-->
    <!--{if $page_all.pid == $pid}-->
    <!--{php}if (!$flag) :{/php}--><ul><!--{php}endif;{/php}-->
    <!--{if $page_all.id|regex_match:'/\/genre/'}-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
    </li>
    <!--{else}-->
    <li>
        <a href="{$freo.core.http_file}/page/{$page_all.id}">{$page_all.title}</a>
        <!--{assign var="pid" value=$page_all.id}-->
        {include file='plugins/page_all/default.html'}
        <!--{assign var="pid" value=$page_all.pid}-->
    </li>
    <!--{/if}-->
    <!--{php}$flag = 1;{/php}-->
    <!--{/if}-->
<!--{/foreach}-->
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->
ページ一括表示プラグインで「表示しない」ページを簡単に設定する

10press:ページ一括表示プラグインで「表示しない」ページを簡単に設定する

ページ移動

関連記事

ユーティリティ

Twitter

記事検索

ページ上部へ