以前、EC-CUBE 2.11.4 で同じ内容をやってみましたが、その応用です。以前の記事はこちら。
[EC-CUBE 2.11.4] 商品一覧ページのページタイトルに親カテゴリも含めたい
https://ec-cube.nakweb.com/blog/1010.html
とりあえずバージョンが違うので、同じカスタマイズが通用するか試してみましたが、問題なく動作しました。
2.12.3でもSC_Helper_DB::sfGetCatCombName はご健在のようです。
さて次にご質問いただいた、「最上層のカテゴリのみ表示しないようにする」をやってみたいと思います。
いろいろと方法はありそうですが、SC_Helper_DB::sfGetCatCombName をローカルメソッドとして再定義する方法でやってみました。
(ちょっと共通メソッドをいじくるのに気が引けたので・・・)
1.data/class/pages/products/LC_Page_Products_List.php の lfGetPageTitle メソッドを以下のように修正
/**
* ページタイトルの設定
*
* @return str
*/
function lfGetPageTitle($mode, $category_id = 0) {
if ($mode == 'search') {
return '検索結果';
} elseif ($category_id == 0) {
return '全商品';
} else {
// 親カテゴリを含むカテゴリ一覧を取得(カスタマイズ)
//$arrCat = SC_Helper_DB_Ex::sfGetCat($category_id);
//return $arrCat['name'];
$arrCat = $this->lfGetCatCombName($category_id);
return $arrCat;
}
}
2.data/class/pages/products/LC_Page_Products_List.php に以下のような新規メソッドを追加
/**
* 親カテゴリを連結した文字列を取得する.
*
* @param integer $category_id カテゴリID
* @return string 親カテゴリを連結した文字列
*/
function lfGetCatCombName($category_id) {
// 商品が属するカテゴリIDを縦に取得
$objQuery =& SC_Query_Ex::getSingletonInstance();
$objDb = new SC_Helper_DB_Ex();
$arrCatID = $objDb->sfGetParents('dtb_category', 'parent_category_id', 'category_id', $category_id);
$ConbName = '';
// 配列の先頭を削除(カスタマイズ)
array_shift($arrCatID);
// カテゴリ名称を取得する
foreach ($arrCatID as $val) {
$sql = 'SELECT category_name FROM dtb_category WHERE category_id = ?';
$arrVal = array($val);
$CatName = $objQuery->getOne($sql,$arrVal);
$ConbName .= $CatName . ' | ';
}
// 最後の | をカットする
$ConbName = substr_replace($ConbName, '', strlen($ConbName) - 2, 2);
return $ConbName;
}
「新規メソッドを追加」なんて書いていますが、
要は lfGetPageTitle メソッドのブロックの下にでも、ブロックごと追加すればOKです。












「最上層のカテゴリのみ表示しないようにする」を質問したものです。早速ご返答いただき感激です。
やってみたところバッチリできました!ありがとうございました。
こちらを参考に、いろいろと勉強させていただきます。今後ともよろしくお願いします。