【freo】【freo講座】【初心者の為のfreoサイト運営講座】【メニュー編(06)】ページ一括表示プラグインを利用してメニューを作る
- 2013/10/10 09:30
- メニュー
- ページ一括表示プラグイン
- 81
4.ページ一括表示プラグインを使う。
ページ一括表示プラグインを利用したメニュー作成方法です。
まずは、ページ一括表示プラグインの解説から始めたいと思います。
ページ一括表示プラグインとは
ページ一括表示プラグインは、freo公式で配布しているプラグインです。
ページをツリー状に一括表示することができます。
特定のページ以下のみをツリー表示することもできるので、作品ページの目次として利用することもできます。
ページのタイトル、URLはもちろん、本文、ファイル、オプションの情報など、ページに関する様々な情報を取得できます。
ページは、ページの並び順で表示されます。
ある階層のページ以下のページをツリー状に一覧表示するプラグインなので、ページ以外の画面、たとえばエントリー画面やプロフィール画面、メール送信プラグインなどの情報は取得することができません。
しかし、ページ一括表示プラグインのテンプレートに編集を加えれば、エントリー画面など、ページ機能を使ったページ以外の画面へのリンクを貼ることができます。
ページ一括表示プラグインを使ってメニューを作成するメリット
ページ一括表示プラグインを利用してメニューを作成することのメリットとしては、以下の二点が大きいと考えます。
- ページを階層表示できる
- ページのオプションやファイルなどの情報を取得できる
ページを階層表示できるということは、jqueryを使ったドロップダウンメニュー(例えばこんなやつ)を作れたりするということです。
また、オプションの情報を取得できれば、オプションを利用した新着マークを表示(例えばこういうこと)できたりします。
ページ一括表示プラグインを全ての画面で利用できるようにする
ページ一括表示プラグインは、デフォルトの状態だとページ画面でのみ利用可能となっていますが、ページ一括表示プラグインでメニューを作成する場合、全ての画面(デフォルト・エントリー・VIEWその他プラグイン画面)で利用できるように、プラグインを編集する必要があります。
編集方法は以下のとおりです。
- [freo/libs/freo/plugins/config.page_all.php]をエディタで開く。
- 17・18行目(displayファイルの読み込み設定)部分を削除する
- [freo/libs/freo/plugins/config.page_all.php]をアップロードする。
参考URL↓
freo公式:プラグインを色々なページに表示する
ページ一括表示プラグインをつかってページ一覧を表示する
- freo公式サイトからページ一括表示プラグインをDLして実装する。
- 【実践編(04)】メニュー作成準備・メニュー登録プラグインの利用の「0.メニュー用のテンプレートを作る」で作ったmenu.htmlの<div id="menu">~</div>の間に、下記のように記載する。
{include file='plugins/page_all/menu.html'}
- [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}-->
ページ一覧でオプションや添付ファイルの情報を利用する方法
- 32877:ページ一括表示プラグインでオプションの内容を表示する方法
- 32877:ページ一括表示プラグインで添付ファイルを表示する方法
- 32877:ページ一括表示プラグインで本文を引用する方法
ある階層以下をページ一覧で表示しないようにする方法
ページ一括表示プラグインは、デフォルトだと全階層のページを一覧表示してしまいます。
ある階層以下はページ一覧で表示しないようにしたい場合は、[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:ページ一括表示プラグインで「表示しない」ページを簡単に設定する