質問 > 管理機能 > カテゴリメニュの最後の項目を取得したいのですが? |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
y758w |
投稿日時: 2010/10/13 21:44
対応状況: −−−
|
新米 登録日: 2010/10/6 居住地: 投稿: 5 |
カテゴリメニュの最後の項目を取得したいのですが? みなさんコンニチハ。
今週から初めてec-cubeを触り、カスタマイズに挑戦中のy758wです。 サイトを色々探したのですがわからなくて質問です。 ------------------------------------------------- ■<目的>下記のようにカテゴリメニュ(自動生成)を開いた際に項目の頭に「├」を付けて最後の項目だけ「└」を付けたい。 親カテゴリ ├ 子商品1 ├ 子商品2 └ 子商品3(※最後の項目だけ頭に「└」を付けたい) 現在下記の■ソースの状態ですが、具体的にどう修正して良いやらわかりません。 ↓●●に何か入れれば良いのか違うのかさえ。 -------------------------------------------------------------- 例えば、最後の「子メニュタグ」(今回aタグ)にだけ、class="last"を追加。 <a class="<!--{if●●}-->last<!--{/if}-->" 〜省略〜></a>みたいな? -------------------------------------------------------------- または「最後だったら」aタグの前に「└」を追加する。 <!--{if●●}-->└<!--{/if}--><a 〜省略〜></a>みたいな? -------------------------------------------------------------- もしくはもっと簡単な方法ありますか?(cssのlast-child、jQuery等以外で) 申し訳ありませんが教えて頂けないでしょうか? 何だか説明が分かりにくくてスイマセン。 宜しくお願いいたします。 ■現状の部分ソース =============================================================== <script type="text/javascript"> <!-- flag = false; function treeMenu(tName) { tMenu = document.all[tName].style; if(tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none"; } //--> </script> <!--商品カテゴリーここから--> <ul id="categorytree"> <!--{assign var=preLev value=0}--> <!--{assign var=firstdone value=0}--> <!--{assign var=PTreeCnt value=1}--> <!--{section name=cnt loop=$arrTree}--> <!--{assign var=level value=`$arrTree[cnt].level`}--> <!--{if $level == 1 && $preLev > 0}--> </div> </div> <!--{/if}--> <!--{if $level == 1}--> <li><a href = "java script:treeMenu('treeMenu<!--{$PTreeCnt}-->')"><!--{$arrTree[cnt].category_name|escape}--></a></li> <div id ="treeMenu<!--{$PTreeCnt}-->" style="display:none"> <!--{assign var=PTreeCnt value=`$PTreeCnt+1`}--> <div class="level2"> <!--{/if}--> <!--{if $level > 1}--> <a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"><!--{$arrTree[cnt].category_name|escape}--></a> <br /> <!--{/if}--> <!--{assign var=preLev value=`$level`}--> <!--{/section}--> </div> </div> </ul> <!--商品カテゴリーここまで--> =============================================================== |
ecbg |
投稿日時: 2010/10/14 1:08
対応状況: −−−
|
仙人 登録日: 2009/2/25 居住地: 東京 投稿: 387 |
Re: カテゴリメニュの最後の項目を取得したいのですが? うる覚えですが、sectionの中に繰り返しの最終回を取得するlastというものがあったと思うので、それが使えるかもです。
↓こんな感じだったかと・・・nameは宣言したsectionのnameです $smarty.section.name.last |
y758w |
投稿日時: 2010/10/14 6:16
対応状況: −−−
|
新米 登録日: 2010/10/6 居住地: 投稿: 5 |
Re: カテゴリメニュの最後の項目を取得したいのですが? ありがとうございます。
試にループの<a>タグの前に <!--{if $smarty.section.cnt.last}-->└<!--{else}-->├<!--{/if}--> と書いてみたのですが。結果 <●目的の表示>============== 親カテゴリA └ 子商品1 親カテゴリB ├ 子商品1 └ 子商品2 親カテゴリC ├ 子商品1 ├ 子商品2 └ 子商品3 <●現状結果>============== 親カテゴリA ├ 子商品1(ラスト取得×) 親カテゴリB ├ 子商品1 ├ 子商品2(ラスト取得×) 親カテゴリC ├ 子商品1 ├ 子商品2 └ 子商品3(※ラスト取得◎) ============== あたりまえですよね。1、section毎なんですよね。 私の説明不足でスイマセン。 又、親カテゴリAは商品が1個のみで、1個のみもlastとして扱えますかねえ? ヒントでも構わないのでどなたかご教授頂きたく、宜しくお願いいたします。 |
DELIGHT |
投稿日時: 2010/10/14 11:23
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: カテゴリメニュの最後の項目を取得したいのですが? 次のカテゴリが親カテゴリであるか、無い(自分が最後の要素)場合に、「└」を出力するようにしてみるとかどうですかね?
例えば、 <!--商品カテゴリーここから--> <!--{section name=cnt loop=$arrTree}--> <!--{if $arrTree[cnt].parent_category_id != 0 }--> <!--{assign var="cnt2" value=`$smarty.section.cnt.index+1`}--> <!--{ if !$arrTree[$cnt2] || ($arrTree[$cnt2].parent_category_id == 0)}--> └ <!--{else}--> ├ <!--{/if}--> <!--{/if}--> <!--{$arrTree[cnt].category_name}--><br> <!--{/section}--> <!--商品カテゴリーここまで--> こんな感じでしょうか? ※デフォルトのカテゴリブロックを編集しました。 確認Ver ---------- EC-CUBEバージョン 2.4.3 PHPバージョン PHP 5.2.9 DBバージョン PostgreSQL 8.3.7
|
y758w |
投稿日時: 2010/11/8 13:21
対応状況: −−−
|
新米 登録日: 2010/10/6 居住地: 投稿: 5 |
Re: カテゴリメニュの最後の項目を取得したいのですが? 返信したつもりが返信出来ておりませんでした。すいません。
次のカテゴリが親カテゴリであるか、無いかでの振り分けで 無事解決しました。 本当に助かりました。 ecbgさん、DELIGHT さん ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |