utitiliyマニュアル・ガイド

ディレクトリー構造

 ルートディレクトリー
└ templates
 - └ utility.html--------:今回の対象ファイル

utility.html テンプレートファイルの中身

以下が2021年8月18日時点の /templates/utility.html ファイルの記載内容です。

<aside>
<!--{if $page.id|mb_strpos:'/' === FALSE}-->
    {assign var="id" value=$page.id}
    {assign var="title" value=$page.title}
<!--{else}-->
    {assign var="pos" value=$page.id|mb_strpos:'/'}
    {assign var="id" value=$page.id|substr:0:$pos}
<!--{foreach from=$freo.refer.pages|smarty:nodefaults item='refer_page'}-->
<!--{if $refer_page.id === $id}-->
    {assign var="title" value=$refer_page.title}
<!--{php}break;{/php}-->
<!--{/if}-->
<!--{/foreach}-->
<!--{/if}-->
    <div class="tit"><a href="{$freo.core.http_url}{$id}">{$title}</a></div>
    {assign var="pid" value=$id}
    {include file='plugins/page_all/aside.html'}
<!--{if $freo.core.plugin == search}-->
    <form action="/search" method="get" id="search-jump">
        <div class="tit">検索条件を変更する</div>
        <fieldset>
            <dl>
                <dd><input type="text" name="word" value="{$smarty.get.word}" placeholder="キーワード検索"></dd>
            </dl>
            <p class="search-btn"><input type="submit" value="検索する"></p>
            <div class="hidden-box">
                <input type="checkbox" id="search-detail">
                <label for="search-detail" class="search-label">詳細条件</label>
                <div class="hidden-show">
                    <!--{if $freo.refer.options|smarty:nodefaults}-->
                    <dl>
                        <!--{if !$smarty.get.page_name}-->
                        <dt>検索対象</dt>
                        <dd>
                            <select name="target">
                                <option value="">すべて</option>
                                <option value="entry"{if $smarty.get.target=='entry'} selected="selected"{/if}>エントリー</option>
                                <option value="page"{if $smarty.get.target=='page'} selected="selected"{/if}>ページ </option>
                            </select>
                        </dd>
                        <!--{/if}-->
                        <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
                        <!--{if $option.type == 'text' and $option.validate == 'numeric'}-->
                        <dt>{$option.name}</dt>
                        <dd>
                            <input type="text" name="option[{$option.id}][from]" value="{$smarty.get.option[$option.id].from}">以上、<input type="text" name="option[{$option.id}][to]" value="{$smarty.get.option[$option.id].to}">以下
                        </dd>
                        <!--{elseif $option.type == 'text' or $option.type == 'textarea'}-->
                        <dt>{$option.name}</dt>
                        <dd><input type="text" name="option[{$option.id}]" value="{$smarty.get.option[$option.id]}"></dd>
                        <!--{elseif $option.type == 'select' or $option.type == 'radio' or $option.type == 'checkbox'}-->
                        <dt>{$option.name}</dt>
                        <dd>
                            <ul>
                                <!--{assign var='option_texts' value=$option.text|explode:"\n"}-->
                                <!--{foreach from=$option_texts|smarty:nodefaults item='option_text' name='loop'}-->
                                <li>
                                    <label class="checkbox" for="label_option_{$option.id}_{$smarty.foreach.loop.index}">
                                        <input type="checkbox" name="option[{$option.id}][{$option_text}]" id="label_option_{$option.id}_{$smarty.foreach.loop.index}" value="{$option_text}"{if $smarty.get.option[$option.id][$option_text]==$option_text} checked="checked"{/if}>
                                        <span>{$option_text}</span>
                                    </label>
                                </li>
                                <!--{/foreach}-->
                            </ul>
                        </dd>
                        <!--{/if}-->
                        <!--{/foreach}-->
                    </dl>
                    <!--{/if}-->
                    <p class="search-btn"><input type="submit" value="検索する"></p>
                </div><!--/.hidden-show-->
            </fieldset>
        </form>
    </div>
<!--{/if}-->
</aside>

解説

内部改装へのリンクと条件文

2行目あたり~21行目あたりの記述は、各内部ページを表示するための条件分岐とプラグインを読み込んでいます。例として、以下の記述を解説します。また、この記述の動作を実現するには、common.jsのファイルも初期の状態から変更が必要です(テンプレートファイルは変更済み)

