バージョン選択

フォーラム

メニュー

オンライン状況

49 人のユーザが現在オンラインです。 (41 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 48
mishia もっと...

サイト内検索

質問 > その他 > カテゴリで特定の階層からのプルダウン

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kirin
投稿日時: 2014/8/26 9:30
対応状況: −−−
半人前
登録日: 2012/4/24
居住地:
投稿: 20
カテゴリで特定の階層からのプルダウン
カテゴリが非常に多いので下記サイトを参考にカテゴリブロックのプルダウン化を試みました。

http://daihachi.sub.jp/archives/1286

プルダウン化はうまくいったのですが、1階層目からのプルダウンスタートになってしまっていて、当サイトでは少しお客様に伝わりづらくなってしまいます(現在3階層目まで常に表示)。

これを常に3階層目まで表示して4階層目以降だけプルダウン化を行いたいと思い調べてみたのですが、なかなか該当するサイトなどがなくこちらに質問させていただきました。

また皆様のお力を借りたいと思い書き込みをさせてもらいました、どうかご教授をお願いします。

EC-CUBE 2.12.6
Apache 2.4.7
php 5.1.6
MySQL 5.0.95
miiitaka
投稿日時: 2014/8/27 18:45
対応状況: −−−
一人前
登録日: 2011/10/17
居住地: 宮崎県宮崎市
投稿: 94
Re: カテゴリで特定の階層からのプルダウン
@kirin さん

こちらはどういった動作をさせる予定ですか?
(アニメーションなど必要?)
現在3階層目まで表示されていて、4階層目以降をプルダウンさせるのであれば、ライブラリを使用しなくてもEC-CUBEデフォルトで読み込んでいるjQueryで実装できそうですが。

slideToggle()を利用して表示してみては如何でしょう?


----------------
無料で学べるEC-CUBEノウハウ - EC-CUBEの学校
アラタナ

kirin
投稿日時: 2014/8/28 10:34
対応状況: −−−
半人前
登録日: 2012/4/24
居住地:
投稿: 20
Re: カテゴリで特定の階層からのプルダウン
ご回答ありがとうございます。

希望動作なんですが。
現在、4階層目まで表示すると非常に長くなるため3階層目表示で止めています。
しかし、カテゴリ3階層目をクリックするとページの先頭へリンクするためお客様には4階層目展開されていることに気づいていただけない状態です。
これを打開するためプルダウン化にチャレンジすることにしました。

アニメーションの必要性なんですが、特にこだわりはありません。知識の乏しい私でもわかりやすく解説しているサイトがありましたので挑戦してみました。

「slideToggle()を利用して表示してみては如何でしょう?」
との事なんですが、私なりに実装方法を調べてみましたが知識が乏しいためわかりませんでした。
具体的にどのような記述をすればいいのでしょうか?ご教授をお願いします。

恐縮ではございますが、よろしくお願いします。
miiitaka
投稿日時: 2014/8/28 20:13
対応状況: −−−
一人前
登録日: 2011/10/17
居住地: 宮崎県宮崎市
投稿: 94
Re: カテゴリで特定の階層からのプルダウン
@kirin さん

カテゴリ4階層組なので、カテゴリブロックのHTML上は以下の構成になるかと思います。


<ul>
<li class="level1">
<p>カテゴリ1階層目</p>
<ul>
<li class="level2">
<p>カテゴリ2階層目</p>
<ul>
<li class="level3">
<p>カテゴリ3階層目</p>
<ul>
<li class="level4">
<p>カテゴリ4階層目</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

それぞれにclass="levelxx" とレベルごとにClass名が表示されています。
カテゴリ3階層目をマウスオーバーした時に、カテゴリ4階層目の表示を行うように
class="level3"をトリガーにその子要素をslideToggle()で展開させれば可能です。


----------------
無料で学べるEC-CUBEノウハウ - EC-CUBEの学校
アラタナ

kirin
投稿日時: 2014/8/29 11:04
対応状況: −−−
半人前
登録日: 2012/4/24
居住地:
投稿: 20
Re: カテゴリで特定の階層からのプルダウン
ご回答、本当に感謝しています。

私では少しわかりづらいのでもう少し質問させていただきます。
現在、以下のように2階層目まで画像表示で運用させてもらってます。

<script type="text/javascript">//<![CDATA[
$(function(){
$('#category_area li.level4:last').css('border-bottom', 'none');
});
//]]></script>
<div class="block_outer">
<div id="category_area">
<div class="block_body">
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_category.gif" alt="商品カテゴリ" /></h2>
<!--{strip}-->
<ul id="categorytree">
<!--{assign var=preLev value=1}-->
<!--{assign var=firstdone value=0}-->
<!--{section name=cnt loop=$arrTree}-->
<!--{* 表示フラグがTRUEなら表示 *}-->
<!--{if $arrTree[cnt].display == 1|| $arrTree[cnt].level <=3}-->
<!--{assign var=level value=`$arrTree[cnt].level`}-->
<!--{assign var=levdiff value=`$level-$preLev`}-->
<!--{if $levdiff > 0}-->
<ul>
<!--{elseif $levdiff == 0 && $firstdone == 1}-->
</li>
<!--{elseif $levdiff < 0}-->
<!--{section name=d loop=`$levdiff*-1`}-->
</li>
</ul>
<!--{/section}-->
</li>
<!--{/if}-->
<li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> onmark<!--{/if}-->">
<p>
<!--{if $level < 3}-->
<a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><img src="<!--{$TPL_URLPATH}-->img/category/<!--{$arrTree[cnt].category_id}-->.gif" alt="<!--{$arrTree[cnt].category_name|h}-->" /></a>
<!--{else}-->
<a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id,$tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|h}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>
<!--{/if}-->
</p>
<!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}-->
<!--{assign var=preLev value=`$level`}-->
<!--{/if}-->
<!--{* セクションの最後に閉じタグを追加 *}-->
<!--{if $smarty.section.cnt.last}-->
<!--{if $preLev-1 > 0}-->
<!--{section name=d loop=`$preLev-1`}-->
</li>
</ul>
<!--{/section}-->
</li>
<!--{else}-->
</li>
<!--{/if}-->
<!--{/if}-->
<!--{/section}-->
</ul>
<!--{/strip}-->
</div>
</div>
</div>


