app/template/raspia/Product/detail.twig line 1

Open in your IDE?
  1. {#
  2.     This file is part of EC-CUBE
  3.     
  4.     Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  5.     
  6.     http://www.ec-cube.co.jp/
  7.      
  8.     For the full copyright and license information, please view the LICENSE
  9.     file that was distributed with this source code.
  10.     #}
  11.     {% extends 'default_frame.twig' %}
  12.     
  13.     {% set body_class = 'product_page' %}
  14.     
  15.     {% if Product.hasProductClass -%}
  16.         {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  17.             {% set price = Product.getPrice01()[0] %}
  18.             {% set taxIn = Product.getPrice01IncTaxs()[0] %}
  19.         {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  20.             {% set price = Product.getPrice01()[0] %}
  21.             {% set taxIn = Product.getPrice01IncTaxs()[0] %}
  22.         {% endif %}
  23.     {% else -%}
  24.         {% if Product.getPrice01Max is not null %}
  25.             {% set price = Product.getPrice01()[0] %}
  26.             {% set taxIn = Product.getPrice01IncTaxs()[0] %}
  27.         {% endif %}
  28.     {% endif -%}
  29.     {% if Product.hasProductClass -%}
  30.         {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  31.             {% set price = Product.getPrice02()[0] %}
  32.             {% set taxIn = Product.getPrice02IncTaxs()[0] %}
  33.         {% else %}
  34.             {% set price = Product.getPrice02()[0] %}
  35.             {% set taxIn = Product.getPrice02IncTaxs()[0] %}
  36.         {% endif %}
  37.     {% else -%}
  38.         {% set price = Product.getPrice02()[0] %}
  39.         {% set taxIn = Product.getPrice02IncTaxs()[0] %}
  40.     {% endif -%}
  41.     
  42.     {% block stylesheet %}
  43.         <style>
  44.     
  45.             .slick-slider {
  46.                 margin-bottom: 30px;
  47.             }
  48.     
  49.             .slick-dots {
  50.                 position: absolute;
  51.                 bottom: -45px;
  52.                 display: block;
  53.                 width: 100%;
  54.                 padding: 0;
  55.                 list-style: none;
  56.                 text-align: center;
  57.             }
  58.     
  59.             .slick-dots li {
  60.                 position: relative;
  61.                 display: inline-block;
  62.                 width: 20px;
  63.                 height: 20px;
  64.                 margin: 0 5px;
  65.                 padding: 0;
  66.     
  67.                 cursor: pointer;
  68.             }
  69.     
  70.             .slick-dots li button {
  71.                 font-size: 0;
  72.                 line-height: 0;
  73.                 display: block;
  74.                 width: 20px;
  75.                 height: 20px;
  76.                 padding: 5px;
  77.                 cursor: pointer;
  78.                 color: transparent;
  79.                 border: 0;
  80.                 outline: none;
  81.                 background: transparent;
  82.             }
  83.     
  84.             .slick-dots li button:hover,
  85.             .slick-dots li button:focus {
  86.                 outline: none;
  87.             }
  88.     
  89.             .slick-dots li button:hover:before,
  90.             .slick-dots li button:focus:before {
  91.                 opacity: 1;
  92.             }
  93.     
  94.             .slick-dots li button:before {
  95.                 content: " ";
  96.                 line-height: 20px;
  97.                 position: absolute;
  98.                 top: 0;
  99.                 left: 0;
  100.                 width: 12px;
  101.                 height: 12px;
  102.                 text-align: center;
  103.                 opacity: .25;
  104.                 background-color: black;
  105.                 border-radius: 50%;
  106.     
  107.             }
  108.             .ec-blockBtn--action.add-cart{
  109.                 line-height: 0;
  110.             }
  111.     
  112.             .slick-dots li.slick-active button:before {
  113.                 opacity: .75;
  114.                 background-color: black;
  115.             }
  116.     
  117.             .slick-dots li button.thumbnail img {
  118.                 width: 0;
  119.                 height: 0;
  120.             }
  121.     
  122.         </style>
  123.     {% endblock %}
  124.     
  125.     {% block javascript %}
  126.         <script>
  127.             $("#classcategory_id2").parent().addClass('disabled');
  128.             eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  129.     
  130.             // 規格2に選択肢を割り当てる。
  131.             function fnSetClassCategories(form, classcat_id2_selected) {
  132.                 var $form = $(form);
  133.                 var product_id = $form.find('input[name=product_id]').val();
  134.                 var $sele1 = $form.find('select[name=classcategory_id1]');
  135.                 var $sele2 = $form.find('select[name=classcategory_id2]');
  136.                 eccube.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected);
  137.             }
  138.     
  139.             {% if form.classcategory_id2 is defined %}
  140.             fnSetClassCategories(
  141.                 $('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  142.             );
  143.             {% elseif form.classcategory_id1 is defined %}
  144.             eccube.checkStock($('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  145.             {% endif %}
  146.             $('#classcategory_id2').click(function(){
  147.                 if($('#classcategory_id1').val() == '__unselected' || $('#classcategory_id1').val() == ''){
  148.                     $(".popupAlert").fadeIn()
  149.                     setTimeout(function(){
  150.                         $(".popupAlert").fadeOut()
  151.                     },4000)
  152.                 }
  153.             })
  154.             $('#classcategory_id1').change(function(){
  155.                 if($(this).val() == "__unselected"){
  156.                     // $("#classcategory_id2").prop('disabled',true);
  157.                     $("#classcategory_id2").parent().addClass('disabled');
  158.                 }else{
  159.                     // $("#classcategory_id2").prop('disabled',false);
  160.                     $("#classcategory_id2").parent().removeClass('disabled');
  161.                 }
  162.             })
  163.         </script>
  164.         <script>
  165.             $(function() {
  166.                 // bfcache無効化
  167.                 $(window).bind('pageshow', function(event) {
  168.                     if (event.originalEvent.persisted) {
  169.                         location.reload(true);
  170.                     }
  171.                 });
  172.     
  173.                 $('.item_visual').slick({
  174.                     dots: false,
  175.                     arrows: false,
  176.                     responsive: [{
  177.                         breakpoint: 768,
  178.                         settings: {
  179.                             dots: true
  180.                         }
  181.                     }]
  182.                 });
  183.     
  184.                 $('.slideThumb').on('click', function() {
  185.                     var index = $(this).attr('data-index');
  186.                     $('.item_visual').slick('slickGoTo', index, false);
  187.                 })
  188.             }); 
  189.         </script>
  190.         <script>
  191.             $(function() {
  192.                 $('.add-cart').on('click', function(event) {
  193.                     {% if form.classcategory_id1 is defined %}
  194.                     // 規格1フォームの必須チェック
  195.                     if ($('#classcategory_id1').val() == '__unselected' || $('#classcategory_id1').val() == '') {
  196.                         $('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  197.                         return true;
  198.                     } else {
  199.                         $('#classcategory_id1')[0].setCustomValidity('');
  200.                     }
  201.                     {% endif %}
  202.     
  203.                     {% if form.classcategory_id2 is defined %}
  204.                     // 規格2フォームの必須チェック
  205.                     if ($('#classcategory_id2').val() == '__unselected' || $('#classcategory_id2').val() == '') {
  206.                         $('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  207.                         return true;
  208.                     } else {
  209.                         $('#classcategory_id2')[0].setCustomValidity('');
  210.                     }
  211.                     {% endif %}
  212.     
  213.                     // 個数フォームのチェック
  214.                     if ($('#quantity').val() < 1) {
  215.                         $('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  216.                         return true;
  217.                     } else {
  218.                         $('#quantity')[0].setCustomValidity('');
  219.                     }
  220.     
  221.                     event.preventDefault();
  222.                     $form = $('#form1');
  223.                     $.ajax({
  224.                         url: $form.attr('action'),
  225.                         type: $form.attr('method'),
  226.                         data: $form.serialize(),
  227.                         dataType: 'json',
  228.                         beforeSend: function(xhr, settings) {
  229.                             // Buttonを無効にする
  230.                             $('.add-cart').prop('disabled', true);
  231.                         }
  232.                     }).done(function(data) {
  233.                         // レスポンス内のメッセージをalertで表示
  234.                         $.each(data.messages, function() {
  235.                             $('#ec-modal-header').html(this);
  236.                         });
  237.     
  238.                         //GA4 add_cart START
  239.                         dataLayer.push({ ecommerce: null });  // Clear the previous ecommerce object.
  240.                         
  241.                         dataLayer.push({
  242.                             'event': 'add_to_cart',
  243.                             'ecommerce': {
  244.                             'currency': 'JPY',
  245.                             'value': '{{ Product.getPrice02IncTaxMin }}',                            
  246.                                 'items': [{
  247.                                     'item_name': '{{ Product.name }}',
  248.                                     'item_id': '{{ Product.getCodeMin ? Product.getCodeMin : Product.id }}',
  249.                                     'price': '{{ Product.getPrice02IncTaxMin }}',
  250.                                     'item_category': '{% for ProductCategory in Product.ProductCategories %}{% for Category in ProductCategory.Category.path %}{% if ( Category.parent is not null ) %}{{ Category.Parent.name }}:{{ Category.name }}{% endif %}{% endfor %}{% endfor %}',
  251.                                     'quantity': '1'
  252.                                 }]
  253.                             }
  254.                         });   
  255.                         //GA4 add_cart END
  256.                         $('.ec-modal').show()
  257.     
  258.                         // カートブロックを更新する
  259.                         $.ajax({
  260.                             url: "{{ url('block_cart') }}",
  261.                             type: 'GET',
  262.                             dataType: 'html'
  263.                         }).done(function(html) {
  264.                             $('#headerCartWrapp').html(html);
  265.                         });
  266.                     }).fail(function(data) {
  267.                         alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  268.                     }).always(function(data) {
  269.                         // Buttonを有効にする
  270.                         $('.add-cart').prop('disabled', false);
  271.                     });
  272.                 });
  273.             });
  274.     
  275.             $('.ec-modal-overlay, .ec-modal .ec-inlineBtn--cancel').on('click', function() {
  276.                 $('.ec-modal').hide()
  277.             });
  278.         </script>
  279.     
  280.            {% set nglists = [73,74,75,84,83,78,79] %}
  281.     
  282.             {% if (Product.id in nglists ) == false %}
  283.     
  284.             <!--<script type="application/ld+json">
  285.         {
  286.           "@context": "http://schema.org/",
  287.           "@type": "Product",
  288.           "sku": "111{{ Product.id }}",
  289.           "gtin14" : "",
  290.           "mpn": "111{{ Product.id }}",
  291.           "image": [
  292.             {% for ProductImage in Product.ProductImage %}
  293.                 {% if loop.index != 1 %},{% endif %}
  294.         "https://raspia.com{{ asset(ProductImage.getWebpImage(), 'save_image') }}"
  295.             {% endfor %}
  296.            ],
  297.           "name": "{{ Product.name }}",
  298.           "description": "{{ Product.lead_text|raw }}",
  299.           "color" : "ゴールド",
  300.           "brand": {
  301.             "@type": "Thing",
  302.             "name": "RASPIA Jewelry"
  303.           },
  304.           "audience": {
  305.             "@type": "PeopleAudience",
  306.             "suggestedGender": "female",
  307.             "suggestedMinAge": "13",
  308.             "suggestedMaxAge": "100"
  309.           },
  310.           "offers": {
  311.             "@type": "Offer",
  312.             "url": "https://raspia.com/products/detail/{{ Product.id }}",
  313.             "priceCurrency": "JPY",
  314.             "price":{{ taxIn }},
  315.             "itemCondition": "http://schema.org/NewCondition",
  316.             {% if Product.stock_find %}
  317.             "availability": "http://schema.org/InStock"
  318.             {% else %}
  319.             {# 在庫がない場合は品切れボタンを表示 #}
  320.             "availability": "http://schema.org/SoldOut"
  321.             {% endif %} {#End stock find#}
  322.     
  323.           }
  324.         }
  325.         </script>-->
  326.     
  327.             {%  endif  %}
  328.     
  329.     
  330.     {% endblock %}
  331.     
  332.     {% block main %}
  333.     
  334.  {% set OpenEventHasCategory = false %}{# 南堀江店舗イベント用 #}
  335.  {% for ProductCategory in Product.ProductCategories %}
  336.       {% if ProductCategory.Category.id == 150 %}
  337.          {% set OpenEventHasCategory = true %}
  338.       {% endif %}
  339.  {% endfor %}
  340.     
  341.     
  342.     
  343. {#     
  344.     <div class="mvLow">
  345.         <h1 class="ttl01">COLLECTION</h1>
  346.     </div>
  347. #}    
  348.     <div class="breadcrumbs">
  349.         <ul>
  350.             <li><a href="{{ url('homepage') }}">HOME</a></li>
  351.             <li><a href="{{ url('product_list') }}">コレクション</a></li>
  352.     
  353.             <li>{{ Product.name|slice(0,16) }}...</li>
  354.         </ul>
  355.     </div>
  356.     
  357.     <div id="productDetailCampane">
  358. {# 
  359.         <p><strong>【クリスマスシーズン発送・お届けのお知らせ】</strong><br>12/21(木)中にご入金確認できたご注文は、12/22(金)中に発送します。<br>
  360.         国内へのお届けは発送完了から通常1〜2日で届きますが、運送会社の都合で配送遅延が発生する場合がございます。クリスマスプレゼントでご検討のお客様は、お早めにご注文いただけますと幸いです。
  361.         </p>
  362.         <p><strong>【年末年始休業/配送のお知らせ】</strong><br>12/29(木)中にご入金確認できたご注文につきましては、12/30(金)中に発送します。<br>12/30(金)〜翌年1/5(木)までのご注文は1/6(金)より順次発送いたします。</p>
  363.         <br>
  364. #}        
  365.          <p>公式SNS ▶
  366.                 <a href="https://www.facebook.com/raspiajewelry/"><img src="/html/template/raspia/img/common/ico_facebook_03.webp" alt="" width="33"></a>
  367.                 <a href="https://www.instagram.com/raspia_jewelry/"><img src="/html/template/raspia/img/common/ico_instagram_03.webp?2020" alt="" width="33"></a>
  368.                 <a href="https://twitter.com/RASPIA_Jewelry"><img src="/html/template/raspia/img/common/ico_twitter_03.webp" alt="" width="33"></a>
  369.                 <a href="https://lin.ee/qJTCKzZ"><img src="/html/template/raspia/img/common/ico_line.webp" alt="" width="33"></a>
  370.         </p>        
  371.     </div>
  372. {# 
  373.     <div class="bnrWrap01">
  374.         <a href="https://raspia.com/magazine/4397/">
  375.             <img src="/html/template/raspia/img/event/iyotetsu2024.webp" alt="いよてつ高島屋期間限定ショップ">
  376.             
  377. <!--            
  378.             <img class="pc" src="/html/template/raspia/img/event/iyotetsu2024.webp" alt="いよてつ高島屋期間限定ショップ">
  379.             <img class="sp" src="/html/template/raspia/img/event/img_19_sp.webp?2023" alt="店舗のご案内 大阪・南堀江店">
  380.             -->
  381.         </a>
  382.         <p class="subTxt01" style='font-size:105%;'><a href="https://raspia.com/magazine/4397/"> 2024年1月17日〜23日まで<br class="sp">愛媛県松山市「いよてつ高島屋」3Fにて<br class="sp">期間限定ショップ開催致します。 </a></p>
  383.     </div>
  384. #} 
  385.     
  386.     
  387.     <section class="productArea inner cf product-detail" data-id="{{ Product.id }}" data-name="{{ Product.name }}" data-category="{% for ProductCategory in Product.ProductCategories %}{% for Category in ProductCategory.Category.path %}{% if(loop.parent.loop.index != 1) %}{{ Category.name }}{%  endif  %}{% endfor %}{% endfor %}
  388.     " data-price="{{ Product.getPrice02IncTaxMax() }}">
  389.     
  390.         <div class="sliderArea">
  391.             {% if Product.ProductImage|length > 0 %}
  392.                 <div class="sliderPhoto">
  393.                     <ul>
  394.                     {% for ProductImage in Product.ProductImage %}
  395.                         <li><img class="lazyload" src="/html/template/raspia/img/common/load_logo.webp" data-src="{{ asset(ProductImage.getWebpImage(), 'save_image') }}" alt=""></li>
  396.                     {% else %}
  397.                         <li><img src="{{ asset(''|no_image_product, 'save_image') }}"/></li>
  398.                     {% endfor %}
  399.                     </ul>
  400.                 </div>
  401.                 <div class="sliderThumb cf">
  402.                     <ul>
  403.                         {% for ProductImage in Product.ProductImage %}
  404.                             <li><a data-slide-index="{{ loop.index-1 }}" href=""><img class="lazyload" src="/html/template/raspia/img/common/load_logo.webp" data-src="{{ asset(ProductImage.getWebpImage, 'save_image') }}"></a></li>
  405.                         {% else %}
  406.                             <li><a data-slide-index="{{ loop.index-1 }}" href=""><img src="{{ asset(''|no_image_product, 'save_image') }}"/></a></li>
  407.                         {% endfor %}
  408.                     </ul>
  409.                 </div>
  410.             {% else %}
  411.                 <div id="detail_image_box__item"><img class="lazyload" data-src="{{ app.config.image_save_urlpath }}/{{ ''|no_image_product }}"/></div>
  412.             {% endif %}
  413.     
  414.             <div class="sliderText">
  415.                 <p>■商品のご購入をご検討のお客様へ<br>
  416.                     2,000円以上お買い上げで<strong>全国送料無料</strong>です。すべて無料で台紙付きのラッピング、商品保証書をお付けしております。また、プレゼントラッピングもご希望の方も、別売りでご用意しております。</p>
  417.                 <p>■ご注文商品のお届けに関して<br>
  418.                 ご注文・ご入金確認後、2営業日以内(最短当日)に発送致します。
  419.                 </p>    
  420.                     
  421.             </div>
  422.         </div>
  423.     
  424.         <div class="productPlan">
  425.     
  426.             {% if Product.ProductTag is not empty %}
  427.                 {% for ProductTag in Product.ProductTag %}
  428.                     <span id="product_tag_box__product_tag--{{ ProductTag.Tag.id }}" class="product_tag_list">{{ ProductTag.Tag }}</span>
  429.                 {% endfor %}
  430.             {% endif %}
  431.             <h2 class="comTtl03">{{ Product.name }}</h2>
  432.             <div class="productColor">
  433.                 <p>{{ Product.lead_text|raw|nl2br }}</p>
  434.             </div>
  435.             <div class="productSupportInfo">
  436.            会員の方はご購入金額の1%のポイント還元いたします。<br>
  437.                 <span>品番</span> {{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}
  438.             </div>
  439.     
  440.             <div class="productPrice">
  441.                 <div class="price">
  442.                     <!--★通常価格★-->
  443.                     {% if Product.hasProductClass -%}
  444.                         {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  445.                             <p class="hightPrice">通常価格:<span class="price01_default">{ Product.getPrice01IncTaxs()[0]|price }}</span> <span class="small">(税込)</span></p>
  446.                         {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  447.                             <p class="hightPrice">通常価格:<span class="price01_default">{ Product.getPrice01IncTaxs()[0]|price }}</span> <span class="small">(税込)</span></p>
  448.                         {% endif %}
  449.                     {% else -%}
  450.                         {% if Product.getPrice01Max is not null %}
  451.                             <p class="hightPrice">通常価格:<span class="price01_default">{{ Product.getPrice01IncTaxs()[0]|price }}</span> <span class="small">(税込)</span></p>
  452.                         {% endif %}
  453.                     {% endif -%}
  454.     
  455.                     <!--★販売価格★-->
  456.                     {% if Product.hasProductClass -%}
  457.                         {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  458.                             <p class="lowPrice"><span>{{ Product.getPrice02IncTaxs()[0]|price }}</span> <span class="small">(税込)</span></p>
  459.                         {% else %}
  460.                             <p class="lowPrice"><span>{{ Product.getPrice02IncTaxs()[0]|price }}</span> <span class="small">(税込)</span></p>
  461.                         {% endif %}
  462.                     {% else -%}
  463.                         <p class="lowPrice"><span>{{ Product.getPrice02IncTaxs()[0]|price }}</span> <span class="small">(
  464.                         税込)</span></p>
  465.                     {% endif -%}
  466.                 </div>
  467.                 <div class="order">
  468.                  <form action="{{ url('product_add_cart', {id:Product.id}) }}" method="post" id="form1" name="form1">
  469.                      {% if Product.stock_find %}
  470.                          <div class="ec-productRole__actions">
  471.                              {% if form.classcategory_id1 is defined %}
  472.                                  <div class="ec-select">
  473.                                      {{ form.classcategory_id1.vars.label }}:{{ form_widget(form.classcategory_id1) }}
  474.                                      {{ form_errors(form.classcategory_id1) }}
  475.                                  </div>
  476.                                  {% if form.classcategory_id2 is defined %}
  477.                                      <div class="ec-select disabled">
  478.                                          {{ form.classcategory_id2.vars.label }}:
  479.                                          <p class="small">{{ form.classcategory_id1.vars.label }}を最初に選択してください。</p>
  480.                                          {{ form_widget(form.classcategory_id2) }}
  481.                                          {{ form_errors(form.classcategory_id2) }}
  482.                                      </div>
  483.                                  {% endif %}
  484.                              {% endif %}
  485.                              <div class="ec-numberInput"><span>{{ '数量'|trans }}</span>
  486.                                  {{ form_widget(form.quantity) }}
  487.                                  {{ form_errors(form.quantity) }}
  488.                              </div>
  489.                          </div>
  490.                          <div class="ec-productRole__btn">
  491.                              <button type="submit" id="add_cart" class="ec-blockBtn--action add-cart btn-primary btnNext">{{ 'カートに入れる'|trans }}</button>
  492.                          </div>
  493.                      {% else %}
  494.                          <div class="ec-productRole__btn">
  495.                              <button type="button" class="ec-blockBtn--action" disabled="disabled">
  496.                                  {{ 'ただいま品切れ中です。'|trans }}
  497.                              </button>
  498.                          </div>
  499.                      {% endif %}
  500.     
  501.                      {{ form_rest(form) }}
  502.                  </form>
  503.                  </div>
  504.                  <div class="ec-modal">
  505.                      <div class="ec-modal-overlay">
  506.                          <div class="ec-modal-wrap">
  507.                              <span class="ec-modal-close"><span class="ec-icon"><img src="{{ asset('assets/icon/cross-dark.svg') }}" alt=""/></span></span>
  508.                              <div id="ec-modal-header" class="text-center">{{ 'カートに追加しました。'|trans }}</div>
  509.                              <div class="ec-modal-box">
  510.                                  <div class="ec-role">
  511.                                      <span class="btnBack ec-inlineBtn--cancel">{{ 'お買い物を続ける'|trans }}</span>
  512.                                      <a href="{{ url('cart') }}" class="btnNext ec-inlineBtn--action">{{ 'カートへ進む'|trans }}</a>
  513.                                  </div>
  514.                              </div>
  515.                          </div>
  516.                      </div>
  517.                  </div>
  518.                  {% if BaseInfo.option_favorite_product %}
  519.                      <form action="{{ url('product_add_favorite', {id:Product.id}) }}" method="post">
  520.                          <div class="ec-productRole__btn">
  521.                              {% if is_favorite == false %}
  522.                                  <button type="submit" id="favorite" class="btn btn-info btn-block prevention-btn prevention-mask ec-blockBtn--cancel">
  523.                                      {{ 'お気に入りに追加'|trans }}
  524.                                  </button>
  525.                              {% else %}
  526.                                  <button type="submit" id="favorite" class="ec-blockBtn--cancel"
  527.                                          disabled="disabled">{{ 'お気に入りに追加済です。'|trans }}
  528.                                  </button>
  529.                              {% endif %}
  530.                          </div>
  531.                      </form>
  532.                  {% endif %}
  533.     
  534.     
  535.     
  536.                 <dl>
  537.                     <dt>備考:</dt>
  538.                     <dd>
  539.                         {% if Product.remark is not null %}{{ Product.remark|raw|nl2br }}<br>{% endif %}
  540.     
  541.                          注文確定後の変更とキャンセルはお受けできません。予めご了承ください。
  542.                     </dd>
  543.                 </dl>
  544.     
  545.             </div>
  546.         </div>
  547.     </section>
  548.     {% if Product.product_movie != "" %}
  549.     <div class="itemMovieWrap inner">
  550.         <h2 class="comTtl03">動画で見る</h2>
  551.         <div class="movieBg">
  552.             <video src="{{ Product.product_movie }}.mp4" poster="{{ Product.product_movie }}.webp" width="100%" muted="" loop="" playsinline="" controls=""></video>
  553.         </div>
  554.     </div>
  555.     {% endif %}
  556.     
  557.     <section class="productInfo inner">
  558.     {% if OpenEventHasCategory %}{#南堀江店舗用#}
  559.         <div id="eventSection">
  560.             <div class="backgroundImg01">
  561.                 <div class="eventSec01">
  562.                     <h4 class="comTtl04">その他のオープン記念商品</h4>
  563.                     <div class="event_flexbtn_wrapper">
  564.                         <a class="comBtn04" href="https://raspia.com/products/list?category_id=150">他の期間限定商品を見る</a>
  565.                     </div>
  566.                 </div>
  567.             </div>
  568.             <div class="backgroundImg02">
  569.             </div>
  570.             <div class="eventSec02">
  571.                 <h4 class="comTtl04">大阪・南堀江店 店舗情報</h4>
  572.                 <p class="txt02">
  573.                     2023年4月29日(土)に大阪・南堀江に直営店を<br class="sp">オープンいたしました。<br>
  574.                     ゆっくりジュエリーをお楽しみいただける<br class="sp">空間をご用意しました。<br>
  575.                     是非、お気軽にお越しください。
  576.                 </p>
  577.                 <div class="txtWrap">
  578.                     <p>
  579.                         【住  所】<br class="sp">大阪府大阪市西区南堀江1丁目14番3号 喜多河ビル1F<br>
  580.                         【アクセス】<br class="sp">地下鉄四つ橋線四ツ橋駅 徒歩5分<br>
  581.                         <span class="pc">      </span>地下鉄御堂筋線心斎橋駅/JRなんば駅 徒歩10分
  582.                     </p>
  583.                 </div>
  584.                 <div class="event_flexbtn_wrapper">
  585.                     <div class="comBtn02 solo">
  586.                         <a class="btnBasic" href="https://raspia.com/user_data/shop">店舗の詳細はこちら</a>
  587.                     </div>
  588.                 </div>
  589.             </div>
  590.         </div>
  591.         {% else %}{# 通常時 #}        
  592.             {% if Product.description_detail is not null %}
  593.             {% if Product.description_detail == "" %}
  594.             {% else %}
  595.                 <h2 class="comTtl03">商品説明</h2>
  596.                 <div class="box01 cf">
  597.                     <h4 class="comTtl02">{{ Product.name }}</h4>
  598.                     {{ Product.description_detail|raw }}
  599.                 </div>
  600.             {% endif %}
  601.             {% endif %}
  602.         {% endif %}
  603.     <!--
  604.         {% if Product.getSlider() is not null  %}
  605.     
  606.         <h2 class="comTtl03 earRing">イヤリングに変更・チャームのみ購入</h2>
  607.         <div class="box03 cf">
  608.             <div class="sliderArea earRingSlider">
  609.                 <div class="sliderPhoto">
  610.                     <ul>
  611.                         {% for Image in SliderImages %}
  612.                         <li><img class="lazyload" src="/html/template/raspia/img/common/load_logo.webp" data-src="{{ Image }}"></li>
  613.                         {% endfor %}
  614.                     </ul>
  615.                 </div>
  616.             </div>
  617.             <div class="textBox">
  618.                 <h4 class="comTtl02">金具の変更について</h4>
  619.                 <p>●イヤリングに変更ができるようになりました。ピアスホールが空いていない方も身につけていただけます。<br>
  620.                 ご注文時に「金具変更」より「イヤリング」を選択ください。<br>
  621.                 <br>
  622.                 ●チャームだけのご購入も可能です。<br>
  623.                 「金具変更」より「チャームのみ」を選択ください。<br>
  624.                 <br>
  625.                 ※チャーム丸カンのサイズは変更可能です。<br>
  626.                 お手持ちのピアス(orイヤリング)に通るか不安な方は事前にご相談いただくか、<br>
  627.                 合わせたいピアス(orイヤリング)の太さをお問い合わせ欄にご記入ください。<br>
  628.                 ※フックピアスに取り付けているチャームは金具から取り外しできません。
  629.                 </p>
  630.             </div>
  631.         </div>
  632.         {% endif %}
  633.     -->
  634.         {% if Product.materials != "" and Product.size != "" %}
  635.         <div class="productProfile">
  636.             <h4 class="comTtl04">ITEM SPEC</h4>
  637.             <table class="table01 spec">
  638.                 <tr>
  639.                     <th>サイズ</th>
  640.                     <td colspan="3">{{ Product.size }}</td>
  641.                 </tr>
  642.                 <tr>
  643.                     <th>素材</th>
  644.                     <td>{{ Product.materials }}</td>
  645.                     <th>カテゴリ</th>
  646.                     <td>
  647.                         <ul>
  648.                         {% for ProductCategory in Product.ProductCategories %}
  649.                             {% for Category in ProductCategory.Category.path %}
  650.                                 {% if(loop.parent.loop.index != 1) %}
  651.                                 <li><a id="relative_category_box__relative_category--{{ ProductCategory.product_id }}_{{ loop.parent.loop.index }}_{{ Category.id }}" href="{{ url('product_list') }}?category_id={{ Category.id }}">{{ Category.name }}</a></li>
  652.                                 {%  endif  %}
  653.                             {% endfor %}
  654.                         {% endfor %}
  655.                         </ul>
  656.                     </td>
  657.                 </tr>
  658.             </table>
  659.             {{ Product.specification|raw }}
  660.         </div>
  661.         {% else -%}        
  662.         <div class="productProfile">
  663.             <table class="table01 spec">
  664.                 <tr>
  665.                     <th>カテゴリ</th>
  666.                     <td>
  667.                         <ul>
  668.                         {% for ProductCategory in Product.ProductCategories %}
  669.                             {% for Category in ProductCategory.Category.path %}
  670.                                 <li><a id="relative_category_box__relative_category--{{ ProductCategory.product_id }}_{{ loop.parent.loop.index }}_{{ Category.id }}" href="{{ url('product_list') }}?category_id={{ Category.id }}">{{ Category.name }}</a></li>
  671.                             {% endfor %}
  672.                         {% endfor %}
  673.                         </ul>
  674.                     </td>
  675.                 </tr>
  676.             </table>
  677.         </div>
  678.         {% endif %}
  679.     </section>
  680.     <section class="seoWrap">
  681.         <div class="inner">
  682.             <h2 class="ttl001">ABOUT RASPIA</h2>
  683.             <span class="txt03">ラスピアについて</span>
  684.             <p class="seoTxt01">RASPIA(ラスピア)は、シンプルで大人可愛いデザインをイメージし、カラーストーン/天然石とK10(10金)/K18(18金)の本物のゴールド素材を使って手作りしています。<br class="pc">20代、30代から40代、50代の幅広い年齢層にレディース向けジュエリーとして、<br class="pc">普段使いからお仕事やフォーマルシーン・一生物ジュエリーなど様々なコーディネートをご提案します。</p>
  685.         </div>
  686.     </section>
  687.     
  688.     {# フリーエリア #}
  689.     {% if Product.free_area %}
  690.         <div id="sub_area" class="row">
  691.             <div class="col-sm-10 col-sm-offset-1">
  692.                 <div id="detail_free_box__free_area" class="free_area">{{ include(template_from_string(Product.free_area)) }}</div>
  693.             </div>
  694.         </div>
  695.     {% endif %}
  696.     <div id="relatedProduct">
  697.     
  698.     </div>
  699.     
  700.     <div id="lineButtonArea">
  701.     <a href="https://lin.ee/qJTCKzZ" target="_blank" alt="LINEで相談"><span>LINE</span>で相談</a>
  702.     </div>
  703.     <!--Criteo BEGIN-->
  704.     <script type="text/javascript">
  705.     
  706. async function sha256(text){
  707.     const uint8  = new TextEncoder().encode(text)
  708.     const digest = await crypto.subtle.digest('SHA-256', uint8)
  709.     return Array.from(new Uint8Array(digest)).map(v => v.toString(16).padStart(2,'0')).join('')
  710. }
  711.     {% if is_granted('ROLE_USER') %}
  712.     var crto_hem = sha256("{{ app.user.email }}");
  713.     {% endif %}
  714.      window.criteo_q = window.criteo_q || [];
  715.      window.criteo_q.push(
  716.         { event: "setAccount", account: 82881 },
  717.         { event: "setSiteType", type: /iPad/.test(navigator.userAgent)?"t":/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent)?"m":"d"  },
  718.     {% if is_granted('ROLE_USER') %}        
  719.         { event: "setEmail", email: crto_hem, hash_method: "sha256" },
  720.     {% endif %}            
  721.         { event: "viewItem", item: {{ Product.id }}, ecpplugin: "ec-cube-4gd" }
  722.       );
  723.     
  724.     </script>
  725.     <!--Criteo END-->
  726.     
  727.     {% endblock %}