【freo】【freoTips】【プラグイン系TIPS】テンプレートを変えるだけでリンクをタグごとに表示する方法
- 2012/08/05 01:47
- バナー付きリンクプラグイン
- 59
当サイトで配布しているバナー付きリンクプラグインのリンクをタグごとに表示する方法です。
バナー付きリンクプラグインでは、タグをつけることができます。
これを使って、リンクを分類表示することができます。
たとえば、リンクを「ジャンルA」「ジャンルB」「ジャンルC」の3つに分類したいとします。
リンク登録時に、タグ部分に「ジャンルA」または「ジャンルB」または「ジャンルC」と登録します。
デフォルトだと、リンクは登録ID順(昇順か降順を選ぶことはできます)に表示されます。
このままだとジャンルがごちゃ混ぜで表示されてしまうので、ジャンルごとに表示してみます。
[freo/templates/plugins/link/default.html]をエディタで開きます。
28~78行目を変更します。
デフォルトではこうなってます↓
<h2>リンク一覧</h2>
<table id="link">
~中略~
</tbody>
</table>
<table id="link">
~中略~
</tbody>
</table>
これを、下記のように変更します。
<h2>ジャンルA</h2> <dl class="link"> <!--{foreach from=$plugin_links|smarty:nodefaults item='plugin_link'}--> <!--{foreach from=$plugin_link_tags[$plugin_link.id]|smarty:nodefaults item='plugin_link_tag' name='loop'}--> <!--{if $plugin_link_tag == 'ジャンルA'}--> <dt><!--{if $plugin_link.url}--><p><a href="{$plugin_link.url}" target="_blank"><!--{if $plugin_link_files.file}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/link_files/{$plugin_link.id}/{$plugin_link_files.file}" alt="{$plugin_link.title}" /><!--{elseif $plugin_link.imageurl}--><img src="{$plugin_link.imageurl}" alt="{$plugin_link.title}" /><!--{else}-->{$plugin_link.title}<!--{/if}--></a></p><!--{/if}--></dt> <dd><!--{if $plugin_link.text}--><br />{$plugin_link.text}<!--{/if}--><!--{if $freo.user.authority == 'root' or $freo.user.authority == 'author'}--><a href="{$freo.core.http_file}/link/admin_form?id={$plugin_link.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a><!--{/if}--></dd> <!--{/if}--> <!--{/foreach}--> <!--{/foreach}--> </dl> <br> <h2>ジャンルB</h2> <dl class="link"> <!--{foreach from=$plugin_links|smarty:nodefaults item='plugin_link'}--> <!--{foreach from=$plugin_link_tags[$plugin_link.id]|smarty:nodefaults item='plugin_link_tag' name='loop'}--> <!--{if $plugin_link_tag == 'ジャンルB'}--> <dt><!--{if $plugin_link.url}--><p><a href="{$plugin_link.url}" target="_blank"><!--{if $plugin_link_files.file}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/link_files/{$plugin_link.id}/{$plugin_link_files.file}" alt="{$plugin_link.title}" /><!--{elseif $plugin_link.imageurl}--><img src="{$plugin_link.imageurl}" alt="{$plugin_link.title}" /><!--{else}-->{$plugin_link.title}<!--{/if}--></a></p><!--{/if}--></dt> <dd><!--{if $plugin_link.text}--><br />{$plugin_link.text}<!--{/if}--><!--{if $freo.user.authority == 'root' or $freo.user.authority == 'author'}--><a href="{$freo.core.http_file}/link/admin_form?id={$plugin_link.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a><!--{/if}--></dd> <!--{/if}--> <!--{/foreach}--> <!--{/foreach}--> </dl> <br> <h2>ジャンルC</h2> <dl class="link"> <!--{foreach from=$plugin_links|smarty:nodefaults item='plugin_link'}--> <!--{foreach from=$plugin_link_tags[$plugin_link.id]|smarty:nodefaults item='plugin_link_tag' name='loop'}--> <!--{if $plugin_link_tag == 'ジャンルC'}--> <dt><!--{if $plugin_link.url}--><p><a href="{$plugin_link.url}" target="_blank"><!--{if $plugin_link_files.file}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/link_files/{$plugin_link.id}/{$plugin_link_files.file}" alt="{$plugin_link.title}" /><!--{elseif $plugin_link.imageurl}--><img src="{$plugin_link.imageurl}" alt="{$plugin_link.title}" /><!--{else}-->{$plugin_link.title}<!--{/if}--></a></p><!--{/if}--></dt> <dd><!--{if $plugin_link.text}--><br />{$plugin_link.text}<!--{/if}--><!--{if $freo.user.authority == 'root' or $freo.user.authority == 'author'}--><a href="{$freo.core.http_file}/link/admin_form?id={$plugin_link.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a><!--{/if}--></dd> <!--{/if}--> <!--{/foreach}--> <!--{/foreach}--> </dl>
つまりはこんな感じです↓
<h2>ジャンルA</h2>
<dl class="link">
<!--{plugin_linksの配列の繰り返しここから}-->
<!--{個別リンク記事に登録されているタグの配列の繰り返しここから}-->
<!--{もしタグに'ジャンルA'が登録されてたらここから}-->
~省略~
<!--{もしタグに「ジャンルA」が登録されてたらここまで}-->
<!--{個別リンク記事に登録されているタグの配列の繰り返しここまで}-->
<!--{plugin_linksの配列の繰り返しここまで}-->
</dl>
<dl class="link">
<!--{plugin_linksの配列の繰り返しここから}-->
<!--{個別リンク記事に登録されているタグの配列の繰り返しここから}-->
<!--{もしタグに'ジャンルA'が登録されてたらここから}-->
~省略~
<!--{もしタグに「ジャンルA」が登録されてたらここまで}-->
<!--{個別リンク記事に登録されているタグの配列の繰り返しここまで}-->
<!--{plugin_linksの配列の繰り返しここまで}-->
</dl>
これが下線部に変更を加えた上で(ジャンルBとジャンルCに変更してます)3回繰り返されているというわけです。
ただし、タグが重複して登録されていた場合、複数のジャンルにダブって表示されてしまうので注意が必要です。
たとえば、一件のリンク記事に「ジャンルA」と「ジャンルB」のどちらのタグも登録されていた場合、「ジャンルA」の表示欄と「ジャンルB」の表示欄のどちらにもリンク記事が表示されてしまいます。
ですので、分類表示の条件として使用したいタグは重複しないように登録することをオススメします。
ちなみに、ページやデフォルト画面に表示したい場合も、↑のソースを利用できます。