これを私なりに解釈し、以下のように書き換えてみました。

<script type="text/javascript">//<![CDATA[
$(function(){
$('#category_area li.level4:last').css('border-bottom', 'none');
});
//]]></script>

<div class="block_outer">
<div id="category_area">
<div class="block_body">
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_category.gif" alt="商品カテゴリ" /></h2>
<!--{strip}-->
<ul id="categorytree">
<!--{assign var=preLev value=1}-->
<!--{assign var=firstdone value=0}-->
<!--{section name=cnt loop=$arrTree}-->
<!--{* 表示フラグがTRUEなら表示 *}-->
<!--{if $arrTree[cnt].display == 1|| $arrTree[cnt].level <=3}-->
<!--{assign var=level value=`$arrTree[cnt].level`}-->
<!--{assign var=levdiff value=`$level-$preLev`}-->
<!--{if $levdiff > 0}-->
<ul>
<!--{elseif $levdiff == 0 && $firstdone == 1}-->
</li>
<!--{elseif $levdiff < 0}-->
<!--{section name=d loop=`$levdiff*-1`}-->
</li>
</ul>
<!--{/section}-->
</li>
<!--{/if}-->
<li class="level1">
<p><a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><img src="<!--{$TPL_URLPATH}-->img/category/<!--{$arrTree[cnt].category_id}-->.gif" alt="<!--{$arrTree[cnt].category_name|h}-->" /></a></p></li>
<li class="level2">
<p><a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><img src="<!--{$TPL_URLPATH}-->img/category/<!--{$arrTree[cnt].category_id}-->.gif" alt="<!--{$arrTree[cnt].category_name|h}-->" /></a></p></li>
<li class="level3">
<p><a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id,$tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|h}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a></p></li>
<li class="level4">
<p><a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id,$tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|h}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a></p></li>
<!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}-->
<!--{assign var=preLev value=`$level`}-->
<!--{/if}-->
<!--{* セクションの最後に閉じタグを追加 *}-->
<!--{if $smarty.section.cnt.last}-->
<!--{if $preLev-1 > 0}-->
<!--{section name=d loop=`$preLev-1`}-->
</li>
</ul>
<!--{/section}-->
</li>
<!--{else}-->
</li>
<!--{/if}-->
<!--{/if}-->
<!--{/section}-->
</ul>
<!--{/strip}-->
</div>
</div>
</div>


「なんだこれは!?」という記述なら是非ご指摘ください。

引用:

miiitakaさんは書きました:
@kirin さん

カテゴリ3階層目をマウスオーバーした時に、カテゴリ4階層目の表示を行うように
class="level3"をトリガーにその子要素をslideToggle()で展開させれば可能です。


との事なんですが、どこにどのような記述をしていいのかわかりませんでした、ヒントを生かせず申し訳ありません。

また、私なりの解釈での記述に誤りがあるとご指摘お願いします。

恐縮ではございますが、よろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,693名です
総投稿数は109,943件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1283
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.