<!--{if $page.id|mb_strpos:'/' === FALSE}-->
    {assign var="id" value=$page.id}
    {assign var="title" value=$page.title}
<!--{else}-->
    {assign var="pos" value=$page.id|mb_strpos:'/'}
    {assign var="id" value=$page.id|substr:0:$pos}
<!--{foreach from=$freo.refer.pages|smarty:nodefaults item='refer_page'}-->
<!--{if $refer_page.id === $id}-->
    {assign var="title" value=$refer_page.title}
<!--{php}break;{/php}-->
<!--{/if}-->
<!--{/foreach}-->
<!--{/if}-->
    <div class="tit"><a href="{$freo.core.http_url}{$id}">{$title}</a></div>
    {assign var="pid" value=$id}
    {include file='plugins/page_all/aside.html'}

この記述は、PC画面で言うとサイドバー(内部ページのナビゲーション)を表示させ、SP画面で言うと、ページ下部に表示される内部ページのナビゲーションさせるものです。ページ間移動をしやすくするための記述がしてあります。

ユーティリティー部分

再検索フォーム

サイト内検索機能のタグを表示させるものです。ヘッダーにて検索機能を使う場合、サイドバーで再検索ができるように設置してあります。

<!--{if $freo.core.plugin == search}-->
    <form action="/search" method="get" id="search-jump">
        <div class="tit">検索条件を変更する</div>
        <fieldset>
            <dl>
                <dd><input type="text" name="word" value="{$smarty.get.word}" placeholder="キーワード検索"></dd>
            </dl>
            <p class="search-btn"><input type="submit" value="検索する"></p>
            <div class="hidden-box">
                <input type="checkbox" id="search-detail">
                <label for="search-detail" class="search-label">詳細条件</label>
                <div class="hidden-show">
                    <!--{if $freo.refer.options|smarty:nodefaults}-->
                    <dl>
                        <!--{if !$smarty.get.page_name}-->
                        <dt>検索対象</dt>
                        <dd>
                            <select name="target">
                                <option value="">すべて</option>
                                <option value="entry"{if $smarty.get.target=='entry'} selected="selected"{/if}>エントリー</option>
                                <option value="page"{if $smarty.get.target=='page'} selected="selected"{/if}>ページ </option>
                            </select>
                        </dd>
                        <!--{/if}-->
                        <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
                        <!--{if $option.type == 'text' and $option.validate == 'numeric'}-->
                        <dt>{$option.name}</dt>
                        <dd>
                            <input type="text" name="option[{$option.id}][from]" value="{$smarty.get.option[$option.id].from}">以上、<input type="text" name="option[{$option.id}][to]" value="{$smarty.get.option[$option.id].to}">以下
                        </dd>
                        <!--{elseif $option.type == 'text' or $option.type == 'textarea'}-->
                        <dt>{$option.name}</dt>
                        <dd><input type="text" name="option[{$option.id}]" value="{$smarty.get.option[$option.id]}"></dd>
                        <!--{elseif $option.type == 'select' or $option.type == 'radio' or $option.type == 'checkbox'}-->
                        <dt>{$option.name}</dt>
                        <dd>
                            <ul>
                                <!--{assign var='option_texts' value=$option.text|explode:"\n"}-->
                                <!--{foreach from=$option_texts|smarty:nodefaults item='option_text' name='loop'}-->
                                <li>
                                    <label class="checkbox" for="label_option_{$option.id}_{$smarty.foreach.loop.index}">
                                        <input type="checkbox" name="option[{$option.id}][{$option_text}]" id="label_option_{$option.id}_{$smarty.foreach.loop.index}" value="{$option_text}"{if $smarty.get.option[$option.id][$option_text]==$option_text} checked="checked"{/if}>
                                        <span>{$option_text}</span>
                                    </label>
                                </li>
                                <!--{/foreach}-->
                            </ul>
                        </dd>
                        <!--{/if}-->
                        <!--{/foreach}-->
                    </dl>
                    <!--{/if}-->
                    <p class="search-btn"><input type="submit" value="検索する"></p>
                </div><!--/.hidden-show-->
            </fieldset>
        </form>
    </div>
<!--{/if}-->