技術アーカイブス
EC-CUBE4のトップページに特定のカテゴリ一に属する商品を表示する方法
トップページに特定のカテゴリ一に属する商品を表示するカスタマイズの方法を説明します。
トップページに「新入荷のカテゴリ」に属する商品を表示
手順
- カテゴリIDを確認する
- Blockファイルを編集し、moreボタンのリンクに変更とテキストの修正
- 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;
}
トップページ以外にも、商品一覧、商品詳細、購入完了画面などの画面で表示することで、商品の訴求ができるようになります。 ぜひ、お試しください。