メニュー

Home >freoTIPS>プラグイン系TIPS> テンプレートを変えるだけでリンクをカテゴリーごとに表示する方法

【freoTIPS】【プラグイン系TIPS】テンプレートを変えるだけでリンクをカテゴリーごとに表示する方法

2014/01/04 02:38|タグ:バナー付きリンクプラグイングッジョブ表示 17

当サイトで配布しているバナー付きリンクプラグインのリンクをカテゴリーごとに表示する方法です。

バナー付きリンクプラグインでは、カテゴリーをつけることができます。
これを使って、リンクを分類することができます。
デフォルトのままだとカテゴリーがごちゃ混ぜで表示されてしまうので、カテゴリーごとに表示してみます。

[freo/templates/plugins/link/default.html]をエディタで開きます。
28~78行目を変更します。
デフォルトではこうなってます↓

        <h2>リンク一覧</h2>
        <table id="link">
       
        ~中略~
       
            </tbody>
        </table>

これを、下記のように変更します。

<!--{foreach from=$plugin_link_categories|smarty:nodefaults item='plugin_link_category' name='loop'}-->
<h3><a href="{$freo.core.http_file}/link?category_id={$plugin_link_category.id}">{$plugin_link_category.name}</a></h3>
    <table id="link">
        <thead>
            <tr>
                <th>サイト名</th>
                <th>バナー</th>
                <th>コメント</th>
                <th>タグ</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>サイト名</th>
                <th>バナー</th>
                <th>コメント</th>
                <th>タグ</th>
            </tr>
        </tfoot>
        <tbody>
            <!--{foreach from=$plugin_links|smarty:nodefaults item='plugin_link'}-->
            <!--{if $plugin_link_category.id == $plugin_link.category_id}-->
            <tr>
                <td><!--{if $plugin_link.url}--><a href="{$plugin_link.url}" target="_blank">{$plugin_link.title}</a><!--{else}-->{$plugin_link.title}<!--{/if}--></td>
                <td>
                    <!--{if $plugin_link_files[$plugin_link.id].file}-->
                    <img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/link_files/{$plugin_link.id}/{$plugin_link_files[$plugin_link.id].file}" alt="{$plugin_link.title}" />
                    <!--{elseif $plugin_link.imageurl}-->
                    <img src="{$plugin_link.imageurl}" alt="{$plugin_link.title}" />
                    <!--{/if}-->
                </td>
                <td>{$plugin_link.text}</td>
                <td>
                    <!--{foreach from=$plugin_link_tags[$plugin_link.id]|smarty:nodefaults item='plugin_link_tag' name='loop'}-->
                        <a href="{$freo.core.http_file}/link?tag={$plugin_link_tag|smarty:nodefaults|escape:'url'}">{$plugin_link_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}-->
                    <!--{/foreach}-->
                </td>
            </tr>
            <!--{/if}-->
            <!--{/foreach}-->
        </tbody>
    </table>
<!--{/foreach}-->

つまりはこんな感じです↓

<h3>カテゴリー名</h3>
<!--{リンクカテゴリーの繰り返しここから}-->
<h3><a href="{$freo.core.http_file}/link?category_id={リンクカテゴリーID}">{リンクカテゴリー名}</a></h3>
    <table id="link">
        <thead>
            <tr>
                ~中略~
            </tr>
        </thead>
        <tfoot>
            <tr>
                ~中略~
            </tr>
        </tfoot>
        <tbody>
            <!--{リンクの繰り返しここから}-->
            <!--{もし今繰り返しているカテゴリーIDと今繰り返しているリンクのカテゴリーIDが等しければここから}-->

                ~中略~

            <!--{もし今繰り返しているカテゴリーIDと今繰り返しているリンクのカテゴリーIDが等しければここまで}-->
            <!--{リンクの繰り返しここまで}-->
        </tbody>
    </table>
<!--{リンクカテゴリーの繰り返しここまで}-->

ちなみに、ページやデフォルト画面に表示したい場合も、↑のソースを利用できます

ページ移動

関連エントリー

コメント

さくら

ミツさま

こんばんは。先日はアルバムプラグインの件でお世話になりました。
連続して何度も質問させていただくことになり大変恐縮なのですが、分からないことがありまたしてもご教授頂けますと幸いです。

こちらのバナー付きリンクを利用させていただこうとしているのですが、カテゴリー別ページ(link?category_id=◯◯)を表示すると
>>カテゴリー「Array.name」の検索結果は以下のとおりです。
という風にカテゴリー名が「Array.name」になってしまいます。
私側の問題だと思うのですが、いかんせんどこを修正したら良いのかも分かりません。
雑な質問で申し訳ないのですが、もしこのエラーを見て分かることがございましたら教えていただけますと嬉しいです。

