バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > カテゴリー展開の階層指定

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2007/8/20 12:16
対応状況: −−−
カテゴリー展開の階層指定
現在カテゴリーが三階層有り、その中の二階層目までを常時展開表示させたいと思っております。

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=507&forum=3&post_id=3178#forumpost3178

こちらの記事を参考にして、カテゴリーを展開してみましたが、カテゴリーが全て展開されてしまいます。

<!--{if $arrTree[cnt].display == 1}-->

この部分の数字を変えてみているのですが、三階層すべて表示か、まったく何もない状態になってしまいます。
常時展開を二階層目までのみにする方法はないのでしょうか?
よろしくお願い致します。
ゲスト
投稿日時: 2007/8/20 15:30
対応状況: 解決済
Re: カテゴリー展開の階層指定
なんとか自己解決しました。

if文を使って、三階層目のカテゴリID以外の場合のみループ内の処理をすることで二階層目までのみの表示にできました。

この方法ですと、三階層目のIDが多くあった場合ifの条件文がすごく長くなってしまいます。
もっとスマートな方法があるのかもしれませんが、なんとかなりました。
ryo
投稿日時: 2007/8/20 16:35
対応状況: −−−
一人前
登録日: 2007/7/26
居住地: 関西
投稿: 86
Re: カテゴリー展開の階層指定
カテゴリブロックに、
引用:

<!--{if $level == 1}-->

などというif文があると思いますが、このレベルが階層を表しているので、これを
引用:

<!--{if $level <= 2}-->

とかすれば、カテゴリID毎にif文をつけなくてもいいと思いますヨ。

ちなみに、未確認ですが・・・w


----------------
/* Ryo from KANSAI */
まいどっ!

ゲスト
投稿日時: 2007/8/20 16:51
対応状況: −−−
Re: カテゴリー展開の階層指定
ryo様。ありがとうございます。
やっぱりlevelが階層だったんですね。
怪しいなァと思って、conf.phpやらなにやら見てみたのですが、levelが何かはっきりしなかったので、いじるのは控えてました。
後ほどソースを見直してみます。
ryo
投稿日時: 2007/8/20 16:51
対応状況: −−−
一人前
登録日: 2007/7/26
居住地: 関西
投稿: 86
Re: カテゴリー展開の階層指定
検証しました。

引用:
<!--{if $arrTree[cnt].display == 1}-->


の部分を

引用:
<!--{if $level <= 2}-->


に書き換えることで第2階層までデフォルト表示できています。


----------------
/* Ryo from KANSAI */
まいどっ!

ryo
投稿日時: 2007/8/20 17:27
対応状況: −−−
一人前
登録日: 2007/7/26
居住地: 関西
投稿: 86
Re: カテゴリー展開の階層指定
すみません。デフォルト表示は問題なかったのですが、

カテゴリをクリックしたときに、上の例ではそれ以下のカテゴリが展開されませんw

ちょっと手を加えないといけないですかねぇ


----------------
/* Ryo from KANSAI */
まいどっ!

ryo
投稿日時: 2007/8/20 18:23
対応状況: −−−
一人前
登録日: 2007/7/26
居住地: 関西
投稿: 86
Re: カテゴリー展開の階層指定
何度も失礼します。
テキトーな事を書いてしまったので、少し僕が現在作っているサイトの例を紹介します。

ちなみに、ココに書いてることをそのまま記述しても反映されない場合があります。色々といじってる+ここに記述する用に成形しているので。

この部分を
引用:

