ページ一括表示プラグインで分類別イメージギャラリー

久々の freo ネタです。当サイトの配布物のページはページイメージ分類別表示プラグインを使って表示しているのですが、このプラグインだと一階層しか表示できません。「ページイメージ分類別表示プラグインは一階層しか表示できないのかぁ…Gallery/hoge/foo/barなIDはリストアップしてくれないっぽい」とつぶやいたところ、freo 作者のないとさんからアドバイスをいただいたのでそのうち公式で解説が出るかもしれませんがメモとして残しておきます。

ページ一括表示プラグインで階層無制限の分類別イメージギャラリー

使うプラグインはページ一括表示プラグインです。templates/plugins/page_all/default.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>
 
        <!--{if $page_all_images[$page_all.id].width and $page_all_images[$page_all.id].height}-->
        <img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}page_images/{$page_all.id}/{$page_all.image}" alt="{$page_all.memo|default:$page_all.file}" title="{$page_all.memo|default:$page_all.file}"  />
        <!--{/if}-->
 
        <!--{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}-->
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->

こうすることでページ登録時に「ファイルのイメージ」を添付しているものにイメージが表示されます。画像サイズや表示は CSS で調整すると吉。「これはいいけど特定のページでの表示(例えばギャラリーのトップ)だけに画像を表示したいよ」という場合には元々のコードを消さず、上記のコードの先頭に

<!--{if $smarty.get.id=='表示したいページのID'}-->

その直後に

<!--{else}-->

を追加したものを元々のコードの上に貼り付け、最終行を

<!--{/if}-->

で閉じると特定のページでのリストアップのみイメージ表示、他のページでは従来のリンクリストを表示することが出来ます。

ご注意

このコードが使えるテンプレートは「templates/plugins/page_all/default.html」です。私はナイトさんが説明してくださったにもかかわらず表示したい方のテンプレートファイルを一生懸命弄って「画像表示できないよー><」とテンパってました(すみません…orz)。