{#
This file is part of EC-CUBE
Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
http://www.ec-cube.co.jp/
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
#}
{% extends 'default_frame_product.twig' %}
{% set body_class = 'product_detail_page' %}
{% set footerBrandListFlg = true %}
{% block stylesheet %}
<link rel="stylesheet" href="{{ asset('assets/css/product-details.css') }}">
{% endblock %}
{% block javascript %}
<script>
eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
eccube.recommendProductsClassCategories = {
{% for RecommendProduct in RecommendProducts %}
{% set rProduct = RecommendProduct %}
"{{ rProduct.id|escape('js') }}": {{ class_categories_as_json(rProduct)|raw }}{% if loop.last == false %}, {% endif %}
{% endfor %}
};
// 規格2に選択肢を割り当てる。
function fnSetClassCategories(form, classcat_id2_selected) {
var $form = $(form);
var product_id = $form.find('input[name=product_id]').val();
var $sele1 = $form.find('select[name=classcategory_id1]');
var $sele2 = $form.find('select[name=classcategory_id2]');
eccube.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected);
if ($('select[name=classcategory_id2] option').length == 2) {
$('select[name=classcategory_id2] option').filter(function() {
return !this.value || $.trim(this.value).length == 0 || $.trim(this.text).length == 0;
})
.remove();
}
}
{% if form.classcategory_id2 is defined %}
fnSetClassCategories(
$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
);
{% elseif form.classcategory_id1 is defined %}
eccube.checkStock($('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
{% endif %}
</script>
<script>
$(function() {
$('#favorite_add').on("click", function(e) {
e.preventDefault();
$("#add_favorite_form").submit();
});
$("#favorite_add_finished").on("click", function(e) {
e.preventDefault();
});
});
</script>
<script>
$(function() {
$('.add-cart').on('click', function(event) {
{% if form.classcategory_id1 is defined %}
// 規格1フォームの必須チェック
var $classcategory = $(this).parents('form').find('select[name="classcategory_id1"]');
if ($classcategory.val() == '__unselected' || $classcategory.val() == '') {
$classcategory[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
return true;
} else {
$classcategory[0].setCustomValidity('');
}
{% endif %}
{% if form.classcategory_id2 is defined %}
// 規格2フォームの必須チェック
var $classcategory2 = $(this).parents('form').find('select[name="classcategory_id2"]');
if ($classcategory2.val() == '__unselected' || $classcategory2.val() == '') {
$classcategory2[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
return true;
} else {
$classcategory2[0].setCustomValidity('');
}
{% endif %}
// 個数フォームのチェック
var $quantity = $(this).parents('form').find('[name="quantity"]');
if ($quantity.val() < 1) {
$quantity[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
return true;
} else {
$quantity[0].setCustomValidity('');
}
event.preventDefault();
$form = $(this).parents('form');
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize(),
dataType: 'json',
beforeSend: function(xhr, settings) {
// Buttonを無効にする
$('.add-cart').prop('disabled', true);
}
}).done(function(data) {
// レスポンス内のメッセージをalertで表示
$.each(data.messages, function() {
$('#ec-modal-header').html(this);
});
$('#ec-modal-checkbox').prop('checked', true);
// カートブロックを更新する
$.ajax({
url: "{{ url('block_cart') }}",
type: 'GET',
dataType: 'html'
}).done(function(response) {
let res = JSON.parse(response);
$('.cart_number').text(res.totalQuantity);
});
}).fail(function(data) {
alert('{{ 'カートへの追加に失敗しました。'|trans }}');
}).always(function(data) {
// Buttonを有効にする
$('.add-cart').prop('disabled', false);
});
});
});
$('.slider').slick({
autoplay: true,
autoplaySpeed: 2000,
dots: false,
loop: true,
slidesToShow: 3,
prevArrow: false,
nextArrow: false,
variableWidth: true,
responsive: [
{
breakpoint: 1179,
settings: {
slidesToShow: 2,
}
},
{
breakpoint: 768,
settings: {
slidesToShow: 1,
}
}]
});
</script>
{% endblock %}
{% block main %}
{{ include('Block/header_shop.twig') }}
<!-- PRODUCT -->
<section class="product">
<div class="flex flex2">
<div class="conts">
<p class="txtCustom">{{ shop | upper }}</p>
<p class="txt1">{% if Brand %}{{ Brand.name }}{% endif %}</p>
<p class="txtBig">{{ Product.name }}</p>
{{ Product.getFormattedPriceForDetail | raw }}
<hr class="hr1">
<div class="txt3">{{ Product.description_detail | raw | nl2br }}</div>
<div class="txt3">{{ Product.description_list | raw | nl2br }}</div>
{% if Product.not_for_sale %}
<div>
<p class="inquiry_msg">この商品は、ブランドの意向によりお問い合わせのみの受付となります。<br>以下の「お問い合わせ」ボタンからご連絡ください。</p>
<a href="{{ url('contact', { product_id : Product.id }) }}" class="button inquiry_btn">お問い合わせ</a>
</div>
{% else %}
<form action="{{ url('product_add_cart', {id:Product.id}) }}" method="post" id="form1" name="form1">
{% if Product.stock_find %}
<div class="pulldown">
{% if form.classcategory_id1 is defined %}
{{ form_widget(form.classcategory_id1) }}
{{ form_errors(form.classcategory_id1) }}
{% if form.classcategory_id2 is defined %}
{{ form_widget(form.classcategory_id2, {'attr': {'class': 'pulldown2'}}) }}
{{ form_errors(form.classcategory_id2) }}
{% endif %}
{% endif %}
{{ form_widget(form.quantity) }}
</div>
<div class="flex">
<div>{{ form_widget(form.quantity) }}</div>
<div>
<button type="submit" class="button add-cart">ADD TO CART</button>
</div>
<div>
{% if is_favorite == false %}
<a href="#" class="heart" id="favorite_add">
<svg class="icon" xmlns="http://www.w3.org/2000/svg" width="19.82" height="17.41" viewBox="0 0 19.82 17.41">
<path d="M694.26,280.12a5,5,0,0,0-3.56-1.4,5.43,5.43,0,0,0-3.55,1.4l-.89,1-.89-1a4.94,4.94,0,0,0-7,7l1,1,7,7,7-7,1-1a5,5,0,0,0,1.4-3.56A4.54,4.54,0,0,0,694.26,280.12Z" transform="translate(-676.46 -278.19)"></path>
</svg>
</a>
{% else %}
<a href="#" class="heart" id="favorite_add_finished">
<svg width="21" height="18" viewBox="0 0 21 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.2966 2.42816C17.408 1.53953 16.1385 1.03174 14.7421 1.03174C13.4726 1.03174 12.2031 1.53953 11.1876 2.42816L10.2989 3.44374L9.41029 2.42816C7.50607 0.523946 4.33238 0.523946 2.42816 2.42816C0.523946 4.33238 0.523946 7.50607 2.42816 9.41029L3.44374 10.4259L10.4259 17.408L17.408 10.4259L18.4236 9.41029C19.3122 8.52165 19.82 7.25218 19.82 5.85575C19.82 4.45933 19.3122 3.44374 18.2966 2.42816Z" fill="black" stroke="#040000" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
{% endif %}
</div>
</div>
{% else %}
<div class="ec-productRole__btn">
<button type="button" class="ec-blockBtn--action" disabled="disabled">
{{ 'ただいま品切れ中です。'|trans }}
</button>
</div>
{% endif %}
{{ form_rest(form) }}
</form>
{% endif %}
<div class="ec-modal">
<input type="checkbox" id="ec-modal-checkbox" class="checkbox">
<div class="ec-modal-overlay">
<label for="ec-modal-checkbox" class="ec-modal-overlay-close"></label>
<div class="ec-modal-wrap">
<label for="ec-modal-checkbox" class="ec-modal-close"><span class="ec-icon"><img src="{{ asset('assets/icon/cross-dark.svg') }}" alt=""/></span></label>
<div id="ec-modal-header" class="text-center">{{ 'カートに追加しました。'|trans }}</div>
<div class="ec-modal-box">
<div class="ec-role">
<label for="ec-modal-checkbox" class="ec-inlineBtn--cancel">{{ 'お買い物を続ける'|trans }}</label>
<a href="{{ url('cart') }}" class="ec-inlineBtn--action">{{ 'カートへ進む'|trans }}</a>
</div>
</div>
</div>
</div>
</div>
{% if BaseInfo.option_favorite_product %}
<form action="{{ url('product_add_favorite', {id:Product.id}) }}" method="post" id="add_favorite_form"></form>
{% endif %}
</div>
<div class="conts2" id="conts2">
<img src="{{ asset(Product.main_list_image|no_image_product, 'save_image') }}" alt="" name="ph01">
<div class="flex picSubWrap">
{% for ProductImage in Product.ProductImage %}
<div>
<a href="javascript:document.ph01.src = '{{ asset(ProductImage, 'save_image') }}'; void(0);">
<img src="{{ asset(ProductImage, 'save_image') }}" alt="" class="picSub {% if not loop.first %}ml{% endif %}">
</a>
</div>
{% endfor %}
</div>
</div>
</div>
</section>
<!-- BRAND INFO -->
<section class="brandInfo">
<div class="flex flex3">
<div class="conts3">
<h2 class="h2Normal">BRAND INFO</h2>
{% if Brand %}
<p class="txtBig2">{{ Brand.name }}</p>
<div class="txt5">{{ Brand.description | raw }}</div>
{% endif %}
</div>
<div class="bgColor2">
<div class="conts4">
<p class="txtBold">不正購入防止について</p>
<p class="txt4 mb30">店舗側で不正購入の可能性が高いと判断したお客様には、注文内容をお電話にて確認させていただく場合がございます。</p>
<p class="txtBold">キャンセルについて</p>
<p class="txt4 mb30">ご注文完了後(決済後)のキャンセルは基本的に承ることができません。<br>
商品発送後に商品の初期不良やご注文内容と相違があったなどの「やむを得ない理由」であった場合のみ返品をお受けしております。</p>
<p class="txtBold">交換・返品について</p>
<p class="txt4 mb30">ご注文をいただきました商品が不良品の場合、またはご注文商品と異なる商品が届けられた場合には、商品の返品•交換にて対応させていただきます。「イメージと異なっていた」「ご注文商品を間違えてしまった」などのお客様都合による返品•交換は承っておりません。予めご了承下さい。 また、返品•交換の際のお約束として、商品ご返送の前に必ずお電話かメールにてご連絡をお願いいたします。</p>
<p class="txtBold">お取り置きについて</p>
<p class="txt4 mb30">
実店舗で試着してから購入したいというお客様に限り、1週間のお取り置きが可能です。<br>
ご利用の際は一度カートに商品を入れ、「お取り置き」の項目を選んで注文確定まで進んでください。<br>
<注意事項><br>
・県外にお住まいのお客様のご注文に関しましては、ご確認のためお電話させていただきます。<br>
・取り置き期限は1週間です。<br>
・期限を過ぎた商品は自動的にキープから外れます。<br>
・期限の延長はお受けできませんので予めご了承ください。<br>
・お支払いは店頭でお願いいたします。
</p>
<p class="txtBold">在庫管理について</p>
<p class="txt4">実店舗と在庫共有しているため、ご注文、決済完了後でも商品がご用意できない場合がございます。 その際、決済のキャンセル等のご対応をさせて頂きますので予めご了承ください。</p>
</div>
</div>
</div>
</section>
<!-- SHOP INFO -->
<section class="conts5">
<h2 class="h2Normal">STORE INFO</h2>
<div>
<img src="{{ asset("assets/img/common/#{shop}_txt.svg") }}" alt="">
<p class="logoTxt">MATSUMOTO</p>
{% if shop == "dialogue" %}
<p class="txt5">390-0811 長野県松本市中央1-11-23 1F + 2F<br>1-11-23 1F + 2F CHUO<br class="brSp"> MATSUMOTO-SHI,NAGANO,390-0811 JAPAN<br>TEL / FAX 0263-32-3231 +81 (0)263 32 3231</p>
{% elseif shop == "ensemble" %}
<p class="txt5">390-0811 長野県松本市中央1-11-23 3F<br>1-11-23 3F CHUO<br class="brSp"> MATSUMOTO-SHI,NAGANO,390-0811 JAPAN<br>TEL / FAX 0263-32-3231 +81 (0)263 32 3231</p>
{% elseif shop == "ensembledeux" %}
<p class="txt5">390-0811 長野県松本市中央1-11-23 3F<br>1-11-23 3F CHUO<br class="brSp"> MATSUMOTO-SHI,NAGANO,390-0811 JAPAN<br>TEL / FAX 0263-32-3231 +81 (0)263 32 3231</p>
{% elseif shop == "flair" %}
<p class="txt5">390-0811 長野県松本市中央3-2-17-2F<br>3-2-17-2F CHUO<br class="brSp"> MATSUMOTO-SHI,NAGANO,390-0811 JAPAN<br>TEL / FAX 0263-31-3848 +81 (0)263 31 3848</p>
{% elseif shop == "gathering" %}
<p class="txt5">380-0826 長野県長野市北石堂町1436-1<br>1436-1 KITAISHIDO<br class="brSp"> NAGANO-SHI,NAGANO,380-0826 JAPAN<br>TEL / FAX 026-217-1584 +81 (0)26 217 1584</p>
{% else %}
<p class="txt5">390-0811 長野県松本市中央1-11-23<br>1-11-23 CHUO<br class="brSp"> MATSUMOTO,NAGANO,390-0811 JAPAN<br>TEL / FAX_0263-31-3145 +81 (0)263 31 3145</p>
{% endif %}
</div>
<div class="flex contactWrap">
<div>
<hr class="hr3">
</div>
<div>
<a href="{{ url('contact') }}">
<p class="txt6">CONTACT</p>
</a>
</div>
</div>
</section>
{{ include('Block/recommend_product_block.twig') }}
{% endblock %}