app/template/default/Block/Lineup.twig line 1

Open in your IDE?
  1. <div class="ec-role">
  2.     <div class="ec-newItemRole">
  3.         <div class="custom-heading">
  4.             <div class="custom-heading__row">
  5.                 <img src="/html/user_data/ContentImg/siopanda.png" alt="Logo" class="custom-heading__logo">
  6.                 <div class="custom-heading__text">
  7.                     <span class="custom-heading__ja">{{ '商品一覧'|trans }}</span>
  8.                     <span class="custom-heading__en">{{ 'Line up'|trans }}</span>
  9.                 </div>
  10.             </div>
  11.         </div>
  12.         <div class="ec-newItemRole__list">
  13.             {# repositoryを使用して商品データを取得 #}
  14.             {# まず全ての公開商品を取得してからTwigレベルで数値ソート #}
  15.             {% set AllProducts = repository('Eccube\\Entity\\Product').findBy({'Status': 1}) %}
  16.             
  17.             {# 商品コードが数値の商品のみを抽出し、数値としてソート #}
  18.             {% set ProductsWithNumericCode = [] %}
  19.             {% for Product in AllProducts %}
  20.                 {% if Product.ProductClasses is not empty %}
  21.                     {% set ProductClass = Product.ProductClasses|first %}
  22.                     {% if ProductClass.code is not empty and ProductClass.code matches '/^\\d+$/' %}
  23.                         {% set ProductsWithNumericCode = ProductsWithNumericCode|merge([{
  24.                             'product': Product,
  25.                             'numericCode': ProductClass.code|number_format(0, '', '') + 0
  26.                         }]) %}
  27.                     {% endif %}
  28.                 {% endif %}
  29.             {% endfor %}
  30.             
  31.             {# 数値コードで降順ソートして上位10件を取得 #}
  32.             {% set SortedProducts = ProductsWithNumericCode|sort((a, b) => b.numericCode <=> a.numericCode)|slice(0, 10) %}
  33.             {% set Products = SortedProducts|map(item => item.product) %}
  34.             
  35.             {# 商品をfor文で一覧表示 #}
  36.             {% for Product in Products %}
  37.                 <div class="ec-newItemRole__listItem">
  38.                     <a href="{{ url('product_detail', {'id': Product.id}) }}">
  39.                         {# 商品画像の表示 #}
  40.                         {% if Product.ProductImage is not empty %}
  41.                             <img src="{{ asset(Product.ProductImage[0].fileName, 'save_image') }}" alt="{{ Product.name }}">
  42.                         {% else %}
  43.                             <img src="{{ asset('assets/img/common/no_image.jpg') }}" alt="{{ Product.name }}">
  44.                         {% endif %}
  45.                         
  46.                         {# 商品名 #}
  47.                         <p class="ec-newItemRole__listItemTitle">{{ Product.name }}</p>
  48.                         
  49.                         {# 商品コードの表示(デバッグ用) 
  50.                         {% if Product.ProductClasses is not empty %}
  51.                             {% set ProductClass = Product.ProductClasses|first %}
  52.                             <p class="ec-newItemRole__listItemCode">商品コード: {{ ProductClass.code ?? 'なし' }}</p>
  53.                         {% endif %}
  54.                         #}
  55.                         
  56.                         {# 商品価格(消費税8%切り捨て表示) #}
  57.                         <p class="ec-newItemRole__listItemPrice">
  58.                             {% if Product.ProductClasses is not empty %}
  59.                                 {% set ProductClass = Product.ProductClasses|first %}
  60.                                 {% set basePrice = ProductClass.price02 %}
  61.                                 {# 税込価格を計算して1円未満切り捨て #}
  62.                                 {% set rawTaxIncludedPrice = basePrice * 1.08 %}
  63.                                 {% set displayPrice = rawTaxIncludedPrice|split('.')|first %}
  64.                                 ¥{{ displayPrice|number_format(0, '.', ',') }} 税込
  65.                             {% else %}
  66.                                 {% set basePrice = Product.price02 %}
  67.                                 {# 税込価格を計算して1円未満切り捨て #}
  68.                                 {% set rawTaxIncludedPrice = basePrice * 1.08 %}
  69.                                 {% set displayPrice = rawTaxIncludedPrice|split('.')|first %}
  70.                                 ¥{{ displayPrice|number_format(0, '.', ',') }} 税込
  71.                             {% endif %}
  72.                         </p>
  73.                     </a>
  74.                 </div>
  75.             {% endfor %}
  76.         </div>
  77.     </div>
  78. </div>