Naga Blog

EC-CUBE

EC-CUBEの商品カテゴリメニューの全部出しに挑戦。

EC-CUBEの商品カテゴリメニューって、標準状態だと階層化して親子関係にしていると、親カテゴリーのトップに行かないと、カテゴリーメニューに子カテゴリーが表示されないんですヨね。個人的には、コレでも良いかなと思っていたのですけど、顧客の方からカテゴリーは、どのページでも全部出したいと要望が出ましたので、カテゴリーメニュー全部出しに挑戦することにしました。

自分なりに「category.tpl」を弄ってみたんですが、結局うまく行かず、諦めて暫く放置していたんですが、前エントリーで、EC-CUBEの開発コミュニティを徘徊していた時、偶然、カテゴリーメニュー全部出しの方法が紹介されていたスレッド「カテゴリの階層を折りたたまない方法を教えて下さい!」を見つけたので、再度カテゴリーメニュー全部出しに挑戦してみることにしました。

結果は、あっけなく完成。今まで苦労は何だったんでしょう。

手順は簡単なので忘れる事は無いと思いますが、覚え書きも兼ねて、手順を書いときます。

まず、WebブラウザーからEC-CUBEの管理画面にアクセスし、ログインします。上部のメニューから「デザイン管理」に入ります。そこからさらに「ブロック編集」に入り、「カテゴリ」を開きます。そのリストから「<!--{if $arrTree[cnt].display == 1}-->」を探し出し、「<!--{if $arrTree[cnt].display == 1|| $arrTre[cnt].level <=1}-->」に書き換えます。これで、常に子カテゴリーが表示された、まさにカテゴリーメニュー全部出しになりましたヨ。

孫カテゴリーや、ひ孫カテゴリーも設定していて、これも表示したい場合は、「<=1」の部分を表示したい階層分だけ大きくすれば良いです。孫カテゴリーまでだと「<=2」、ひ孫カテゴリーまでだと「<=3」ってな具合ですね。

カテゴリーを登録していても、そのカテゴリーに商品が1つも入っていない場合は、そのカテゴリー自体が表示されません。EC-CUBEのデフォルトの機能ですから、慌てないように。

ついでに変更したリストも書いておきます。なお、下記のコードは、装飾用のタグや、CSSのセレクタ名は省いていますので、ご注意下さい。

<!--商品カテゴリーここから-->
<h2>
<img src="<!--{$TPL_DIR}-->/img/side/title_cat.jpg" alt="商品カテゴリー" />
</h2>
<ul>
<!--{assign var=preLev value=1}-->
<!--{assign var=firstdone value=0}-->
<!--{section name=cnt loop=$arrTree}-->
<!--{* 表示フラグがTRUEなら表示 *}-->
<!--{if $arrTree[cnt].display == 1|| $arrTree[cnt].level <=1}-->
<!--{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><a href="<!--{$smarty.const.URL_DIR}-->products/list.htm?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a>
<!--{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>
<!--商品カテゴリーここまで-->

後、カテゴリーメニュー全部だしをすると、登録しているカテゴリー数が多い場合、ページが異様に長くなってしまうんですヨね。なので、コレをする時にカテゴリーの登録数は控えめに。

About this entry

このページは、naganagaが2009年3月10日 19:33に書いたブログ記事です。

ひとつ前のブログ記事は「EC-CUBEで、新着商品の紹介をトップページに表示する方法。」です。

次のブログ記事は「ちょっとだけ先祖返り? 声で曲名をお知らせ、新「iPod shuffle」が登場。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。