{#
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.twig' %}
{% block javascript %}
<script></script>
<style>
.bf-hero-note { font-size: 14px; line-height: 1.7; margin-top: 12px; }
.bf-count { font-weight: 700; font-size: 42px; letter-spacing: .04em; color:#dd0000; }
.bf-cta a { text-decoration: underline; }
.bf-subtle { font-size: 12px; color: #666; }
.bf-section { padding: 24px 0; text-align: center; }
</style>
{% endblock %}
{% block main %}
{% include('@CustomerReview42/Block/customer_review4_recommend_css.twig') %}
{# ==== Phase gating (JST) ==== #}
{% set tz = 'Asia/Tokyo' %}
{# 開始/終了の日時はここだけで管理 #}
{% set startAt = "2026-02-12 11:00:00"|date("U", tz) %}
{% set endAt = "2026-02-19 18:00:00"|date("U", tz) %}
{% set nowTs = "now"|date("U", tz) %}
{# プレビュー強制切替(?phase=pre|live|post) #}
{% set phaseOverride = app.request is defined and app.request.query.get('phase') ? app.request.query.get('phase') : null %}
{% set phase = 'pre' %}
{% if nowTs >= startAt and nowTs < endAt %}
{% set phase = 'live' %}
{% elseif nowTs >= endAt %}
{% set phase = 'post' %}
{% endif %}
{% if phaseOverride in ['pre','live','post'] %}
{% set phase = phaseOverride %}
{% endif %}
<div class="main-container category-page" id="xmas2025">
<div class="breadcrumbs">
<div class="container">
<ul itemscope="" itemtype="http://schema.org/BreadcrumbList">
<li class="home" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<a itemprop="item" href="{{ url('homepage') }}" title="トップページ"><span itemprop="name" style="padding:0">トップページ</span></a>
<meta itemprop="position" content="1">
<span>></span>
</li>
<li><strong>バレンタインセール2026</strong></li>
</ul>
</div>
</div>
<div class="col-main">
{# =========================
PRE (開始前)
========================= #}
{% if phase == 'pre' %}
<div class="bf-section">
<div class="container">
<p class="bf-hero-note">
<strong>全アネロス14%OFF。バレンタインはドライオーガズムと共に</strong>
</p>
<p class="bf-subtle">1週間限定会員専用セール!</p>
<div class="bf-count" id="bf-count" aria-live="polite">--:--:--</div>
</div>
</div>
<div class="container">
{#<h1 class="category-title">バレンタインセール2026</h1>#}
<img src="{{ asset('aneros/img/category/2026-vday-sale/2026-vday-sale-list-pre.jpg') }}" alt="バレンタインセール2026" style="max-width:1000px; width:100%">
</div>
{# 予告期間はインデックスさせない場合 #}
<meta name="robots" content="noindex,follow">
<script>
(function () {
var target = new Date("2026-02-12T11:00:00+09:00").getTime();
var el = document.getElementById("bf-count");
function tick() {
var diff = target - Date.now();
if (diff <= 0) {
el.textContent = "00:00:00";
setTimeout(function(){ location.reload(); }, 600);
return;
}
var h = Math.floor(diff/3600000),
m = Math.floor((diff%3600000)/60000),
s = Math.floor((diff%60000)/1000);
el.textContent =
String(h).padStart(2,'0') + ":" +
String(m).padStart(2,'0') + ":" +
String(s).padStart(2,'0');
}
tick(); setInterval(tick, 1000);
})();
</script>
{# =========================
LIVE
========================= #}
{% elseif phase == 'live' %}
<div class="container">
{#<h1 class="category-title">バレンタインセール2026</h1>#}
<img src="{{ asset('aneros/img/category/2026-vday-sale/2026-vday-sale-list.jpg') }}" alt="バレンタインセール2026" style="max-width:1000px; width:100%">
</div>
<div class="category-info" style="margin-top:0px">
<div class="container">
<div class="category-description">
<span style="font-weight:bold; font-size: 14px;">対象商品:</span>
</div>
</div>
</div>
{% set Category = repository("Eccube\\Entity\\Category").find(25) %}
{% set Order = repository("Eccube\\Entity\\Master\\ProductListOrderBy").find(0) %}
{%
set Products = repository('Eccube\\Entity\\Product')
.getQueryBuilderBySearchData({'category_id':Category, 'orderby':Order})
.getQuery()
.getResult()
%}
<div class="ec-shelfRole container">
<ul class="ec-shelfGrid flexbox">
{% for Product in Products %}
{% set campaignProduct, newProduct, limitedProduct = false, false, false %}
{% for ProductTag in Product.ProductTag %}
{% if ProductTag.Tag.id == 100 %}
{% set campaignProduct = true %}
{% elseif ProductTag.Tag.id == 1 %}
{% set newProduct = true %}
{% elseif ProductTag.Tag.id == 3 %}
{% set limitedProduct = true %}
{% endif %}
{% endfor %}
<li class="ec-shelfGrid__item flexbox">
<a href="{{ url('product_detail', {'id': Product.id}) }}">
{% if campaignProduct == true %}
<p class="ec-shelfGrid__item-image campaignProduct">
{% elseif newProduct == true %}
<p class="ec-shelfGrid__item-image newProduct">
{% elseif limitedProduct == true %}
<p class="ec-shelfGrid__item-image limitedProduct">
{% else %}
<p class="ec-shelfGrid__item-image">
{% endif %}
<img src="{{ asset(Product.main_list_image|no_image_product, 'save_image') }}" alt="{{ Product.name }}">
</p>
<p>{{ Product.name }}</p>
</a>
<!-- REVIEW AREA -->
{% import('@CustomerReview42/Block/customer_review4_recommend_macro.twig') as recommend_macro %}
{% set review_list = repository('Plugin\\CustomerReview42\\Entity\\CustomerReviewTotal').getRecommend(Product.id) %}
{% set reviewer_total = 0 %}
{% set review_total_point = 0 %}
{% set count = 5 %}
{% for i in review_list %}
{% set reviewer_total = reviewer_total + i %}
{% set review_total_point = review_total_point + i * count %}
{% set count = count - 1 %}
{% endfor %}
{% set review_point = reviewer_total == 0 ? 0 : (review_total_point / reviewer_total) %}
{% if 0 < reviewer_total %}
<div id="plg_customer_review{{Product.id}}" class="review-layoutRole product_list">
<h3 class="review_score" data-id="{{ Product.id }}" data-avg="{{ review_point }}" data-num="{{ reviewer_total }}" data-starsize="22" data-mstarsize="14" data-imgbase="{{ asset('aneros/img/products/') }}">
<span class="review_all_score_title"></span>
<span class="review_all_score_image" style="display: inline-block"></span>
<span class="review_all_score"><a href="{{ url('product_detail', {'id': Product.id}) }}#review_area"></a></span>
</h3>
</div>
{% endif %}
<script>
$(function () {
if ( $('#plg_customer_review_anchor{{Product.id}}').length) {
$('#plg_customer_review{{Product.id}}').insertAfter($('#plg_customer_review_anchor{{Product.id}}'));
} else if ( $('#productForm{{Product.id}}').length) {
$('#plg_customer_review{{Product.id}}').insertBefore($('#productForm{{Product.id}}'));
} else {
$('#plg_customer_review{{Product.id}}').hide();
}
});
</script>
<!-- REVIEW AREA END -->
<div class="bottom-box flexbox" id="productForm{{ Product.id }}">
<div class="price-box">
<span class="price">
<div class="normal_price" id="product-normal-price-{{ Product.id }}">
{% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin != 0 %}
{% if Product.hasProductClass %}
{% if Product.getPrice01Min == Product.getPrice01Max %}
<span class="price">{{ Product.getPrice01IncTaxMin|price }}<span class="inctax"> (税込)</span></span>
{% else %}
<span class="price">{{ Product.getPrice01IncTaxMin|price }}<!-- ~ {{ Product.getPrice01IncTaxMax|price }}--><span class="inctax"> (税込)</span></span>
{% endif %}
{% else %}
<span class="price">{{ Product.getPrice01IncTaxMin|price }}<span class="inctax"> (税込)</span></span>
{% endif %}
{% endif %}
</div>
<div class="sale_price" id="product-price-{{ Product.id }}">
{% if Product.hasProductClass %}
{% if Product.getPrice02Min == Product.getPrice02Max %}
<span class="price">{{ Product.getPrice02IncTaxMin|price }}<span class="inctax"> (税込)</span></span>
{% else %}
<span class="price">{{ Product.getPrice02IncTaxMin|price }}<!-- ~ {{ Product.getPrice02IncTaxMax|price }}--><span class="inctax"> (税込)</span></span>
{% endif %}
{% else %}
<span class="price">{{ Product.getPrice02IncTaxMin|price }}<span class="inctax"> (税込)</span></span>
{% endif %}
</div>
</span>
</div>
<div class="actions">
{% if Product.stock_find %}
{% if Product.hasProductClass %}
<a class="button btn-cart learn-more" title="商品詳細" href="{{ url('product_detail', {'id': Product.id}) }}">
<span>
<span>商品詳細</span>
</span>
</a>
{% else %}
<button type="button" title="カゴに入れる" class="button btn-cart one-click-add-cart"
data-action="{{ url('product_add_cart', {id:Product.id}) }}"
data-product_id="{{ Product.id }}" data-product_name="{{ Product.name }}" data-product_img="{{ asset(Product.main_list_image|no_image_product, 'save_image') }}"
data-product_class="{{ Product.ProductClasses[0].id }}"
data-token="{{ csrf_token('Eccube\\Form\\Type\\AddCartType') }}">
<span>カゴに入れる</span>
</button>
{% endif %}
{% else %}
{% set arrivemail = true %}
{% for ProductTag in Product.ProductTag %}
{% if ProductTag.Tag.id == 99 %}
{% set arrivemail = false %}
{% endif %}
{% endfor %}
{% if arrivemail %}
<button type="button" data-productid="{{ Product.id }}" data-productname="{{ Product.name }}" title="入荷お知らせ" class="button btn-cart add-to-mail">
<span>入荷お知らせ</span>
</button>
{% else %}
<button type="button" title="在庫切れ" class="button btn-cart add-to-cart-out">
<span>在庫切れ</span>
</button>
{% endif %}
{% endif %}
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
{#
<div class="container">
<p><b>ヒリックスシンVも14%OFF</b></p>
<img src="{{ asset('aneros/img/category/2026-vday-sale/2026-vday-sale-hsv.jpg') }}" alt="ヒリックスシンVも14%OFF" style="max-width:1000px; width:100%">
</div>
#}
{# =========================
POST (終了後)
========================= #}
{% else %}
<div class="container">
{#<h1 class="category-title">バレンタインセール2026</h1>#}
<img src="{{ asset('aneros/img/category/2026-vday-sale/2026-vday-sale-list-post.jpg') }}" alt="バレンタインセール2026にご参加ありがとうございます" style="max-width:1000px; width:100%">
</div>
<div class="bf-section">
<div class="container">
<p><strong>バレンタインセール2026は終了いたしました。たくさんのご参加、ありがとうございました。</strong></p>
<p class="bf-hero-note">次回の先行案内や会員限定情報をご希望の方は、<a href="{{ url('entry') }}">会員登録</a>をご利用ください。</p>
</div>
</div>
{% endif %}
</div>
{{ include('Block/add_to_cart.twig') }}
<div class="swooth-wrapper grey-swooth"></div>
</div>
{% endblock %}