また、この「テンプレートを変えるだけでリンクをカテゴリーごとに表示する方法」を使って、ページやデフォルト画面のサイドバー(Utility部分)に特定のカテゴリー(またはタグ)のリンクのみ表示させたいなと思っています。
ループさせる設定の時にifでカテゴリー(またはタグ)を絞ればいいのかなと思いましたが、すいません、構文の書き方が分かりませんでした…
素人すぎて恥ずかしくなるのですが、もし良かったらお教え頂けますと嬉しいです。

度々下らない質問を申し訳ありません。

  • 2016/09/11 04:52:48

ミツ@32877

こんにちは。

> こちらのバナー付きリンクを利用させていただこうとしているのですが、カテゴリー別ページ(link?category_id=◯◯)を表示すると
> >>カテゴリー「Array.name」の検索結果は以下のとおりです。
> という風にカテゴリー名が「Array.name」になってしまいます。

カテゴリー名表示部分が、

{$plugin_link_categories[$smarty.get.category_id].name}

になっているか確認して下さい。
当方のテンプレート配布時に間違っている可能性があるので、その場合はご指摘下さい。

> また、この「テンプレートを変えるだけでリンクをカテゴリーごとに表示する方法」を使って、ページやデフォルト画面のサイドバー(Utility部分)に特定のカテゴリー(またはタグ)のリンクのみ表示させたいなと思っています。

<ul>
<!--{foreach from=$plugin_links|smarty:nodefaults item='plugin_link'}-->
<!--{if $plugin_link.category_id == '特定したいカテゴリーID'}-->
<li><!--{if $plugin_link.url}--><a href="{$plugin_link.url}" target="_blank">{$plugin_link.title}</a><!--{else}-->{$plugin_link.title}<!--{/if}--></li>
<!--{/if}-->
<!--{/foreach}-->
</ul>

のようにして下さい。

---追記---
なお、管理画面→システム→設定管理→プラグインの設定→バナー付きリンクの「表示件数」のうち「エントリー・ページ・TOP画面等その他画面での1ページの表示件数」を全リンク件数よりも多い数にしておくことをおすすめします。
----------

参考になりそうな記事は下記の通りです。

・【freoTIPS】【freo変数一覧】バナー付きリンクプラグインの情報を一覧で表示する方法
 http://32877.xii.jp/index.php/view/297
・【freo講座】【初心者の為のfreoテンプレート編集講座】【基本編(06)】演算子を使った条件式(発展)
 http://32877.xii.jp/index.php/view/71

  • 2016/09/12 09:18:55

さくら

ミツさま
早速のお返事ありがとうございます。大変感謝します。

>>カテゴリ別ページで「Array.name」と表示される件
教えて頂いた情報から調べてみましたところ、テンプレート中の該当部分が{$plugin_link_categories[$smarty.get.category_id].nameというように、最後の}が落ちているようでした。
}を付け加えたところ、正常に動作いたしました。

>>特定のカテゴリのリンクのみを表示する
教えて頂いた方法で希望の表示をすることができました!
ありがとうございます。
重箱の隅をつつくようで申し訳ないですが、今後もし誰かがコメント欄を参考にされる時のため申し上げますと{$plugin_link.category_id}とアンダーバーではなくドットでした。
答えを示して頂くと、ミツさまのこれまでの記事を十分理解していれば自力で書ける簡単なものでした…いざその時にはピンときませんでしたもので、お手数をおかけして申し訳ありません。

すいません、もうひとつだけお聞きしたいことがあるのですがよろしいでしょうか…
この「特定のカテゴリのリンクのみ表示」を、貴サイトで公開されているアルバムプラグイン内で表示する方法はありませんでしょうか?
用途としては、「ランキング」というカテゴリでクリック式のランキングサイトをリンク登録し、アルバムページ(サイドバーやフッター)に表示することで「よかったらランキング協力お願いします」という形態を作りたいと思っています。
我儘要望ばかりで重ね重ね申し訳ありません。
勿論無理にとは申し上げません!
どうぞよろしくお願いいたします。

  • 2016/09/12 15:33:42

ミツ@32877

こんにちは。

テンプレートに不備があったようで失礼いたしました。
該当箇所を直してアップデートしましたのでご確認下さい。

> 重箱の隅をつつくようで申し訳ないですが、今後もし誰かがコメント欄を参考にされる時のため申し上げますと{$plugin_link.category_id}とアンダーバーではなくドットでした。

どこがアンダーバーでなくドットなのか教えて下さい。
多分間違っていないと思うのですが…。

> この「特定のカテゴリのリンクのみ表示」を、貴サイトで公開されているアルバムプラグイン内で表示する方法はありませんでしょうか?

freo公式サイト「プラグインを色々なページに表示する」
http://freo.jp/document/customize/plugin_load.html
を参考に、config.link.phpのdisplayファイルの読み込み設定に「album」を追加してください。

  • 2016/09/12 16:10:37

さくら

ミツさま
お返事ありがとうございます。
すいません、大きな勘違いをしていたみたいでした。
教えていただいた分でなんの問題もございません。

