Eccube3&Eccube4 category titleの変更(&keyword search)

 

Eccube3,4には標準で商品検索と一度にいくつ表示させるかの表示個数、そして新着順などのソート機能がついております。

多くのショッピングカートではもはや当たり前の機能ですが、よくよくみてみると表示個数の変更や順序の変更をしても、タイトルが一切変わらない、どれもまったく同じタイトルでページが表示されおります。

そこに手を加えてみようというのか今回の記事です。

 

目標

①現在何ページ目を表示しているのか

②一度に何個表示なのか

③何順で表示しているのか

この三つをタイトルに埋め込み、常にオリジナルのタイトルとなるように変更してみます。

 

twigファイル(app/template/default/Product/detail.twig)の変更により各カテゴリーのタイトルを動的に変更することも考えられますが、この際 キーワード検索においても同様にタイトルを変更できれば楽なので、ProductController.phpに手を加えてみます。

src/Eccube/Controller/ProductController.php 変更前

/**
 * ページタイトルの設定
 *
 * @param  null|array $searchData
 *
 * @return str
 */
private function getPageTitle($searchData)
{
    if (isset($searchData['name']) && !empty($searchData['name'])) {
        return trans('front.product.search_result');
    } elseif (isset($searchData['category_id']) && $searchData['category_id']) {
        return $searchData['category_id']->getName();
    } else {
        return trans('front.product.all_products');
    }
}

のページタイトルの設定部分に手を加えてみます。

 

追加変数

$searchname : 入力された検索キーワードを取得

$pageno : 表示中のページ数を取得

$orderby : ソート方法を取得(価格の高い順・価格の低い順・新着順)

 

下記のように変更することで、検索・カテゴリー・全商品で条件を満たすタイトル表示できるようになります。

src/Eccube/Controller/ProductController.php 変更後

/**
     * ページタイトルの設定
     *
     * @param  null|array $searchData
     * @return str
     */
    private function getPageTitle($searchData)
    {
    if(empty($searchData['pageno'])){
       $pageno = 1;
    }else{
       $pageno = $searchData['pageno'];
    }
    $disp_number = $searchData['disp_number'];
    $orderby = $searchData['orderby'];
        if (isset($searchData['name']) && !empty($searchData['name'])) {
            $searchname = $searchData['name'];
            return "$searchname の検索結果 $pageno ページ目 $disp_number 表示 $orderby";
        } elseif (isset($searchData['category_id']) && $searchData['category_id']) {
            $category = $searchData['category_id']->getName();
            return "$category $pageno ページ目 $disp_number 表示 $orderby";
        } else {
            return "全商品 $pageno ページ目 $disp_number 表示 $orderby";
        }
    }

哲学堂書店 浦山幹生

 

コメント