商品カテゴリー一覧のサムネイル画像を自動取得する方法

通販サイトを制作する際、商品カテゴリー一覧は必須ですよね。
しかしながら、通販サイトはカテゴリーの数が多くなりやすく、
カテゴリー名を手書きで書いたり、写真をひとつひとつ用意したりなかなか大変です。

そこで、今回はEC-CUBE4を使用して、以下の方法を解説します。これにより、効率的かつ柔軟にカテゴリー一覧を管理することができます。

【ポイント1】カテゴリーIDを指定して掲載したいカテゴリーを表示する

重要なカテゴリーだけを表示したい場合があるかとおもいますので、今回は親カテゴリーを全件取得せずに指定したIDのみを表示する仕様です。これにより、重要なカテゴリーだけをサイトに掲載したり、子カテを一部だけサイトに掲載したりできます。

【ポイント2】最新商品の商品写真を自動取得してカテゴリーのサムネイルとして表示する

商品の画像を手動で用意するのは手間がかかる上、商品が頻繁に変わる場合には、その都度サムネイル画像を更新するのも大変です。そこで、最新商品の画像を自動的に取得し、それをカテゴリーのサムネイルとして使用することで、メンテナンスの手間を大幅に軽減できます。

実装方法

それでは実装方法についてです。

①表示したいカテゴリーのカテゴリーIDを配列で指定します。

表示したいカテゴリーを絞り込むために、対象のカテゴリーIDを配列で指定します。これにより、特定のカテゴリーだけを効率的に表示できます。

{% set arrData = ['1','2','3',...] %}


②for文でカテゴリー文ループさせます。

配列に格納したカテゴリーIDを使用して、for文で各カテゴリーをループ処理します。これにより、指定したすべてのカテゴリーを順番に表示できます。

{% for key, catId in arrData %}
{% endfor %}


③最新商品の画像を取り出します。

各カテゴリーごとに、最新商品の画像を取得します。この画像をカテゴリーのサムネイルとして使用することで、常に最新の情報を表示することができます。

{# 商品画像格納 #}
{% set Category = repository("Eccube\Entity\Category").find(catId) %}
{% 
set products = repository("Eccube\Entity\Product")
.getQueryBuilderBySearchData({'category_id':Category})
.setMaxResults(1)
.getQuery()
.getResult()
%}
{% if products %}
    {% for p in products %}
        <div class="card-img"><img src="{{ asset(p.main_list_image|no_image_product, 'save_image') }}"/></div>
    {% endfor %}
{% else %}
    <div class="card-img">NOIMG</div>
{% endif %}


④カテゴリー名を取得して完成!

上記の手順を実装することで、特定のカテゴリーのみを効率的に表示し、さらに最新の画像を自動で使用することが可能になります。これにより、通販サイトの管理がより簡単かつ効率的になります。

{%  set Category = repository('Eccube\Entity\Category').find(catId) %}
{{ Category.name }}

この方法を活用して、効率的な通販サイトの運営を実現してください!

トラックバックURL