Labo

[EC-CUBE 2.12.3] 商品一覧ページのページタイトルに親カテゴリも含めたい その2

2013年03月10日 / 投稿者名:fukap


以前、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です。

[EC-CUBE 2.12.3] 商品一覧ページのページタイトルに親カテゴリも含めたい その2 への1件のコメント

  1. サクラモチ より:

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。