有限会社スプレッドワークス/Spread Works Inc.
ECサイト構築Webサイト構築Webシステム開発マーケティング支援制作実績課題解決
SERVICESサービス紹介
ECサイト構築・運用
CASES / WORKS課題解決 / 制作実績
NEWS / COLUMNお知らせ / ナレッジ・コラム
技術アーカイブス

EC-CUBE4のトップページに特定のカテゴリ一に属する商品を表示する方法

トップページに特定のカテゴリ一に属する商品を表示するカスタマイズの方法を説明します。

トップページに「新入荷のカテゴリ」に属する商品を表示

手順

  1. カテゴリIDを確認する
  2. Blockファイルを編集し、moreボタンのリンクに変更とテキストの修正
  3. TwigExtentionを修正し、「新入荷」商品情報を取得

1. カテゴリIDを確認する

管理画面にログインし、商品管理->カテゴリ管理を選択してください。 新入荷のカテゴリIDは「2」であることを確認します。 ※今回は、新入荷のカテゴリIDの「2」を利用しますが、「2」以外が設定されている場合や他のカテゴリの商品を表示させる場合は、該当のカテゴリIDをご利用ください。

2.moreボタンのリンクに変更とテキストの修正

app/template/default/Block/new_item.twigファイルを修正。

<div class="ec-newItemRole__listItemHeading ec-secHeading--tandem">
<span class="ec-secHeading__en">{{ 'front.block.new_item.title__en'|trans }}</span>
<span class="ec-secHeading__line"></span>
<span class="ec-secHeading__ja">{{ 'front.block.new_item.title__ja'|trans }}</span>
<a class="ec-inlineBtn--top" href="{{ url('product_list') }}">{{ 'front.block.new_item.more'|trans }}</a>
</div>

この部分を以下のように修正。

<div class="ec-newItemRole__listItemHeading ec-secHeading--tandem">
<span class="ec-secHeading__en">NEW STOCK</span>
<span class="ec-secHeading__line"></span>
<span class="ec-secHeading__ja">新入荷商品</span>
<a class="ec-inlineBtn--top" href="{{ url('product_list') }}?category_id=2">{{ 'front.block.new_item.more'|trans }}</a>
</div>

3.TwigExtentionを修正し、「新入荷」商品情報を取得

app/Customize/Twig/Extension/TwigExtension.phpファイルに以下のメソッドを定義します。

    public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('CustomizeNewProduct', array($this, 'getCustomizeNewProduct')),
        );
    }

    // 省略...

    /**
     * 新着商品3件返す
     * @return Products|null
     */
    public function getCustomizeNewProduct()
    {
        try {
            // 検索条件の新着順を定義
            $searchData = array();
            $qb = $this->entityManager->createQueryBuilder();
            $query = $qb->select("plob")
                ->from("Eccube\\Entity\\Master\\ProductListOrderBy", "plob")
                ->where('plob.id = :id')
                ->setParameter('id', $this->eccubeConfig['eccube_product_order_newer'])
                ->getQuery();
            $searchData['orderby'] = $query->getOneOrNullResult();

            // 新入荷商品を表示
            $new_stock_id = 2;
            $qb = $this->entityManager->createQueryBuilder();
            $query = $qb->select("ctg")
                ->from("Eccube\\Entity\\Category", "ctg")
                ->where('ctg.id = :id')
                ->setParameter('id', $new_stock_id)
                ->getQuery();
            $searchData['category_id'] = $query->getOneOrNullResult();

            // 商品情報3件取得
            $qb = $this->productRepository->getQueryBuilderBySearchData($searchData);
            $query = $qb->setMaxResults(3)->getQuery();
            $products = $query->getResult();
            return $products;
        } catch (\Exception $e) {
            return null;
        }
        return null;
    }

トップページ以外にも、商品一覧、商品詳細、購入完了画面などの画面で表示することで、商品の訴求ができるようになります。 ぜひ、お試しください。

このコラムに関連するサービス・製品

ECサイト構築サービス with EC-CUBE

EC-CUBEを活用したECサイト構築サービスでは、オリジナルデザインや高機能プラグインを活用し、業種や規模に応じた柔軟なカスタマイズを提供します。小規模から大規模まで対応可能で、安定稼働と高水準のセキュリティを実現。

カテゴリー
  • すべて

  • 雑記

  • 技術アーカイブス

Powered by SPREAD Commerce on EC-CUBE.copyright © Spread Works Inc. all rights reserved.