【EC-CUBE】パンくずリストの実装
VER.2.3RC1の場合。
1)/data/class_extends/helper_extends/SC_Helper_DB_Ex.php の編集。
「class SC_Helper_DB_Ex extends SC_Helper_DB」の中にコードを仕込む。
37行目(”{“と”}”の間)に以下を追加。
function sfGetTopicPath($category_id){
// 商品が属するカテゴリIDを縦に取得
$objQuery = new SC_Query();
$arrCatID = $this->sfGetParents($objQuery, “dtb_category”, “parent_category_id”, “category_id”, $category_id);
$TopicPath = ” > “;// カテゴリー名称を取得する
foreach($arrCatID as $key => $val){
$sql = “SELECT category_name FROM dtb_category WHERE category_id = ?”;
$arrVal = array($val);
$CatName = $objQuery->getOne($sql,$arrVal);
if( $val != $category_id){
$TopicPath .= ‘‘ . $CatName . ‘ > ‘;
}else{
$TopicPath .= $CatName;
}
}return $TopicPath;
}
function sfGetTopicPath2($category_id){
// 商品が属するカテゴリIDを縦に取得
$objQuery = new SC_Query();
$arrCatID = $this->sfGetParents($objQuery, “dtb_category”, “parent_category_id”, “category_id”, $category_id);
$TopicPath = ” > “;// カテゴリー名称を取得する
foreach($arrCatID as $key => $val){
$sql = “SELECT category_name FROM dtb_category WHERE category_id = ?”;
$arrVal = array($val);
$CatName = $objQuery->getOne($sql,$arrVal);
$TopicPath .= ‘‘ . $CatName . ‘ > ‘;
}
return $TopicPath;
}
2)/data/class/pages/products/LC_Page_Products_List.php の編集。 (L112に2行追加。)
// タイトル編集
$tpl_subtitle = “”;
if ($_GET[‘mode’] == ‘search’) {
$tpl_subtitle = “検索結果”;
} elseif (empty($arrCategory_id[0])) {
$tpl_subtitle = “全商品”;
} else {
$arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]);
$tpl_subtitle = $arrFirstCat[‘name’];
$TopicPath = $objDb->sfGetTopicPath($arrCategory_id[0]); ←追加
$this->tpl_topicpath = $TopicPath; ←追加
}
3)/data/class/pages/products/LC_Page_Products_Detail.php の編集。 (L229に2行追加。)
// サブタイトルを取得
$arrCategory_id = $objDb->sfGetCategoryId($arrRet[0][‘product_id’], $status);
$arrFirstCat = $objDb->sfGetFirstCat($arrCategory_id[0]);
$this->tpl_subtitle = $arrFirstCat[‘name’];$arrTopicPath = $objDb->sfGetTopicPath2($arrCategory_id[0]); ←追加
$this->tpl_topicpath = $arrTopicPath; ←追加// 関連カテゴリを取得
$this->arrRelativeCat = $objDb->sfGetMultiCatTree($tmp_id);
4)パンくずリスト用新規ブロックの追加。
デザイン管理→ブロック編集 で新規ブロックをつくり、下記コードを適当な名前で保存。(ブロック名:「パンくずリスト」、ファイル名:「topicpath」で保存。でも、分かれば、なんでもいい。)
<!–{if $tpl_topicpath != “”}–>
<a href=”<!–{$smarty.const.SITE_URL}–>index.php”>TopPage</a>
<!–{$tpl_topicpath}–>
<!–{$arrProduct.name|escape}–>
<!–{/if}–>
デザイン管理→レイアウト編集 にパンくずリストのブロックが出来ているので、パンくずリストを実装したいページ(一覧ページや詳細ページ)の該当箇所にパンくずリストのブロックを設定すればOK。
参考:http://www.gnnk.net/20080113050103/
注意! 「カテゴリの説明やビジュアルを追加する」とアタる!
下記のやり方で、LC_Page_Products_List_Ex.phpを使用する場合、こちらのパンくず実装を先にやるか、LC_Page_Products_List_Ex.phpで実装しないと、マージされないので注意!すること。
http://www.eccube-school.jp/products/detail43.html
http://www.bton.net46.net/?p=313 (←こっちのほうは、_EXを使ってないので、同じファイルを上書きすることになるから問題ない。でも、本来は、_EXを使ったほうがいいので、_EXのファイルのほうで、パンくずを実装するってほうがいいのかも。メモメモ。)
2 Comments