また、新しい質問にもお返事いただきありがとうございます。
公式のプログラムとの対応範囲がわかっていなかったため、無用な質問をしてしまいすみません。
無事希望の機能を実装することができました。
どうもありがとうございました。

  • 2016/09/13 03:05:18

さくら

ミツさま

何度も質問させていただくこととなり申し訳ありません。
問題の本質は私の人為的ミスやfreo本体のシステムである可能性がありますが、「バナー付きリンク」に関して悩んでいるため、質問のコメントをさせて頂きました。
もし管轄外でしたらすみません。

先日ミツ様より教えて頂きました、
<ul>
<!--{foreach from=$plugin_links|smarty:nodefaults item='plugin_link'}-->
<!--{if $plugin_link.category_id == '特定したいカテゴリーID'}-->
<li><!--{if $plugin_link.url}--><a href="{$plugin_link.url}" target="_blank">{$plugin_link.title}</a><!--{else}-->{$plugin_link.title}<!--{/if}--></li>
<!--{/if}-->
<!--{/foreach}-->
</ul>
というタグをアルバムなどの色々なページで利用していたところ、「album?category_id=◯◯」など、?以下の文字がつくページで表示されていない場合があることに気付きました。?tag=◯◯、?word=◯◯などといった、絞り込んだ際のページだと思います。

こちらで表示ができなくなるのは仕様でしょうか?
それとももし表示できる方法がありましたら、アイデアを教えていただけますと嬉しいです。

何度もご迷惑をおかけして重ね重ね申し訳ありません。

  • 2016/10/30 03:03:39

ミツ@32877

こんにちは。

アルバム画面でタグで検索時やフリーワードで検索時すると、{$smarty.get.tag}や{$smarty.get.word}に検索したタグやワードが格納されます。
バナー付きリンク配列をアルバム画面で表示する場合、{$smarty.get.tag}や{$smarty.get.word}は、アルバムの検索に利用される他、バナー付きリンク配列にも影響します。

たとえば、バナー付きリンクプラグインを表示しているアルバム画面で「テスト」というタグを検索(freo/index.php/album?tag=テスト画面にアクセス)するとき
・「テスト」というタグが登録されたアルバムを一覧表示する
・「テスト」というタグが登録されたリンクを一覧表示する
の両方が同時に起きているはずです。
さくらさんはバナー付きリンクプラグイン表示部分をカテゴリーで限定しているので、アルバムプラグインのバナー付きリンク表示部分には、「テスト」というタグが登録されていてなおかつ指定したカテゴリーのリンクのみが表示されているはずです。

アルバム検索時にバナー付きリンクプラグイン利用部分を非表示にするのであれば、

<!--{if !$smarty.get|smarty:nodefaults}-->
バナー付きリンク表示部分
<!--{/if}-->

のようにすればOKですが、アルバムプラグインにバナー付きリンクプラグインに登録しているリンクの内特定のカテゴリーのリンクのみを、どのような検索下にも関わらず表示したいのであれば、下記のとおりにしてください。

(1)新着リンクプラグインを実装する
(2)新着リンクプラグインの設定で表示するカテゴリーを指定する
(3)新着リンクプラグインをアルバムで利用できるようにconfig.link_recently.phpのdisplay設定を変更する

新着リンクプラグインは、検索ワード・タグに関わらず、カテゴリーIDでのみリンクを抽出するプラグインなので、ご要望に叶うと思います。

  • 2016/11/01 00:07:54

さくら

ミツさま

こんばんは。いつも不勉強の私にも分かりやすい丁寧なお返事どうもありがとうございます。

そうです、仰います通り、表示させたいリンクのカテゴリがタグや検索ワードと関連している時のみ表示されていました。
{$smarty.get.◯◯}という定義?がエントリーやアルバムやリンクで共通しているために起こる出来事だったのですね。
ひとりでずっと考えていて分からなかった原因が分かって、とてもスッキリしました。

また、対応策も教えていただきありがとうございます。
全てのページで表示させたかったので、新着リンクプラグインで表示件数を増やすことで対応させていただきました。
最初からこちらにすれば良かったんですね…別のプラグインの応用という道が全く頭になかったため、気づくことができませんでした。
ミツさまには余計なお手間をとらせてしまい、申し訳ありませんでした。
これを教訓として、サイト運営のためのさらなるプログラムの理解に努めて参ろうと思います。
この度は本当にありがとうございました。

  • 2016/11/02 20:27:51

コメント登録

登録フォーム
名前
メールアドレス
URL
コメント
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

新着コメント

2017/04/23|from:香峰ゆき
同人イベントプラグイン
2017/04/23|from:ミツ@32877
同人イベントプラグイン
2017/04/23|from:香峰ゆき
同人イベントプラグイン
2017/03/12|from:赤羊
アルバムプラグイン
2017/03/07|from:ミツ@32877
アルバムプラグイン

Twitter

サイト内検索

新着コメント

  • word
    208
  • word
    29
  • word
    218
  • word
    25
  • word
    206

ページ上部へ