http://www.materializing.net/archives/2008/07/15012425.php
EC-CUBEには、カテゴリ一覧を表示させるブロックが備わってます。
ところでこのカテゴリ・ブロック、別の新しいブロックを作って、そこにソースを貼り付けるだけでは機能しません。およよ。。。
なので、ECサイトでは良く、ページ下部にもカテゴリ一覧を表示させちゃったりする場合もあるかと思ふのですが、それを行う事が出来ません。
そんなのはちょっと不便だという事で、同じカテゴリ一覧をブロックとして別個表示させる事が出来るようにしてみる事にしました。
またついでに、トップページでは表示されないサブカテゴリも、全て表示されるように変更。
ほとんどもとあるファイルをコピーして流用してます。
ファイルのコピーと書き換え
\data\class\pages\frontparts\bloc\LC_Page_FrontParts_Bloc_Category.php
のファイルをコピーして、
\data\class\pages\frontparts\bloc\LC_Page_FrontParts_Bloc_Category2.php
の名前で保存。(「2」をつけただけ)
ファイル内容の34行目を下記のように変更。(「2」をつけただけ)
class LC_Page_FrontParts_Bloc_Category2 extends LC_Page_FrontParts_Bloc {
46行目を下記のように変更。(「2」をつけただけ)
$bloc_file = ’category2.tpl’;
この指定は、新しく作る予定のブロックファイル名を指定する箇所。
ファイルのコピーと書き換え
\data\class_extends\page_extends\frontparts\bloc\LC_Page_FrontParts_Bloc_Category_Ex.php
のファイルをコピーして、
\data\class_extends\page_extends\frontparts\bloc\LC_Page_FrontParts_Bloc_Category2_Ex.php
の名前で保存。(「2」をつけただけ)
ファイル内容の25行目を下記のように変更。(「2」をつけただけ)
require_once(CLASS_PATH . ”pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category2.php”);
36行目を下記のように変更。(「2」をつけただけ)
class LC_Page_FrontParts_Bloc_Category2_Ex extends LC_Page_FrontParts_Bloc_Category2 {
ファイルのコピーと書き換え
\html\frontparts\bloc\category.php のファイルをコピーして、
\html\frontparts\bloc\category2.php の名前で保存。(「2」をつけただけ)
25行目を下記のように変更。(「2」をつけただけ)
require_once(CLASS_EX_PATH . ”page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Category2_Ex.php”);
30行目を下記のように変更。(「2」をつけただけ)
$objPage = new LC_Page_FrontParts_BLoc_Category2_Ex();
ブロックの新規作成
管理画面から新規ブロックを作成して、ファイル名を「category2(.tpl)」とします。
内容は下記。
<div id="categoryarea"> <h2>カテゴリー一覧</h2> <div class="module-content"> <ul id="categorytree"> <!--{assign var=preLev value=1}--> <!--{assign var=firstdone value=0}--> <!--{section name=cnt loop=$arrTree}--><!--{* 表示フラグがTRUEなら表示 *}--> <!--{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}-->"> <a href="<!--{$smarty.const.URL_DIR}-->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|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a> <!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}--> <!--{assign var=preLev value=`$level`}--> <!--{* セクションの最後に閉じタグを追加 *}--> <!--{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> </div> <!-- categoryarea end --></div>
データベースの内容書き換え
phpmyadminでデータベースを覗いて、テーブル:dtd_bloc内のbloc/category2.tplのphp_pathに、
「frontparts/bloc/category2.php」と入力。