<div class="ec-role">
<div class="ec-newItemRole">
<div class="custom-heading">
<div class="custom-heading__row">
<img src="/html/user_data/ContentImg/siopanda.png" alt="Logo" class="custom-heading__logo">
<div class="custom-heading__text">
<span class="custom-heading__ja">{{ '商品一覧'|trans }}</span>
<span class="custom-heading__en">{{ 'Line up'|trans }}</span>
</div>
</div>
</div>
<div class="ec-newItemRole__list">
{# repositoryを使用して商品データを取得 #}
{# まず全ての公開商品を取得してからTwigレベルで数値ソート #}
{% set AllProducts = repository('Eccube\\Entity\\Product').findBy({'Status': 1}) %}
{# 商品コードが数値の商品のみを抽出し、数値としてソート #}
{% set ProductsWithNumericCode = [] %}
{% for Product in AllProducts %}
{% if Product.ProductClasses is not empty %}
{% set ProductClass = Product.ProductClasses|first %}
{% if ProductClass.code is not empty and ProductClass.code matches '/^\\d+$/' %}
{% set ProductsWithNumericCode = ProductsWithNumericCode|merge([{
'product': Product,
'numericCode': ProductClass.code|number_format(0, '', '') + 0
}]) %}
{% endif %}
{% endif %}
{% endfor %}
{# 数値コードで降順ソートして上位10件を取得 #}
{% set SortedProducts = ProductsWithNumericCode|sort((a, b) => b.numericCode <=> a.numericCode)|slice(0, 10) %}
{% set Products = SortedProducts|map(item => item.product) %}
{# 商品をfor文で一覧表示 #}
{% for Product in Products %}
<div class="ec-newItemRole__listItem">
<a href="{{ url('product_detail', {'id': Product.id}) }}">
{# 商品画像の表示 #}
{% if Product.ProductImage is not empty %}
<img src="{{ asset(Product.ProductImage[0].fileName, 'save_image') }}" alt="{{ Product.name }}">
{% else %}
<img src="{{ asset('assets/img/common/no_image.jpg') }}" alt="{{ Product.name }}">
{% endif %}
{# 商品名 #}
<p class="ec-newItemRole__listItemTitle">{{ Product.name }}</p>
{# 商品コードの表示(デバッグ用)
{% if Product.ProductClasses is not empty %}
{% set ProductClass = Product.ProductClasses|first %}
<p class="ec-newItemRole__listItemCode">商品コード: {{ ProductClass.code ?? 'なし' }}</p>
{% endif %}
#}
{# 商品価格(消費税8%切り捨て表示) #}
<p class="ec-newItemRole__listItemPrice">
{% if Product.ProductClasses is not empty %}
{% set ProductClass = Product.ProductClasses|first %}
{% set basePrice = ProductClass.price02 %}
{# 税込価格を計算して1円未満切り捨て #}
{% set rawTaxIncludedPrice = basePrice * 1.08 %}
{% set displayPrice = rawTaxIncludedPrice|split('.')|first %}
¥{{ displayPrice|number_format(0, '.', ',') }} 税込
{% else %}
{% set basePrice = Product.price02 %}
{# 税込価格を計算して1円未満切り捨て #}
{% set rawTaxIncludedPrice = basePrice * 1.08 %}
{% set displayPrice = rawTaxIncludedPrice|split('.')|first %}
¥{{ displayPrice|number_format(0, '.', ',') }} 税込
{% endif %}
</p>
</a>
</div>
{% endfor %}
</div>
</div>
</div>