会員のみメッセージ表示

Created Diff never expires
0 removals
381 lines
7 additions
388 lines
{#
{#
This file is part of EC-CUBE
This file is part of EC-CUBE


Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.


http://www.ec-cube.co.jp/
http://www.ec-cube.co.jp/


For the full copyright and license information, please view the LICENSE
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
file that was distributed with this source code.
#}
#}
{% extends 'default_frame.twig' %}
{% extends 'default_frame.twig' %}


{% set body_class = 'product_page' %}
{% set body_class = 'product_page' %}


{% block stylesheet %}
{% block stylesheet %}
<style>
<style>


.slick-slider {
.slick-slider {
margin-bottom: 30px;
margin-bottom: 30px;
}
}


.slick-dots {
.slick-dots {
position: absolute;
position: absolute;
bottom: -45px;
bottom: -45px;
display: block;
display: block;
width: 100%;
width: 100%;
padding: 0;
padding: 0;
list-style: none;
list-style: none;
text-align: center;
text-align: center;
}
}


.slick-dots li {
.slick-dots li {
position: relative;
position: relative;
display: inline-block;
display: inline-block;
width: 20px;
width: 20px;
height: 20px;
height: 20px;
margin: 0 5px;
margin: 0 5px;
padding: 0;
padding: 0;


cursor: pointer;
cursor: pointer;
}
}


.slick-dots li button {
.slick-dots li button {
font-size: 0;
font-size: 0;
line-height: 0;
line-height: 0;
display: block;
display: block;
width: 20px;
width: 20px;
height: 20px;
height: 20px;
padding: 5px;
padding: 5px;
cursor: pointer;
cursor: pointer;
color: transparent;
color: transparent;
border: 0;
border: 0;
outline: none;
outline: none;
background: transparent;
background: transparent;
}
}


.slick-dots li button:hover,
.slick-dots li button:hover,
.slick-dots li button:focus {
.slick-dots li button:focus {
outline: none;
outline: none;
}
}


.slick-dots li button:hover:before,
.slick-dots li button:hover:before,
.slick-dots li button:focus:before {
.slick-dots li button:focus:before {
opacity: 1;
opacity: 1;
}
}


.slick-dots li button:before {
.slick-dots li button:before {
content: " ";
content: " ";
line-height: 20px;
line-height: 20px;
position: absolute;
position: absolute;
top: 0;
top: 0;
left: 0;
left: 0;
width: 12px;
width: 12px;
height: 12px;
height: 12px;
text-align: center;
text-align: center;
opacity: .25;
opacity: .25;
background-color: black;
background-color: black;
border-radius: 50%;
border-radius: 50%;


}
}


.slick-dots li.slick-active button:before {
.slick-dots li.slick-active button:before {
opacity: .75;
opacity: .75;
background-color: black;
background-color: black;
}
}


.slick-dots li button.thumbnail img {
.slick-dots li button.thumbnail img {
width: 0;
width: 0;
height: 0;
height: 0;
}
}


</style>
</style>
{% endblock %}
{% endblock %}


{% block javascript %}
{% block javascript %}
<script>
<script>
eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
eccube.classCategories = {{ class_categories_as_json(Product)|raw }};


// 規格2に選択肢を割り当てる。
// 規格2に選択肢を割り当てる。
function fnSetClassCategories(form, classcat_id2_selected) {
function fnSetClassCategories(form, classcat_id2_selected) {
var $form = $(form);
var $form = $(form);
var product_id = $form.find('input[name=product_id]').val();
var product_id = $form.find('input[name=product_id]').val();
var $sele1 = $form.find('select[name=classcategory_id1]');
var $sele1 = $form.find('select[name=classcategory_id1]');
var $sele2 = $form.find('select[name=classcategory_id2]');
var $sele2 = $form.find('select[name=classcategory_id2]');
eccube.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected);
eccube.setClassCategories($form, product_id, $sele1, $sele2, classcat_id2_selected);
}
}


{% if form.classcategory_id2 is defined %}
{% if form.classcategory_id2 is defined %}
fnSetClassCategories(
fnSetClassCategories(
$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
);
);
{% elseif form.classcategory_id1 is defined %}
{% elseif form.classcategory_id1 is defined %}
eccube.checkStock($('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
eccube.checkStock($('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
{% endif %}
{% endif %}
</script>
</script>
<script>
<script>
$(function() {
$(function() {
// bfcache無効化
// bfcache無効化
$(window).bind('pageshow', function(event) {
$(window).bind('pageshow', function(event) {
if (event.originalEvent.persisted) {
if (event.originalEvent.persisted) {
location.reload(true);
location.reload(true);
}
}
});
});


$('.item_visual').slick({
$('.item_visual').slick({
dots: false,
dots: false,
arrows: false,
arrows: false,
responsive: [{
responsive: [{
breakpoint: 768,
breakpoint: 768,
settings: {
settings: {
dots: true
dots: true
}
}
}]
}]
});
});


$('.slideThumb').on('click', function() {
$('.slideThumb').on('click', function() {
var index = $(this).attr('data-index');
var index = $(this).attr('data-index');
$('.item_visual').slick('slickGoTo', index, false);
$('.item_visual').slick('slickGoTo', index, false);
})
})
});
});
</script>
</script>
<script>
<script>
$(function() {
$(function() {
$('.add-cart').on('click', function(event) {
$('.add-cart').on('click', function(event) {
{% if form.classcategory_id1 is defined %}
{% if form.classcategory_id1 is defined %}
// 規格1フォームの必須チェック
// 規格1フォームの必須チェック
if ($('#classcategory_id1').val() == '__unselected' || $('#classcategory_id1').val() == '') {
if ($('#classcategory_id1').val() == '__unselected' || $('#classcategory_id1').val() == '') {
$('#classcategory_id1')[0].setCustomValidity('{{ 'front.product.product_class_unselected'|trans }}');
$('#classcategory_id1')[0].setCustomValidity('{{ 'front.product.product_class_unselected'|trans }}');
return true;
return true;
} else {
} else {
$('#classcategory_id1')[0].setCustomValidity('');
$('#classcategory_id1')[0].setCustomValidity('');
}
}
{% endif %}
{% endif %}


{% if form.classcategory_id2 is defined %}
{% if form.classcategory_id2 is defined %}
// 規格2フォームの必須チェック
// 規格2フォームの必須チェック
if ($('#classcategory_id2').val() == '__unselected' || $('#classcategory_id2').val() == '') {
if ($('#classcategory_id2').val() == '__unselected' || $('#classcategory_id2').val() == '') {
$('#classcategory_id2')[0].setCustomValidity('{{ 'front.product.product_class_unselected'|trans }}');
$('#classcategory_id2')[0].setCustomValidity('{{ 'front.product.product_class_unselected'|trans }}');
return true;
return true;
} else {
} else {
$('#classcategory_id2')[0].setCustomValidity('');
$('#classcategory_id2')[0].setCustomValidity('');
}
}
{% endif %}
{% endif %}


// 個数フォームのチェック
// 個数フォームのチェック
if ($('#quantity').val() < 1) {
if ($('#quantity').val() < 1) {
$('#quantity')[0].setCustomValidity('{{ 'front.product.invalid_quantity'|trans }}');
$('#quantity')[0].setCustomValidity('{{ 'front.product.invalid_quantity'|trans }}');
return true;
return true;
} else {
} else {
$('#quantity')[0].setCustomValidity('');
$('#quantity')[0].setCustomValidity('');
}
}


event.preventDefault();
event.preventDefault();
$form = $('#form1');
$form = $('#form1');
$.ajax({
$.ajax({
url: $form.attr('action'),
url: $form.attr('action'),
type: $form.attr('method'),
type: $form.attr('method'),
data: $form.serialize(),
data: $form.serialize(),
dataType: 'json',
dataType: 'json',
beforeSend: function(xhr, settings) {
beforeSend: function(xhr, settings) {
// Buttonを無効にする
// Buttonを無効にする
$('.add-cart').prop('disabled', true);
$('.add-cart').prop('disabled', true);
}
}
}).done(function(data) {
}).done(function(data) {
// レスポンス内のメッセージをalertで表示
// レスポンス内のメッセージをalertで表示
$.each(data.messages, function() {
$.each(data.messages, function() {
$('#ec-modal-header').html(this);
$('#ec-modal-header').html(this);
});
});


$('#ec-modal-checkbox').prop('checked', true);
$('#ec-modal-checkbox').prop('checked', true);


// カートブロックを更新する
// カートブロックを更新する
$.ajax({
$.ajax({
url: "{{ url('block_cart') }}",
url: "{{ url('block_cart') }}",
type: 'GET',
type: 'GET',
dataType: 'html'
dataType: 'html'
}).done(function(html) {
}).done(function(html) {
$('.ec-headerRole__cart').html(html);
$('.ec-headerRole__cart').html(html);
});
});
}).fail(function(data) {
}).fail(function(data) {
alert('{{ 'front.product.add_cart_error'|trans }}');
alert('{{ 'front.product.add_cart_error'|trans }}');
}).always(function(data) {
}).always(function(data) {
// Buttonを有効にする
// Buttonを有効にする
$('.add-cart').prop('disabled', false);
$('.add-cart').prop('disabled', false);
});
});
});
});
});
});
</script>
</script>
{% endblock %}
{% endblock %}


{% block main %}
{% block main %}
<div class="ec-productRole">
<div class="ec-productRole">
<div class="ec-grid2">
<div class="ec-grid2">
<div class="ec-grid2__cell">
<div class="ec-grid2__cell">
<div class="ec-sliderItemRole">
<div class="ec-sliderItemRole">


<div class="item_visual">
<div class="item_visual">
{% for ProductImage in Product.ProductImage %}
{% for ProductImage in Product.ProductImage %}
<div class="slide-item"><img src="{{ asset(ProductImage, 'save_image') }}"></div>
<div class="slide-item"><img src="{{ asset(ProductImage, 'save_image') }}"></div>
{% else %}
{% else %}
<div class="slide-item"><img src="{{ asset(''|no_image_product, 'save_image') }}"/></div>
<div class="slide-item"><img src="{{ asset(''|no_image_product, 'save_image') }}"/></div>
{% endfor %}
{% endfor %}
</div>
</div>
<div class="item_nav">
<div class="item_nav">
{% for ProductImage in Product.ProductImage %}
{% for ProductImage in Product.ProductImage %}
<div class="slideThumb" data-index="{{ loop.index0 }}"><img src="{{ asset(ProductImage, 'save_image') }}"></div>
<div class="slideThumb" data-index="{{ loop.index0 }}"><img src="{{ asset(ProductImage, 'save_image') }}"></div>
{% endfor %}
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="ec-grid2__cell">
<div class="ec-grid2__cell">
<div class="ec-productRole__profile">
<div class="ec-productRole__profile">
{# 商品名 #}
{# 商品名 #}
<div class="ec-productRole__title">
<div class="ec-productRole__title">
<h2 class="ec-headingTitle">{{ Product.name }}</h2>
<h2 class="ec-headingTitle">{{ Product.name }}</h2>
</div>
</div>
{# タグ #}
{# タグ #}
<ul class="ec-productRole__tags">
<ul class="ec-productRole__tags">
{% for Tag in Product.Tags %}
{% for Tag in Product.Tags %}
<li class="ec-productRole__tag tag_{{ Tag.id }}">{{ Tag }}</li>
<li class="ec-productRole__tag tag_{{ Tag.id }}">{{ Tag }}</li>
{% endfor %}
{% endfor %}
</ul>
</ul>
{# 通常価格 #}
{# 通常価格 #}
{% if Product.hasProductClass -%}
{% if Product.hasProductClass -%}
<div class="ec-productRole__priceRegular">
<div class="ec-productRole__priceRegular">
{% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
{% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
<span class="ec-productRole__priceRegularPrice">{{ 'front.product.normal_price'|trans }}:<span class="price01-default">{{ Product.getPrice01IncTaxMin|price }}</span></span>
<span class="ec-productRole__priceRegularPrice">{{ 'front.product.normal_price'|trans }}:<span class="price01-default">{{ Product.getPrice01IncTaxMin|price }}</span></span>
<span class="ec-productRole__priceRegularTax">{{ 'common.tax_include'|trans }}</span>
<span class="ec-productRole__priceRegularTax">{{ 'common.tax_include'|trans }}</span>
{% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
{% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
<span class="ec-productRole__priceRegularPrice">{{ 'front.product.normal_price'|trans }}:<span class="price01-default">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
<span class="ec-productRole__priceRegularPrice">{{ 'front.product.normal_price'|trans }}:<span class="price01-default">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
<span class="ec-productRole__priceRegularTax">{{ 'common.tax_include'|trans }}</span>
<span class="ec-productRole__priceRegularTax">{{ 'common.tax_include'|trans }}</span>
{% endif %}
{% endif %}
</div>
</div>
{% else %}
{% else %}
{% if Product.getPrice01Max is not null %}
{% if Product.getPrice01Max is not null %}
<span class="ec-productRole__priceRegularPrice">{{ 'front.product.normal_price'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
<span class="ec-productRole__priceRegularPrice">{{ 'front.product.normal_price'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
<span class="ec-productRole__priceRegularTax">{{ 'common.tax_include'|trans }}</span>
<span class="ec-productRole__priceRegularTax">{{ 'common.tax_include'|trans }}</span>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{# 販売価格 #}
{# 販売価格 #}
<div class="ec-productRole__price">
<div class="ec-productRole__price">
{% if Product.hasProductClass -%}
{% if Product.hasProductClass -%}
{% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
{% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
<div class="ec-price">
<div class="ec-price">
<span class="ec-price__price price02-default">{{ Product.getPrice02IncTaxMin|price }}</span>
<span class="ec-price__price price02-default">{{ Product.getPrice02IncTaxMin|price }}</span>
<span class="ec-price__tax">{{ 'common.tax_include'|trans }}</span>
<span class="ec-price__tax">{{ 'common.tax_include'|trans }}</span>
</div>
</div>
{% else %}
{% else %}
<div class="ec-price">
<div class="ec-price">
<span class="ec-price__price price02-default">{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}</span>
<span class="ec-price__price price02-default">{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}</span>
<span class="ec-price__tax">{{ 'common.tax_include'|trans }}</span>
<span class="ec-price__tax">{{ 'common.tax_include'|trans }}</span>
</div>
</div>
{% endif %}
{% endif %}
{% else %}
{% else %}
<div class="ec-price">
<div class="ec-price">
<span class="ec-price__price">{{ Product.getPrice02IncTaxMin|price }}</span>
<span class="ec-price__price">{{ Product.getPrice02IncTaxMin|price }}</span>
<span class="ec-price__tax">{{ 'common.tax_include'|trans }}</span>
<span class="ec-price__tax">{{ 'common.tax_include'|trans }}</span>
{% if is_granted('ROLE_USER') %}
<div class="ec-color-red ec-font-size-2">
{{ app.user.name01 }}様いつもご利用ありがとうございます。<br>
会員のみなさまにお試しセットをプレゼントしています!
</div>
{% endif %}
</div>
</div>
{% endif %}
{% endif %}
</div>
</div>
{# 商品コード #}
{# 商品コード #}
{% if Product.code_min is not empty %}
{% if Product.code_min is not empty %}
<div class="ec-productRole__code">
<div class="ec-productRole__code">
{{ 'front.product.code'|trans }}: <span class="product-code-default">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
{{ 'front.product.code'|trans }}: <span class="product-code-default">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
</div>
</div>
{% endif %}
{% endif %}
{# 関連カテゴリ #}
{# 関連カテゴリ #}
{% if Product.ProductCategories is not empty %}
{% if Product.ProductCategories is not empty %}
<div class="ec-productRole__category">
<div class="ec-productRole__category">
<div>{{ 'front.product.related_category'|trans }}</div>
<div>{{ 'front.product.related_category'|trans }}</div>
{% for ProductCategory in Product.ProductCategories %}
{% for ProductCategory in Product.ProductCategories %}
<ul>
<ul>
<li>
<li>
{% for Category in ProductCategory.Category.path %}
{% for Category in ProductCategory.Category.path %}
<a href="{{ url('product_list') }}?category_id={{ Category.id }}">{{ Category.name }}</a> {%- if loop.last == false %}
<a href="{{ url('product_list') }}?category_id={{ Category.id }}">{{ Category.name }}</a> {%- if loop.last == false %}
<span>></span>{% endif -%}
<span>></span>{% endif -%}
{% endfor %}
{% endfor %}
</li>
</li>
</ul>
</ul>
{% endfor %}
{% endfor %}
</div>
</div>
{% endif %}
{% endif %}
<form action="{{ url('product_add_cart', {id:Product.id}) }}" method="post" id="form1" name="form1">
<form action="{{ url('product_add_cart', {id:Product.id}) }}" method="post" id="form1" name="form1">
{% if Product.stock_find %}
{% if Product.stock_find %}
<div class="ec-productRole__actions">
<div class="ec-productRole__actions">
{% if form.classcategory_id1 is defined %}
{% if form.classcategory_id1 is defined %}
<div class="ec-select">
<div class="ec-select">
{{ form_widget(form.classcategory_id1) }}
{{ form_widget(form.classcategory_id1) }}
{{ form_errors(form.classcategory_id1) }}
{{ form_errors(form.classcategory_id1) }}
</div>
</div>
{% if form.classcategory_id2 is defined %}
{% if form.classcategory_id2 is defined %}
<div class="ec-select">
<div class="ec-select">
{{ form_widget(form.classcategory_id2) }}
{{ form_widget(form.classcategory_id2) }}
{{ form_errors(form.classcategory_id2) }}
{{ form_errors(form.classcategory_id2) }}
</div>
</div>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
<div class="ec-numberInput"><span>{{ 'common.quantity'|trans }}</span>
<div class="ec-numberInput"><span>{{ 'common.quantity'|trans }}</span>
{{ form_widget(form.quantity) }}
{{ form_widget(form.quantity) }}
{{ form_errors(form.quantity) }}
{{ form_errors(form.quantity) }}
</div>
</div>
</div>
</div>
<div class="ec-productRole__btn">
<div class="ec-productRole__btn">
<button type="submit" class="ec-blockBtn--action add-cart">
<button type="submit" class="ec-blockBtn--action add-cart">
{{ 'front.product.add_cart'|trans }}
{{ 'front.product.add_cart'|trans }}
</button>
</button>
</div>
</div>
{% else %}
{% else %}
<div class="ec-productRole__btn">
<div class="ec-productRole__btn">
<button type="button" class="ec-blockBtn--action" disabled="disabled">
<button type="button" class="ec-blockBtn--action" disabled="disabled">
{{ 'front.product.out_of_stock'|trans }}
{{ 'front.product.out_of_stock'|trans }}
</button>
</button>
</div>
</div>
{% endif %}
{% endif %}


{{ form_rest(form) }}
{{ form_rest(form) }}
</form>
</form>
<div class="ec-modal">
<div class="ec-modal">
<input type="checkbox" id="ec-modal-checkbox" class="checkbox">
<input type="checkbox" id="ec-modal-checkbox" class="checkbox">
<div class="ec-modal-overlay">
<div class="ec-modal-overlay">
<label for="ec-modal-checkbox" class="ec-modal-overlay-close"></label>
<label for="ec-modal-checkbox" class="ec-modal-overlay-close"></label>
<div class="ec-modal-wrap">
<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>
<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">{{ 'front.product.add_cart_complete'|trans }}</div>
<div id="ec-modal-header" class="text-center">{{ 'front.product.add_cart_complete'|trans }}</div>
<div class="ec-modal-box">
<div class="ec-modal-box">
<div class="ec-role">
<div class="ec-role">
<label for="ec-modal-checkbox" class="ec-inlineBtn--cancel">{{ 'front.product.continue'|trans }}</label>
<label for="ec-modal-checkbox" class="ec-inlineBtn--cancel">{{ 'front.product.continue'|trans }}</label>
<a href="{{ url('cart') }}" class="ec-inlineBtn--action">{{ 'common.go_to_cart'|trans }}</a>
<a href="{{ url('cart') }}" class="ec-inlineBtn--action">{{ 'common.go_to_cart'|trans }}</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% if BaseInfo.option_favorite_product %}
{% if BaseInfo.option_favorite_product %}
<form action="{{ url('product_add_favorite', {id:Product.id}) }}" method="post">
<form action="{{ url('product_add_favorite', {id:Product.id}) }}" method="post">
<div class="ec-productRole__btn">
<div class="ec-productRole__btn">
{% if is_favorite == false %}
{% if is_favorite == false %}
<button type="submit" id="favorite" class="ec-blockBtn--cancel">
<button type="submit" id="favorite" class="ec-blockBtn--cancel">
{{ 'front.product.add_favorite'|trans }}
{{ 'front.product.add_favorite'|trans }}
</button>
</button>
{% else %}
{% else %}
<button type="submit" id="favorite" class="ec-blockBtn--cancel"
<button type="submit" id="favorite" class="ec-blockBtn--cancel"
disabled="disabled">{{ 'front.product.add_favorite_alrady'|trans }}
disabled="disabled">{{ 'front.product.add_favorite_alrady'|trans }}
</button>
</button>
{% endif %}
{% endif %}
</div>
</div>
</form>
</form>
{% endif %}
{% endif %}
<div class="ec-productRole__description">{{ Product.description_detail|raw|nl2br }}
<div class="ec-productRole__description">{{ Product.description_detail|raw|nl2br }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% if Product.freearea %}
{% if Product.freearea %}
<div class="ec-productRole__description">
<div class="ec-productRole__description">
{{ include(template_from_string(Product.freearea)) }}
{{ include(template_from_string(Product.freearea)) }}
</div>
</div>
{% endif %}
{% endif %}
</div>
</div>
{% endblock %}
{% endblock %}