<!--{section name=cnt loop=$arrTree}-->
<!--{assign var=level value="`$arrTree[cnt].level`}-->

<!--{* 区切り線表示 *}-->
<!--{if $level == 1 && !$smarty.section.cnt.first}-->
<tr><td colspan="2" height="15">
<img src="<!--{$smarty.const.URL_DIR}-->img/side/line_146.gif" width="146" height="1" alt="">
</td></tr>
<!--{/if}-->
<!--{* カテゴリ名表示 *}-->
<!--{assign var=disp_name value="`$arrTree[cnt].category_name`"}-->
<!--{if $arrTree[cnt].display == 1}-->
<tr>
<td colspan="2" class="fs12">
<!--{if $tpl_category_id == $arrTree[cnt].category_id || $root_parent_id == $arrTree[cnt].category_id}-->
<!--{section name=n loop=`$level-1`}--> <!--{/section}-->
<!--{if $level == 1}-->
<img src="<!--{$smarty.const.URL_DIR}-->img/common/arrow_red.gif" width="11" height="14" alt="">
<!--{/if}-->
<!--{else}-->
<!--{section name=n loop=`$level-1`}--> <!--{/section}-->
<!--{if $level == 1}-->
<img src="<!--{$smarty.const.URL_DIR}-->img/common/arrow_blue.gif" width="11" height="14" alt="">
<!--{/if}-->
<!--{/if}-->
<!--{if $tpl_category_id == $arrTree[cnt].category_id }-->
<a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->">
<span class="redst">
<!--{$disp_name|sfCutString:20|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)
</span>
</a>
<!--{else}-->
<a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->">
<!--{$disp_name|sfCutString:20|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)
</a>
<!--{/if}-->
</td>
</tr>
<!--{/if}-->
<!--{/section}-->


下のように変更する。
(HTMLは、上記はテーブルですが、僕はリストを使っているので、その辺はテキトーにあわせて変えてください。)
引用:

<dl>
<!--{section name=cnt loop=$arrTree}-->
<!--{* $tpl_category_id … 現在選択されているカテゴリID *}-->
<!--{* $root_parent_id … 現在選択されているカテゴリのルートカテゴリID *}-->
<!--{* $cid … 現在表示中のカテゴリID *}-->

<!--{assign var=level value="`$arrTree[cnt].level`"}-->
<!--{assign var=disp_name value="`$arrTree[cnt].category_name`"}-->
<!--{assign var=cid value="`$arrTree[cnt].category_id`"}-->
<!--{assign var=clink value="`$smarty.const.SITE_URL`products/list.php?category_id=`$cid`"}-->

<!--{* カテゴリ階層ごとに表示方法を変更 *}-->

<!--{if $level == 1}-->

<dt><!--{$disp_name|escape}--></dt>

<!--{elseif $level == 2}-->
<!--{if $tpl_category_id == $cid || $root_parent_id == $cid}-->

<dd class="second"><strong><!--{$disp_name|escape}--></strong></dd>
<!--{else}-->
<dd class="second">
<a href="<!--{$clink}-->"><!--{$disp_name|escape}--></a>
</dd>
<!--{/if}-->

<!--{elseif $level == 3}-->
<!--{if $tpl_category_id == $cid || $root_parent_id == $cid}-->

<dd class="third"><strong><!--{$disp_name|escape}--></strong></dd>
<!--{else}-->
<dd class="third">
<a href="<!--{$clink}-->"><!--{$disp_name|escape}--></a>
</dd>
<!--{/if}-->

<!--{else}-->
<!--{if $arrTree[cnt].display == 1}-->
<!--{if $tpl_category_id == $cid || $root_parent_id == $cid}-->

<dd class="fourth">
<strong><!--{$disp_name|escape}--></strong>
</dd>
<!--{else}-->
<dd class="fourth">
<a href="<!--{$clink}-->"><!--{$disp_name|escape}--></a>
</dd>
<!--{/if}-->
<!--{/if}-->
<!--{/if}-->
<!--{/section}-->

</dl>

青字・・・PHP(Smarty)スクリプト
緑字・・・コメント
黒字・・・HTML


こんな感じで第3階層まではデフォルトで表示させてます。
ちょっと長くてちょっとややこしいですが・・・


----------------
/* Ryo from KANSAI */
まいどっ!

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,899名です
総投稿数は110,002件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
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.