2010年5月21日

カラーミーのカテゴリー表示 2

【追記】 公式に実装されました。以下は古い記事になります。
当サイトの記事「2011年夏以降の新機能まとめ


カラーミーのカテゴリー表示 1」のつづき。
サンプルを作ってみました。例として、テンプレート「ウッド」を使用しています。id名は任意でどうぞ。

1.テンプレート「商品検索結果」上部の該当箇所に、橙色部分を追加。
<div id="result" style="color:#666;padding:0px 5px;margin-bottom:15px;">
検索条件
[カテゴリー]:<{if $search_category!=""}><strong><{$search_category}></strong><{/if}>
[検索文字]:<{if $search_keyword!=""}><strong><{$search_keyword}></strong><{/if}>
<br />
HIT件数:<strong><{$productlist_num}></strong>件
</div>


<table class="main_title" cellpadding="0" cellspacing="0" border="0" style="margin-bottom:1px;">
<tr><td id="title"><img src="http://img.shop-pro.jp/tmpl_img/11/sp.gif" width="15px" height="5px">▼ 検索結果</td></tr>
</table>

2.テンプレート「商品検索結果」の一番下に新規追加(id="title"、id="result"より下であればOK)。
//条件分岐。見出し変更と関数呼び出し
<{if $search_keyword=="指定なし"}>
  <script type="text/javascript">
  <!--
    document.getElementById("title").innerHTML = "▼ カテゴリー別商品";
    SetCategory("<{$smarty.get.cid}>","<{$search_category}>","<{$shop_name}>");
  //-->
  </script>
<{else}>
  <script type="text/javascript">
  <!--
    document.getElementById("title").innerHTML = "▼ 検索結果";

  //-->
  </script>
<{/if}>

3.JavaScript(外部ファイルの場合は、テンプレート「共通」または「商品検索結果」 の先頭で読み込む。<body>部でOK
//ウィンドウのタイトル変更、パンくずリスト作成
function SetCategory(cid,cname,sname) {
  strTag1=' <a href="./">ホーム</a> > <a href="./?mode=srh&sort=n&cid=';
  strTag2='">';
  strTag3='</a>';
  if(cid != "") {
    document.getElementById("result").innerHTML=strTag1+cid+"%2C0&keyword="+strTag2+cname+strTag3;
    window.document.title = cname + " - " + sname;
  }
  else {
    document.getElementById("result").innerHTML=strTag1+"& keyword="+strTag2+"全ての商品"+strTag3;
    window.document.title = "全ての商品 - " + sname;
  }
}

【参照リンク】
とほほのJavaScriptリファレンス

【関連記事】
独自タグをJavaScriptの関数に渡す

【追記】
以前、Smarty使用しない版を掲載していましたが、差し替えました。こちらのほうが断然良い出来です。
【追記2】
質問コメントがありましたので、手直ししました。
【追記3】
助け合い掲示板にも同様の話題がありました。
【追記4】
JavaScriptを置くレンタルサーバーがない場合は、テンプレート編集の「共通」の先頭が都合よいです。上のをコピペしただけでは動きませんので、下の書き方を参考して下さい。
<script type="text/javascript">
  function SetCategory(cid,cname,sname) {
    ~
  }
</script>