<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
/* __string_template__3d1656759d2f44506edf71d82f27c517 */
class __TwigTemplate_f2739f5b632fb4f7f911e9eb7608884e extends \Eccube\Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'stylesheet' => [$this, 'block_stylesheet'],
'javascript' => [$this, 'block_javascript'],
'main' => [$this, 'block_main'],
];
$this->sandbox = $this->env->getExtension('\Twig\Extension\SandboxExtension');
$this->checkSecurity();
}
protected function doGetParent(array $context)
{
// line 1
return "default_frame.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "__string_template__3d1656759d2f44506edf71d82f27c517"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "__string_template__3d1656759d2f44506edf71d82f27c517"));
// line 3
$context["body_class"] = "product_page";
// line 1
$this->parent = $this->loadTemplate("default_frame.twig", "__string_template__3d1656759d2f44506edf71d82f27c517", 1);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 5
public function block_stylesheet($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheet"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheet"));
// line 6
echo "<style>
\t.slick-slider {
\t\tmargin-bottom: 30px;
\t}
\t.slick-dots {
\t\tposition: absolute;
\t\tbottom: -45px;
\t\tdisplay: block;
\t\twidth: 100%;
\t\tpadding: 0;
\t\tlist-style: none;
\t\ttext-align: center;
\t}
\t.slick-dots li {
\t\tposition: relative;
\t\tdisplay: inline-block;
\t\twidth: 20px;
\t\theight: 20px;
\t\tmargin: 0 5px;
\t\tpadding: 0;
\t\tcursor: pointer;
\t}
\t.slick-dots li button {
\t\tfont-size: 0;
\t\tline-height: 0;
\t\tdisplay: block;
\t\twidth: 20px;
\t\theight: 20px;
\t\tpadding: 5px;
\t\tcursor: pointer;
\t\tcolor: transparent;
\t\tborder: 0;
\t\toutline: none;
\t\tbackground: transparent;
\t}
\t.slick-dots li button:hover,
\t.slick-dots li button:focus {
\t\toutline: none;
\t}
\t.slick-dots li button:hover:before,
\t.slick-dots li button:focus:before {
\t\topacity: 1;
\t}
\t.slick-dots li button:before {
\t\tcontent: \" \";
\t\tline-height: 20px;
\t\tposition: absolute;
\t\ttop: 0;
\t\tleft: 0;
\t\twidth: 12px;
\t\theight: 12px;
\t\ttext-align: center;
\t\topacity: .25;
\t\tbackground-color: black;
\t\tborder-radius: 50%;
\t}
\t.slick-dots li.slick-active button:before {
\t\topacity: .75;
\t\tbackground-color: black;
\t}
\t.slick-dots li button.thumbnail img {
\t\twidth: 0;
\t\theight: 0;
\t}
</style>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
// line 83
public function block_javascript($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascript"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascript"));
echo "<script>
\$(function () {
var noChange = true;
\$('.item_visual').on('afterChange', function (event, slick, currentSlide) {
if (noChange) {
var \$img = \$(\"div[data-index='\" + currentSlide + \"']\").find('img');
if (\$('#classcategory_id1').length > 0) {
\$('#classcategory_id1').val(\"__unselected\");
\$('#classcategory_id1').change();
}
if (\$img.length > 0) {
var class1 = \$img.data('class_category1');
if (class1) {
\$('#classcategory_id1').val(class1);
\$('#classcategory_id1').change();
}
var class2 = \$img.data('class_category2');
if (class2) {
setTimeout(function () {
\$('#classcategory_id2').val(class2);
\$('#classcategory_id2').change();
}, 100);
}
}
} else {
noChange = true;
}
});
if (\$('#classcategory_id1').length > 0 && \$('#classcategory_id2').length > 0) {
\$('#classcategory_id2').change(function () {
var \$this = \$(this);
if (\$this.val()) {
var class1 = \$('#classcategory_id1').val();
if (\$('#apg_product_class_image_thumb-' + class1 + '-' + \$this.val()).length > 0) {
var class2 = \$this.val();
\$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
\$('.item_visual').slick('slickGoTo', \$index);
noChange = false;
}
}
});
";
// line 124
if ((twig_get_attribute($this->env, $this->source, (isset($context["apgProductClassConfig"]) || array_key_exists("apgProductClassConfig", $context) ? $context["apgProductClassConfig"] : (function () { throw new RuntimeError('Variable "apgProductClassConfig" does not exist.', 124, $this->source); })()), "getImageType", [], "method", false, false, true, 124) == twig_constant("Plugin\\ApgProductClassImage42\\Domain\\ClassImageType::CLASS_IMAGE1_ONLY"))) {
// line 125
echo " \$('#classcategory_id1').change(function () {
var \$this = \$(this);
if (\$this.val() != \"__unselected\") {
var class1 = \$this.val();
if (\$(\"img[data-class_category1='\" + class1 + \"']\").length > 0) {
var class2 = \$(\"img[data-class_category1='\" + class1 + \"']\").data('class_category2');
\$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
\$('.item_visual').slick('slickGoTo', \$index);
noChange = false;
}
}
});
";
}
// line 138
echo " } else if (\$('#classcategory_id1').length > 0) {
\$('#classcategory_id1').change(function () {
var \$this = \$(this);
if (\$this.val() != \"__unselected\") {
if (\$('#apg_product_class_image_thumb-' + \$this.val() + '-').length > 0) {
\$index = \$('#apg_product_class_image_thumb-' + \$this.val() + '-').parents('div').data('index');
\$('.item_visual').slick('slickGoTo', \$index);
noChange = false;
}
}
});
}
});
</script>
<script>
\t// #ratingModal がURLに含まれる場合、レビューのモーダルを開く
\t\$(function() {
\t\tconst currentHash = window.location.hash;
\t\tif (currentHash.substring(1).includes('ratingModal')) {
\t\t\t\$(\"#ratingModal\").modal('show');
\t\t}
\t});
</script>
<script>
\t// ボリュームアップの自由入力対応
\tconst volumeUpFlower = \"productoption2\";
\tconst volumeUpBalloon = \"productoption1\";
\tconst volumeUpFlower_free = \"productoption16\";
\tconst volumeUpBalloon_free = \"productoption15\";
\t\$(function(){
\t\t\$(`#\${volumeUpFlower_free}`).parents(\".plg_aoio\").hide();
\t\t\$(`#\${volumeUpBalloon_free}`).parents(\".plg_aoio\").hide();
\t\t\$(`#\${volumeUpFlower}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpFlower}_free\" name=\"\${volumeUpFlower}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpFlower}_free\">自由入力</label></div>`)
\t\t\$(`#\${volumeUpBalloon}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpBalloon}_free\" name=\"\${volumeUpBalloon}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpBalloon}_free\">自由入力</label></div>`)
\t\t\$(`#\${volumeUpFlower} .form-check, #\${volumeUpBalloon} .form-check`).on('click', function() {
\t\t\tconst \$this_radio = \$(this).find('input[type=\"radio\"]');
\t\t\tconst name = \$this_radio.attr(\"name\");
\t\t\tlet free_input = \"\";
\t\t\tif(name == volumeUpFlower){
\t\t\t\tfree_input = \$(`#\${volumeUpFlower_free}`);
\t\t\t} else if(name == volumeUpBalloon){
\t\t\t\tfree_input = \$(`#\${volumeUpBalloon_free}`);
\t\t\t} else {
\t\t\t\treturn;
\t\t\t}
\t\t\tif(\$this_radio.hasClass(\"js-volumeUp_free\")){
\t\t\t\tfree_input.parents(\".plg_aoio\").show();
\t\t\t} else {
\t\t\t\tfree_input.parents(\".plg_aoio\").hide();
\t\t\t\tfree_input.val(\"\");
\t\t\t}
\t\t});
\t});
</script>
<script src=\"";
// line 199
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/js/signboard.js"), "html", null, true);
echo "\"></script>
<script>
\teccube.classCategories = ";
// line 201
echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson($this->sandbox->ensureToStringAllowed((isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 201, $this->source); })()), 201, $this->source));
echo ";
\t// 規格2に選択肢を割り当てる。
\tfunction fnSetClassCategories(form, classcat_id2_selected) {
\t\tvar \$form = \$(form);
\t\tvar product_id = \$form.find('input[name=product_id]').val();
\t\tvar \$sele1 = \$form.find('select[name=classcategory_id1]');
\t\tvar \$sele2 = \$form.find('select[name=classcategory_id2]');
\t\teccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
\t}
\t";
// line 212
if (twig_get_attribute($this->env, $this->source, ($context["form"] ?? null), "classcategory_id2", [], "any", true, true, true, 212)) {
// line 213
echo "\tfnSetClassCategories(
\t\t\$('#form1'), ";
// line 214
echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 214, $this->source); })()), "classcategory_id2", [], "any", false, false, true, 214), "vars", [], "any", false, false, true, 214), "value", [], "any", false, false, true, 214), 214, $this->source));
echo "
\t);
\t";
} elseif (twig_get_attribute($this->env, $this->source, // line 216
($context["form"] ?? null), "classcategory_id1", [], "any", true, true, true, 216)) {
// line 217
echo "\teccube.checkStock(\$('#form1'), ";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 217, $this->source); })()), "id", [], "any", false, false, true, 217), 217, $this->source), "html", null, true);
echo ", ";
echo json_encode($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 217, $this->source); })()), "classcategory_id1", [], "any", false, false, true, 217), "vars", [], "any", false, false, true, 217), "value", [], "any", false, false, true, 217), 217, $this->source));
echo ", null);
\t";
}
// line 219
echo "</script>
<script>
\t\$(function() {
\t // 初期状態として、最初の .form-check に active クラスを付与してラジオボタンを選択
\t \$('#productoption2 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
\t \$('#productoption1 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
\t
\t // クリックイベントの設定
\t \$('#productoption2 .form-check, #productoption1 .form-check').on('click', function() {
\t\t// 対象の親を取得して、同じブロック内の .form-check から active を削除
\t\t\$(this).closest('#productoption2, #productoption1').find('.form-check').removeClass('active');
\t
\t\t// クリックした要素に active を付与
\t\t\$(this).addClass('active');
\t
\t\t// 対象のラジオボタンを選択状態にする
\t\t\$(this).find('input[type=\"radio\"]').prop('checked', true).trigger('change');
\t });
\t});
\t</script>
\t
<script>
\t\$(function () {
\t\t\$('[for=productoption2_2]').each(function () {
\t \$(this).append('<span class=\"em\">★一番人気</span>');
\t\t});
\t\t
\t\t// bfcache無効化
\t\t\$(window).bind('pageshow', function (event) {
\t\t\tif (event.originalEvent.persisted) {
\t\t\t\tlocation.reload(true);
\t\t\t}
\t\t});
\t\t// Core Web Vital の Cumulative Layout Shift(CLS)対策のため
\t\t// img タグに width, height が付与されている.
\t\t// 630px 未満の画面サイズでは縦横比が壊れるための対策
\t\t// see https://github.com/EC-CUBE/ec-cube/pull/5023
\t\t// \$('.ec-grid2__cell').hide();
\t\tvar removeSize = function () {
\t\t\t\$('.slide-item').height('');
\t\t\t\$('.slide-item img')
\t\t\t\t.removeAttr('width')
\t\t\t\t.removeAttr('height')
\t\t\t\t.removeAttr('style');
\t\t};
\t\tvar slickInitial = function (slick) {
\t\t\t\$('.ec-grid2__cell').fadeIn(1500);
\t\t\tvar baseHeight = \$(slick.target).height();
\t\t\tvar baseWidth = \$(slick.target).width();
\t\t\tvar rate = baseWidth / baseHeight;
\t\t\t\$('.slide-item').height(baseHeight * rate); // 余白を削除する
\t\t\t// transform を使用することでCLSの影響を受けないようにする
\t\t\t\$('.slide-item img')
\t\t\t\t.css(
\t\t\t\t\t{
\t\t\t\t\t\t'transform-origin': 'top left',
\t\t\t\t\t\t'transform': 'scaleY(' + rate + ')',
\t\t\t\t\t\t'transition': 'transform .1s'
\t\t\t\t\t}
\t\t\t\t);
\t\t\t// 正しいサイズに近くなったら属性を解除する
\t\t\tsetTimeout(removeSize, 500);
\t\t};
\t\t\$('.item_visual').on('init', slickInitial);
\t\t// リサイズ時は CLS の影響を受けないため属性を解除する
\t\t\$(window).resize(removeSize);
\t\t
\t let tabs = \$(\".tab_btn .cont\");
\t\ttabs.on(\"click\", function() {
\t\t\t\$(\".tab_btn .cont\").removeClass(\"show\");
\t\t\t\$(this).addClass(\"show\");
\t\t\tconst index = tabs.index(\$(this));
\t\t\t\$(\".tab_box\").removeClass(\"show\").eq(index).addClass(\"show\");
\t\t});
\t\t
\t\t\$(\".js_more_view\").on(\"click\", function() {
\$(this).toggleClass(\"on_click\");
\$(\".text_hide\").slideToggle(1000);
});
\t});
</script>
<script>
\t\$(function () {
\t\t\$(\".open_cart_modal\").on(\"click\", function() {
\t\t\t\$('.ec-modal').hide();
\t\t\t\$(\"#cart_modal\").show();
\t\t});
\t\t
\t\t\$('.add-cart').on('click', function (event) {
\t\t\t\$form = \$('#form1');
\t\t\t";
// line 314
if (twig_get_attribute($this->env, $this->source, ($context["form"] ?? null), "classcategory_id1", [], "any", true, true, true, 314)) {
// line 315
echo "\t\t\t// 規格1フォームの必須チェック
\t\t\tif (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
\t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('";
// line 317
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html", null, true);
echo "');
\t\t\t\treturn true;
\t\t\t} else {
\t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('');
\t\t\t}
\t\t\t";
}
// line 323
echo "
\t\t\t";
// line 324
if (twig_get_attribute($this->env, $this->source, ($context["form"] ?? null), "classcategory_id2", [], "any", true, true, true, 324)) {
// line 325
echo "\t\t\t// 規格2フォームの必須チェック
\t\t\tif (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
\t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('";
// line 327
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html", null, true);
echo "');
\t\t\t\treturn true;
\t\t\t} else {
\t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('');
\t\t\t}
\t\t\t";
}
// line 333
echo "
\t\t\t// 個数フォームのチェック
\t\t\tif (\$('#quantity').val() < 1) {
\t\t\t\t\$('#quantity')[0].setCustomValidity('";
// line 336
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html", null, true);
echo "');
\t\t\t\treturn true;
\t\t\t} else {
\t\t\t\t\$('#quantity')[0].setCustomValidity('');
\t\t\t}
\t\t\t// オプション項目のチェック
\t\t\tif (submit_check(\$form)) {
\t\t\t\treturn true;
\t\t\t}
\t\t\tevent.preventDefault();
\t\t\t\$.ajax({
\t\t\t\turl: \$form.attr('action'),
\t\t\t\ttype: \$form.attr('method'),
\t\t\t\tdata: \$form.serialize(),
\t\t\t\tdataType: 'json',
\t\t\t\tbeforeSend: function (xhr, settings) {
\t\t\t\t\t// Buttonを無効にする
\t\t\t\t\t\$('.add-cart').prop('disabled', true);
\t\t\t\t}
\t\t\t}).done(function (data) {
\t\t\t\t// レスポンス内のメッセージをalertで表示
\t\t\t\t\$.each(data.messages, function () {
\t\t\t\t\t\$('#added_cart .ec-modal-header').text(this);
\t\t\t\t});
\t\t\t\t\$('.ec-modal').hide();
\t\t\t\t\$(\"#added_cart\").show();
\t\t\t\t// カートブロックを更新する
\t\t\t\t\$.ajax({
\t\t\t\t\turl: \"";
// line 368
echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
echo "\",
\t\t\t\t\ttype: 'GET',
\t\t\t\t\tdataType: 'html'
\t\t\t\t}).done(function (html) {
\t\t\t\t\t\$('.ec-headerRole__cart').html(html);
\t\t\t\t});
\t\t\t}).fail(function (data) {
\t\t\t\talert('";
// line 375
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html", null, true);
echo "');
\t\t\t}).always(function (data) {
\t\t\t\t// Buttonを有効にする
\t\t\t\t\$('.add-cart').prop('disabled', false);
\t\t\t});
\t\t});
\t});
\t\$('.ec-modal-wrap').on('click', function (e) {
\t\t// モーダル内の処理は外側にバブリングさせない
\t\te.stopPropagation();
\t});
\t\$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function () {
\t\t\$('.ec-modal').hide()
\t});
</script>
<script type=\"application/ld+json\">
{
\"@context\": \"https://schema.org/\",
\"@type\": \"Product\",
\"name\": \"";
// line 395
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 395, $this->source); })()), "name", [], "any", false, false, true, 395), 395, $this->source), "html", null, true);
echo "\",
\"image\": [
";
// line 397
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 397, $this->source); })()), "ProductImage", [], "any", false, false, true, 397));
$context['_iterated'] = false;
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
// line 398
echo " \"";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 398, $this->source); })()), "request", [], "any", false, false, true, 398), "schemeAndHttpHost", [], "any", false, false, true, 398), 398, $this->source), "html", null, true);
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["img"], 398, $this->source), "save_image"), "html", null, true);
echo "\"";
if ( !twig_get_attribute($this->env, $this->source, $context["loop"], "last", [], "any", false, false, true, 398)) {
echo ",";
}
// line 399
echo "
";
$context['_iterated'] = true;
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['length'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
if (!$context['_iterated']) {
// line 401
echo " \"";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 401, $this->source); })()), "request", [], "any", false, false, true, 401), "schemeAndHttpHost", [], "any", false, false, true, 401), 401, $this->source), "html", null, true);
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html", null, true);
echo "\"
";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 403
echo " ],
\"description\": \"";
// line 404
echo twig_escape_filter($this->env, twig_slice($this->env, twig_replace_filter(((twig_get_attribute($this->env, $this->source, ($context["Product"] ?? null), "description_list", [], "any", true, true, true, 404)) ? (_twig_default_filter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, ($context["Product"] ?? null), "description_list", [], "any", false, false, true, 404), 404, $this->source), $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 404, $this->source); })()), "description_detail", [], "any", false, false, true, 404), 404, $this->source))) : (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 404, $this->source); })()), "description_detail", [], "any", false, false, true, 404))), ["
" => "", "
" => ""]), 0, 300), "html", null, true);
echo "\",
";
// line 405
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 405, $this->source); })()), "code_min", [], "any", false, false, true, 405)) {
// line 406
echo " \"sku\": \"";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 406, $this->source); })()), "code_min", [], "any", false, false, true, 406), 406, $this->source), "html", null, true);
echo "\",
";
}
// line 408
echo " \"offers\": {
\"@type\": \"Offer\",
\"url\": \"";
// line 410
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 410, $this->source); })()), "id", [], "any", false, false, true, 410)]), "html", null, true);
echo "\",
\"priceCurrency\": \"";
// line 411
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["eccube_config"]) || array_key_exists("eccube_config", $context) ? $context["eccube_config"] : (function () { throw new RuntimeError('Variable "eccube_config" does not exist.', 411, $this->source); })()), "currency", [], "any", false, false, true, 411), 411, $this->source), "html", null, true);
echo "\",
\"price\": ";
// line 412
((twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 412, $this->source); })()), "getPrice02IncTaxMin", [], "any", false, false, true, 412)) ? (print (twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 412, $this->source); })()), "getPrice02IncTaxMin", [], "any", false, false, true, 412), "html", null, true))) : (print (0)));
echo ",
\"availability\": \"";
// line 413
echo ((twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 413, $this->source); })()), "stock_find", [], "any", false, false, true, 413)) ? ("InStock") : ("OutOfStock"));
echo "\"
}
}
</script>
\t<script>
\t\t// ...既存のHTMLの後などに追加...
document.addEventListener('DOMContentLoaded', function() {
// 対象IDリスト
const ids = [
'productoption3',
'productoption4',
'productoption5',
'productoption10',
'productoption6',
'productoption7',
'productoption8',
'productoption9'
];
// tatefuda_boxを集める配列
const tatefudaBoxes = [];
ids.forEach(function(id) {
const el = document.getElementById(id);
if (el) {
const parent = el.closest('.plg_aoio');
if (parent && !parent.classList.contains('tatefuda_box')) {
parent.classList.add('tatefuda_box');
tatefudaBoxes.push(parent);
}
}
});
if (tatefudaBoxes.length > 0) {
// tatefuda_boxの最初と最後を取得
const first = tatefudaBoxes[0];
const last = tatefudaBoxes[tatefudaBoxes.length - 1];
// tatefuda_box_areaを作成
const wrapper = document.createElement('div');
wrapper.className = 'tatefuda_box_area';
// 最初の前に挿入
first.parentNode.insertBefore(wrapper, first);
// tatefuda_boxを順にwrapperへ移動
tatefudaBoxes.forEach(function(box) {
wrapper.appendChild(box);
});
}
});
// document.addEventListener(\"DOMContentLoaded\", function () {
// // 要素の取得
// const recoArea = document.querySelector(\".produt_reco_text_area\");
// const sceneArea = document.querySelector(\".produt_scene_text_area\");
// const latestBlock = document.querySelector(\".ec-layoutRole__mainBottom .top_inner .latest_block\");
//
// // latest_blockの下に要素を移動
// if (latestBlock) {
// latestBlock.insertAdjacentElement(\"afterend\", sceneArea);
// latestBlock.insertAdjacentElement(\"afterend\", recoArea);
// }
//
// // produt_reco_textを分割して複数の<p>に
// const recoText = recoArea.querySelector(\".produt_reco_text\");
// if (recoText) {
// const parent = recoText.parentElement;
// const texts = recoText.textContent.split(\",\");
//
// // 元の要素を削除
// recoText.remove();
//
// // 分割したテキストを<p>にして挿入
// texts.forEach(text => {
// const p = document.createElement(\"p\");
// p.className = \"produt_reco_text\";
// p.textContent = text.trim();
// parent.appendChild(p);
// });
// }
// });
\t</script>
\t<script>
document.addEventListener(\"DOMContentLoaded\", function () {
var productMain = document.querySelector(\"#product_main\");
if (!productMain) return;
var checkInterval = setInterval(function () {
var ratingArea = document.querySelector(\"#product_rating_area\");
if (ratingArea) {
productMain.parentNode.insertBefore(ratingArea, productMain.nextSibling);
clearInterval(checkInterval); // 見つけたら監視停止
}
}, 100); // 100ms ごとに確認
});
</script>
";
// line 515
if ((twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 515, $this->source); })()), "id", [], "any", false, false, true, 515) == 896)) {
// line 516
echo "<script>
\t\$(function() {
\t\tconst \$option_input = \$(\"#productoption14\");
\t\tconst \$option_box = \$option_input.parents(\".plg_aoio\");
\t\t\$option_box.css({
\t\t\t\"visibility\":\"hidden\",
\t\t\t\"height\":\"0\",
\t\t\t\"margin\":\"0\",
\t\t\t\"padding\":\"0\",
\t\t});
\t\t
\t\tconst \$price_input = \$(\"<input>\", {
\t\t\ttype: \"number\",
\t\t\tclass: \"ec-price__price\",
\t\t\tid: \"custom_price_input\",
\t\t\tmin: 0,
\t\t\tvalue: 0,
\t\t});
\t\t
\t\t\$(\".ec-price\").html(\$price_input);
\t\t\$(\".ec-price\").append('<span class=\"ec-price__tax\">円</span>');
\t\t\$(\".ec-price\").append('<p class=\"ec-price__tax\">税抜き金額をご入力ください</p>');
\t\t
\t\t\$(\"#custom_price_input\").on(\"change\", function() {
\t\t\t\$option_input.val(\$(this).val()).trigger(\"change\");
\t\t});
\t});
</script>
";
}
// line 545
echo "
<script>
document.addEventListener('DOMContentLoaded', function() {
// --- レビューセクションが無い場合、active を付与 ---
const reviewSection = document.querySelector('#product_rating_area #ratingContent .row.customer-reviews');
if (!reviewSection) {
const badges = document.querySelectorAll('.ec-sliderItemRole .btm_img_review_badge');
badges.forEach(badge => badge.classList.add('active'));
}
// --- placeholder の変更 & height の変更 ---
const remarks = document.getElementById('rating_remarks');
if (remarks) {
remarks.placeholder = \"例)\\n開店祝いで利用しました。華やかでボリュームもあり、先方にも喜んでもらえました。\";
remarks.style.height = \"6em\"; // ← ここを追加
}
});
</script>
<script>
document.addEventListener(\"DOMContentLoaded\", function() {
const priceSelector = \".ec-productRole .ec-productRole__price .ec-price .ec-price__price\";
// 子要素(label)を使って .mb-3 を特定
const container = document.querySelector('.mb-3 > label[for=\"classcategory_id1\"]')?.closest('.mb-3');
if (!container) return;
// p要素がなければ作成
let priceParagraph = container.querySelector(\".js_type_price\");
if (!priceParagraph) {
priceParagraph = document.createElement(\"p\");
priceParagraph.classList.add(\"js_type_price\");
container.appendChild(priceParagraph);
}
const priceElement = document.querySelector(priceSelector);
if (!priceElement) return;
// 更新処理
const updatePrice = () => {
const priceText = priceElement.textContent.trim();
if (priceText) {
priceParagraph.innerHTML = `\${priceText}<span class=\"size\">税込</span>`;
} else {
priceParagraph.innerHTML = \"\";
}
};
// 初期表示
updatePrice();
// 価格要素の変化を監視
const observer = new MutationObserver(updatePrice);
observer.observe(priceElement, { childList: true, characterData: true, subtree: true });
});
</script>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
// line 607
public function block_main($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "main"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "main"));
// line 608
echo "<section class=\"top_inner\">
\t<div id=\"main-contents\" class=\"colnum1\">
\t\t<div class=\"ec-productRole\">
\t\t\t<div class=\"ec-grid2\" id=\"product_main\">
\t\t\t\t<div class=\"ec-grid2__cell\">
\t\t\t\t\t<div class=\"ec-sliderItemRole\">
\t\t\t\t\t\t<div class=\"item_visual\">
\t\t\t\t\t\t\t";
// line 616
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 616, $this->source); })()), "ProductImage", [], "any", false, false, true, 616));
$context['_iterated'] = false;
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
// line 617
echo "\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 617, $this->source), "save_image"), "html", null, true);
echo "\" alt=\"";
((twig_get_attribute($this->env, $this->source, $context["loop"], "first", [], "any", false, false, true, 617)) ? (print (twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 617, $this->source); })()), "name", [], "any", false, false, true, 617), "html", null, true))) : (print ("")));
echo "\" width=\"550\" height=\"550\" ";
if ((twig_get_attribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, true, 617) > 1)) {
echo " loading=\"lazy\"";
}
echo "></div>
\t\t\t\t\t\t\t";
$context['_iterated'] = true;
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['length'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
if (!$context['_iterated']) {
// line 619
echo "\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html", null, true);
echo "\" alt=\"";
((twig_get_attribute($this->env, $this->source, $context["loop"], "first", [], "any", false, false, true, 619)) ? (print (twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 619, $this->source); })()), "name", [], "any", false, false, true, 619), "html", null, true))) : (print ("")));
echo "\" width=\"550\" height=\"550\"></div>
\t\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 620
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 620, $this->source); })()), "hasProductClass", [], "any", false, false, true, 620)) {
// line 621
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 621, $this->source); })()), "getProductClasses", [], "method", false, false, true, 621));
foreach ($context['_seq'] as $context["_key"] => $context["ProductClass"]) {
// line 622
echo " ";
if (twig_get_attribute($this->env, $this->source, $context["ProductClass"], "file_name", [], "any", false, false, true, 622)) {
// line 623
echo " <div class=\"slide-item\">
";
// line 624
if ((twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 624) && twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory2", [], "any", false, false, true, 624))) {
// line 625
echo " <img id=\"apg_product_class_image-";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 625), "id", [], "any", false, false, true, 625), 625, $this->source), "html", null, true);
echo "-";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory2", [], "any", false, false, true, 625), "id", [], "any", false, false, true, 625), 625, $this->source), "html", null, true);
echo "\"
src=\"";
// line 626
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["ProductClass"], "getImageUrl", [], "method", false, false, true, 626), 626, $this->source), "save_image"), "html", null, true);
echo "\">
";
} elseif (twig_get_attribute($this->env, $this->source, // line 627
$context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 627)) {
// line 628
echo " <img id=\"apg_product_class_image-";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 628), "id", [], "any", false, false, true, 628), 628, $this->source), "html", null, true);
echo "-\"
src=\"";
// line 629
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["ProductClass"], "getImageUrl", [], "method", false, false, true, 629), 629, $this->source), "save_image"), "html", null, true);
echo "\">
";
}
// line 631
echo " </div>
";
}
// line 633
echo " ";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductClass'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
}
// line 635
echo "
\t\t\t\t\t\t</div>
<div class=\"btm_img_review_badge\">
<a href=\"#product_rating_area\" class=\"badge_img\">
<img src=\"/html/user_data/assets/img/common/btm_img_review_badge.jpg\" alt=\"\">
</a>
</div>
\t\t\t\t\t\t<div class=\"item_nav\">
\t\t\t\t\t\t\t";
// line 643
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 643, $this->source); })()), "ProductImage", [], "any", false, false, true, 643));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
// line 644
echo "\t\t\t\t\t\t\t<div class=\"slideThumb\" data-index=\"";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["loop"], "index0", [], "any", false, false, true, 644), 644, $this->source), "html", null, true);
echo "\"><img src=\"";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed($context["ProductImage"], 644, $this->source), "save_image"), "html", null, true);
echo "\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
\t\t\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['length'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 645
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 645, $this->source); })()), "hasProductClass", [], "any", false, false, true, 645)) {
// line 646
if ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 646, $this->source); })()), "ProductImage", [], "any", false, false, true, 646), "count", [], "any", false, false, true, 646) > 0)) {
// line 647
echo " ";
$context["imageCount"] = (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 647, $this->source); })()), "ProductImage", [], "any", false, false, true, 647), "count", [], "any", false, false, true, 647) - 1);
// line 648
echo " ";
} else {
// line 649
echo " ";
$context["imageCount"] = 0;
// line 650
echo " ";
}
// line 651
echo " ";
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 651, $this->source); })()), "getProductClasses", [], "method", false, false, true, 651));
foreach ($context['_seq'] as $context["_key"] => $context["ProductClass"]) {
// line 652
echo " ";
if (twig_get_attribute($this->env, $this->source, $context["ProductClass"], "file_name", [], "any", false, false, true, 652)) {
// line 653
echo " ";
$context["imageCount"] = ((isset($context["imageCount"]) || array_key_exists("imageCount", $context) ? $context["imageCount"] : (function () { throw new RuntimeError('Variable "imageCount" does not exist.', 653, $this->source); })()) + 1);
// line 654
echo " <div class=\"slideThumb\" data-index=\"";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed((isset($context["imageCount"]) || array_key_exists("imageCount", $context) ? $context["imageCount"] : (function () { throw new RuntimeError('Variable "imageCount" does not exist.', 654, $this->source); })()), 654, $this->source), "html", null, true);
echo "\">
";
// line 655
if ((twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 655) && twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory2", [], "any", false, false, true, 655))) {
// line 656
echo " <img id=\"apg_product_class_image_thumb-";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 656), "id", [], "any", false, false, true, 656), 656, $this->source), "html", null, true);
echo "-";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory2", [], "any", false, false, true, 656), "id", [], "any", false, false, true, 656), 656, $this->source), "html", null, true);
echo "\"
src=\"";
// line 657
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["ProductClass"], "getImageUrl", [], "method", false, false, true, 657), 657, $this->source), "save_image"), "html", null, true);
echo "\"
data-class_category1=\"";
// line 658
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 658), "id", [], "any", false, false, true, 658), 658, $this->source), "html", null, true);
echo "\"
data-class_category2=\"";
// line 659
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory2", [], "any", false, false, true, 659), "id", [], "any", false, false, true, 659), 659, $this->source), "html", null, true);
echo "\">
";
} elseif (twig_get_attribute($this->env, $this->source, // line 660
$context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 660)) {
// line 661
echo " <img id=\"apg_product_class_image_thumb-";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 661), "id", [], "any", false, false, true, 661), 661, $this->source), "html", null, true);
echo "-\"
src=\"";
// line 662
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["ProductClass"], "getImageUrl", [], "method", false, false, true, 662), 662, $this->source), "save_image"), "html", null, true);
echo "\"
data-class_category1=\"";
// line 663
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductClass"], "ClassCategory1", [], "any", false, false, true, 663), "id", [], "any", false, false, true, 663), 663, $this->source), "html", null, true);
echo "\">
";
}
// line 665
echo " </div>
";
}
// line 667
echo " ";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductClass'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
}
// line 669
echo "
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"ec-grid2__cell\">
\t\t\t\t\t<div class=\"ec-productRole__profile\">
\t\t\t\t\t\t";
// line 676
echo "\t\t\t\t\t\t<div class=\"ec-productRole__title\">
\t\t\t\t\t\t\t<h2 class=\"ec-headingTitle\">";
// line 677
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 677, $this->source); })()), "name", [], "any", false, false, true, 677), 677, $this->source), "html", null, true);
echo "</h2>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
// line 680
echo "\t\t\t\t\t\t<ul class=\"ec-productRole__tags\">
\t\t\t\t\t\t\t";
// line 681
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 681, $this->source); })()), "Tags", [], "any", false, false, true, 681));
foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
// line 682
echo "\t\t\t\t\t\t\t<li class=\"ec-productRole__tag tag_";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Tag"], "id", [], "any", false, false, true, 682), 682, $this->source), "html", null, true);
echo "\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed($context["Tag"], 682, $this->source), "html", null, true);
echo "</li>
\t\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 684
echo "\t\t\t\t\t\t</ul>
";
// line 685
if (( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 685, $this->source); })()), "ViewData", [0 => 1], "method", false, false, true, 685)) || !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 685, $this->source); })()), "ViewData", [0 => 2], "method", false, false, true, 685)))) {
// line 686
echo "\t\t\t\t\t\t<div class=\"color_num_area color_num_area_1_2\">
\t\t\t\t\t\t\t";
// line 687
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 687, $this->source); })()), "ViewData", [0 => 1], "method", false, false, true, 687))) {
// line 688
echo "\t\t\t\t\t\t\t<p class=\"color color_num_data\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 688, $this->source); })()), "ViewData", [0 => 1], "method", false, false, true, 688), 688, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t";
}
// line 690
echo "\t\t\t\t\t\t\t";
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 690, $this->source); })()), "ViewData", [0 => 2], "method", false, false, true, 690))) {
// line 691
echo "\t\t\t\t\t\t\t<p class=\"num color_num_data\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 691, $this->source); })()), "ViewData", [0 => 2], "method", false, false, true, 691), 691, $this->source), "html", null, true);
echo "本立</p>
\t\t\t\t\t\t\t";
}
// line 693
echo "\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 695
echo "\t\t\t\t\t\t";
if (( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 695, $this->source); })()), "ViewData", [0 => 4], "method", false, false, true, 695)) || !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 695, $this->source); })()), "ViewData", [0 => 5], "method", false, false, true, 695)))) {
// line 696
echo "\t\t\t\t\t\t<div class=\"color_num_area color_num_area_4_5\">
\t\t\t\t\t\t\t";
// line 697
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 697, $this->source); })()), "ViewData", [0 => 4], "method", false, false, true, 697))) {
// line 698
echo "\t\t\t\t\t\t\t<p class=\"dan color_num_data\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 698, $this->source); })()), "ViewData", [0 => 4], "method", false, false, true, 698), 698, $this->source), "html", null, true);
echo "段</p>
\t\t\t\t\t\t\t";
}
// line 700
echo "\t\t\t\t\t\t\t";
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 700, $this->source); })()), "ViewData", [0 => 5], "method", false, false, true, 700))) {
// line 701
echo "\t\t\t\t\t\t\t<p class=\"leg_type color_num_data\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 701, $this->source); })()), "ViewData", [0 => 5], "method", false, false, true, 701), 701, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t";
}
// line 703
echo "\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 705
echo "\t\t\t\t\t\t";
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 705, $this->source); })()), "ViewData", [0 => 6], "method", false, false, true, 705))) {
// line 706
echo "\t\t\t\t\t\t<div class=\"color_num_area color_num_area_6\">
\t\t\t\t\t\t\t<p class=\"kago_type color_num_data\">";
// line 707
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 707, $this->source); })()), "ViewData", [0 => 6], "method", false, false, true, 707), 707, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 710
echo "\t\t\t\t\t\t<div class=\"ec-productRole__description\">";
echo twig_nl2br($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 710, $this->source); })()), "description_detail", [], "any", false, false, true, 710), 710, $this->source));
echo "
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
// line 713
echo "\t\t\t\t\t\t";
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 713, $this->source); })()), "hasProductClass", [], "any", false, false, true, 713)) {
// line 714
echo "<div class=\"ec-productRole__priceRegular\">
\t\t\t\t\t\t\t";
// line 715
if (( !(null === twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 715, $this->source); })()), "getPrice01Min", [], "any", false, false, true, 715)) && (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 715, $this->source); })()), "getPrice01IncTaxMin", [], "any", false, false, true, 715) == twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 715, $this->source); })()), "getPrice01IncTaxMax", [], "any", false, false, true, 715)))) {
// line 716
echo "\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html", null, true);
echo ":<span class=\"price01-default\">";
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 716, $this->source); })()), "getPrice01IncTaxMin", [], "any", false, false, true, 716), 716, $this->source)), "html", null, true);
echo "</span></span>
\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">";
// line 717
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t";
} elseif (( !(null === twig_get_attribute($this->env, $this->source, // line 718
(isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 718, $this->source); })()), "getPrice01Min", [], "any", false, false, true, 718)) && !(null === twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 718, $this->source); })()), "getPrice01Max", [], "any", false, false, true, 718)))) {
// line 719
echo "\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html", null, true);
echo ":<span class=\"price01-default\">";
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 719, $this->source); })()), "getPrice01IncTaxMin", [], "any", false, false, true, 719), 719, $this->source)), "html", null, true);
echo "~ ";
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 719, $this->source); })()), "getPrice01IncTaxMax", [], "any", false, false, true, 719), 719, $this->source)), "html", null, true);
echo "</span></span>
\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">";
// line 720
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t";
}
// line 722
echo "\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
} else {
// line 724
echo "\t\t\t\t\t\t";
if ( !(null === twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 724, $this->source); })()), "getPrice01Max", [], "any", false, false, true, 724))) {
// line 725
echo "\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html", null, true);
echo ":";
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 725, $this->source); })()), "getPrice01IncTaxMin", [], "any", false, false, true, 725), 725, $this->source)), "html", null, true);
echo "</span>
\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">";
// line 726
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html", null, true);
echo "</span>
\t\t\t\t\t\t";
}
// line 728
echo "\t\t\t\t\t\t";
}
// line 729
echo "\t\t\t\t\t\t";
// line 730
echo "\t\t\t\t\t\t<div class=\"ec-productRole__price\">
\t\t\t\t\t\t\t";
// line 731
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 731, $this->source); })()), "hasProductClass", [], "any", false, false, true, 731)) {
// line 732
if ((twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 732, $this->source); })()), "getPrice02IncTaxMin", [], "any", false, false, true, 732) == twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 732, $this->source); })()), "getPrice02IncTaxMax", [], "any", false, false, true, 732))) {
// line 733
echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
// line 734
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 734, $this->source); })()), "getPrice02IncTaxMin", [], "any", false, false, true, 734), 734, $this->source)), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">";
// line 735
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t";
} else {
// line 738
echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">";
// line 739
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 739, $this->source); })()), "getPrice02IncTaxMin", [], "any", false, false, true, 739), 739, $this->source)), "html", null, true);
echo " ~ ";
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 739, $this->source); })()), "getPrice02IncTaxMax", [], "any", false, false, true, 739), 739, $this->source)), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">";
// line 740
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t";
}
// line 743
echo "\t\t\t\t\t\t\t";
} else {
// line 744
echo "\t\t\t\t\t\t\t<div class=\"ec-price\">
\t\t\t\t\t\t\t\t<span class=\"ec-price__price\">";
// line 745
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 745, $this->source); })()), "getPrice02IncTaxMin", [], "any", false, false, true, 745), 745, $this->source)), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">";
// line 746
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t";
}
// line 749
echo "\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
// line 750
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 750, $this->source); })()), "stock_find", [], "any", false, false, true, 750)) {
// line 751
echo "\t\t\t\t\t\t\t<form class=\"form_add-cart\" action=\"";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_cart", ["id" => twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 751, $this->source); })()), "id", [], "any", false, false, true, 751)]), "html", null, true);
echo "\" method=\"post\" id=\"form1\" name=\"form1\">
\t\t\t\t\t\t\t\t<div id=\"cart_modal\" class=\"ec-modal\">
\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
\t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
\t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
// line 755
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html", null, true);
echo "\" alt=\"\" /></span></span>
\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__actions\">
\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 758
if (twig_get_attribute($this->env, $this->source, ($context["form"] ?? null), "classcategory_id1", [], "any", true, true, true, 758)) {
// line 759
echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 760
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 760, $this->source); })()), "classcategory_id1", [], "any", false, false, true, 760), 760, $this->source), 'row');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 761
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 761, $this->source); })()), "classcategory_id1", [], "any", false, false, true, 761), 761, $this->source), 'errors');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 763
if (twig_get_attribute($this->env, $this->source, ($context["form"] ?? null), "classcategory_id2", [], "any", true, true, true, 763)) {
// line 764
echo "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 765
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 765, $this->source); })()), "classcategory_id2", [], "any", false, false, true, 765), 765, $this->source), 'row');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 766
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 766, $this->source); })()), "classcategory_id2", [], "any", false, false, true, 766), 766, $this->source), 'errors');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 769
echo "\t\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 770
echo "\t\t\t\t\t\t\t\t\t\t\t\t\t";
echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env, $context, "Product/option.twig");
echo "<div class=\"ec-numberInput\"><span>";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("数量"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 771
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 771, $this->source); })()), "quantity", [], "any", false, false, true, 771), 771, $this->source), 'widget');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 772
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 772, $this->source); })()), "quantity", [], "any", false, false, true, 772), 772, $this->source), 'errors');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t";
// line 775
echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock($this->sandbox->ensureToStringAllowed((isset($context["form"]) || array_key_exists("form", $context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.', 775, $this->source); })()), 775, $this->source), 'rest');
echo "
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
\t\t\t\t\t\t\t\t\t\t\t\t\t<button type=\"submit\" class=\"ec-inlineBtn--action add-cart\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 779
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html", null, true);
echo "
\t\t\t\t\t\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-box -->
\t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-wrap -->
\t\t\t\t\t\t\t\t\t\t";
// line 784
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 784, $this->source); })()), "stock_min", [], "any", false, false, true, 784)) {
// line 785
echo "\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__stock\">在庫数: <span class=\"stock_num\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 785, $this->source); })()), "stock_min", [], "any", false, false, true, 785), 785, $this->source), "html", null, true);
if ((twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 785, $this->source); })()), "stock_min", [], "any", false, false, true, 785) != twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 785, $this->source); })()), "stock_max", [], "any", false, false, true, 785))) {
echo " ~ ";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 785, $this->source); })()), "stock_max", [], "any", false, false, true, 785), 785, $this->source), "html", null, true);
}
echo "</span></div>
\t\t\t\t\t\t\t\t\t\t";
}
// line 787
echo "\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-overlay -->
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</form>
\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action open_cart_modal\">
\t\t\t\t\t\t\t\t\t";
// line 793
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html", null, true);
echo "
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
} else {
// line 797
echo "\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
\t\t\t\t\t\t\t\t\t";
// line 799
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html", null, true);
echo "
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 803
echo "\t\t\t\t\t\t<div id=\"added_cart\" class=\"ec-modal\">
\t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
\t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
\t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"";
// line 806
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html", null, true);
echo "\" alt=\"\" /></span></span>
\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-header text-center\">";
// line 807
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html", null, true);
echo "</div>
\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
\t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
\t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-inlineBtn--cancel\">";
// line 810
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html", null, true);
echo "</span>
\t\t\t\t\t\t\t\t\t\t\t<a href=\"";
// line 811
echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
echo "\" class=\"ec-inlineBtn--action\">";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html", null, true);
echo "</a>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
// line 817
if (twig_get_attribute($this->env, $this->source, (isset($context["BaseInfo"]) || array_key_exists("BaseInfo", $context) ? $context["BaseInfo"] : (function () { throw new RuntimeError('Variable "BaseInfo" does not exist.', 817, $this->source); })()), "option_favorite_product", [], "any", false, false, true, 817)) {
// line 818
echo "\t\t\t\t\t\t<form action=\"";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_favorite", ["id" => twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 818, $this->source); })()), "id", [], "any", false, false, true, 818)]), "html", null, true);
echo "\" method=\"post\">
\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
\t\t\t\t\t\t\t\t";
// line 820
if (((isset($context["is_favorite"]) || array_key_exists("is_favorite", $context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.', 820, $this->source); })()) == false)) {
// line 821
echo "\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
\t\t\t\t\t\t\t\t\t";
// line 822
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html", null, true);
echo "
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t";
} else {
// line 825
echo "\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel fav_done\" disabled=\"disabled\">";
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html", null, true);
echo "
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t";
}
// line 828
echo "\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</form>
<a class=\"page_product_review_btn\" href=\"#product_rating_area\"><span class=\"letter\">レビューを見る/書く</span></a>
\t\t\t\t\t\t";
}
// line 832
echo "\t\t\t\t\t\t";
// line 833
echo "\t\t\t\t\t\t";
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 833, $this->source); })()), "code_min", [], "any", false, false, true, 833))) {
// line 834
echo "\t\t\t\t\t\t<div class=\"ec-productRole__code\">
\t\t\t\t\t\t\t";
// line 835
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html", null, true);
echo ": <span class=\"product-code-default\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 835, $this->source); })()), "code_min", [], "any", false, false, true, 835), 835, $this->source), "html", null, true);
if ((twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 835, $this->source); })()), "code_min", [], "any", false, false, true, 835) != twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 835, $this->source); })()), "code_max", [], "any", false, false, true, 835))) {
echo " ~ ";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 835, $this->source); })()), "code_max", [], "any", false, false, true, 835), 835, $this->source), "html", null, true);
}
echo "</span>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 838
echo "\t\t\t\t\t\t";
// line 839
echo "\t\t\t\t\t\t";
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 839, $this->source); })()), "ProductCategories", [], "any", false, false, true, 839))) {
// line 840
echo "\t\t\t\t\t\t<div class=\"ec-productRole__category\">
\t\t\t\t\t\t\t<div>";
// line 841
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("関連カテゴリ"), "html", null, true);
echo "</div>
\t\t\t\t\t\t\t";
// line 842
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 842, $this->source); })()), "ProductCategories", [], "any", false, false, true, 842));
foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
// line 843
echo "\t\t\t\t\t\t\t<ul>
\t\t\t\t\t\t\t\t<li>
\t\t\t\t\t\t\t\t\t";
// line 845
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $context["ProductCategory"], "Category", [], "any", false, false, true, 845), "path", [], "any", false, false, true, 845));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
// line 846
echo "\t\t\t\t\t\t\t\t\t<a href=\"";
echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
echo "?category_id=";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Category"], "id", [], "any", false, false, true, 846), 846, $this->source), "html", null, true);
echo "\">";
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Category"], "name", [], "any", false, false, true, 846), 846, $this->source), "html", null, true);
echo "</a>";
if ((twig_get_attribute($this->env, $this->source, $context["loop"], "last", [], "any", false, false, true, 846) == false)) {
// line 847
echo "\t\t\t\t\t\t\t\t\t<span>></span>";
}
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['length'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 849
echo "\t\t\t\t\t\t\t\t</li>
\t\t\t\t\t\t\t</ul>
\t\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 852
echo "\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 854
echo "\t\t\t\t\t\t<!-- <div class=\"ec-productRole__description\">
\t\t\t\t\t\t\t<a href=\"/contact\">この商品について問い合わせる</a><br>
\t\t\t\t\t\t\t<a href=\"/help/tradelaw\">返品についての詳細はこちら</a>
\t\t\t\t\t\t</div> -->
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t\t";
// line 861
if (twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 861, $this->source); })()), "freearea", [], "any", false, false, true, 861)) {
// line 862
echo "\t\t\t<div class=\"ec-productRole__description\">
\t\t\t\t";
// line 863
echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env, $context, twig_template_from_string($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 863, $this->source); })()), "freearea", [], "any", false, false, true, 863), 863, $this->source)), array(), true, false, true);
echo "
\t\t\t</div>
\t\t\t";
}
// line 866
echo "
\t\t\t<!-- 同じカテゴリーの商品 -->
\t\t\t";
// line 868
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 868, $this->source); })()), "ProductCategories", [], "any", false, false, true, 868))) {
// line 869
echo "\t\t\t";
$context["ChildCategory"] = twig_first($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 869, $this->source); })()), "ProductCategories", [], "any", false, false, true, 869), 869, $this->source), function ($__pc__) use ($context, $macros) { $context["pc"] = $__pc__; return !(null === twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["pc"]) || array_key_exists("pc", $context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.', 869, $this->source); })()), "Category", [], "any", false, false, true, 869), "parent", [], "any", false, false, true, 869)); }));
// line 870
echo "\t\t\t";
$context["ParentCategory"] = twig_first($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 870, $this->source); })()), "ProductCategories", [], "any", false, false, true, 870), 870, $this->source), function ($__pc__) use ($context, $macros) { $context["pc"] = $__pc__; return ((null === twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["pc"]) || array_key_exists("pc", $context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.', 870, $this->source); })()), "Category", [], "any", false, false, true, 870), "parent", [], "any", false, false, true, 870)) && !twig_in_filter(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["pc"]) || array_key_exists("pc", $context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.', 870, $this->source); })()), "Category", [], "any", false, false, true, 870), "name", [], "any", false, false, true, 870), [0 => "新着商品", 1 => "迷ったらココ!!開店祝い等の定番!", 2 => "郵送商品(全国へ宅急便でお届けします)", 3 => "委託商品'(全国のお花屋さんに委託します)"])); }));
// line 871
echo "
\t\t\t<div class=\"same_category_product_area\">
\t\t\t\t";
// line 873
if ( !twig_test_empty((isset($context["ChildCategory"]) || array_key_exists("ChildCategory", $context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.', 873, $this->source); })()))) {
// line 874
echo "\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">";
// line 875
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["ChildCategory"]) || array_key_exists("ChildCategory", $context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.', 875, $this->source); })()), "Category", [], "any", false, false, true, 875), "name", [], "any", false, false, true, 875), 875, $this->source), "html", null, true);
echo "の他の商品</p>
\t\t\t\t\t<div class=\"product_grid\">
\t\t\t\t\t\t";
// line 877
$context["Products"] = twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [0 => ["category_id" => twig_get_attribute($this->env, $this->source, // line 878
(isset($context["ChildCategory"]) || array_key_exists("ChildCategory", $context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.', 878, $this->source); })()), "Category", [], "any", false, false, true, 878)]], "method", false, false, true, 877), "orderBy", [0 => "p.create_date", 1 => "DESC"], "method", false, false, true, 877), "setMaxResults", [0 => 100], "method", false, false, true, 879), "getQuery", [], "method", false, false, true, 879), "getResult", [], "method", false, false, true, 879);
// line 880
echo "
\t\t\t\t\t\t";
// line 881
$context["FilteredProducts"] = twig_slice($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products", $context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.', 881, $this->source); })()), 881, $this->source), function ($__p__) use ($context, $macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env, $this->source, (isset($context["p"]) || array_key_exists("p", $context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.', 881, $this->source); })()), "id", [], "any", false, false, true, 881) != twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 881, $this->source); })()), "id", [], "any", false, false, true, 881)); }), 0, 4);
// line 882
echo "
\t\t\t\t\t\t";
// line 883
if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 883, $this->source); })())) > 0)) {
// line 884
echo "\t\t\t\t\t\t";
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 884, $this->source); })()));
foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
// line 885
echo "\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"";
// line 886
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env, $this->source, $context["Product"], "id", [], "any", false, false, true, 886)]), "html", null, true);
echo "\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"";
// line 888
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "main_list_image", [], "any", false, false, true, 888), 888, $this->source)), "save_image"), "html", null, true);
echo "\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">";
// line 890
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "name", [], "any", false, false, true, 890), 890, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">";
// line 891
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "getPrice02IncTaxMin", [], "any", false, false, true, 891), 891, $this->source)), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 895
echo "\t\t\t\t\t\t";
}
// line 896
echo "\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t";
} elseif ( !twig_test_empty( // line 898
(isset($context["ParentCategory"]) || array_key_exists("ParentCategory", $context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.', 898, $this->source); })()))) {
// line 899
echo "\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">";
// line 900
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["ParentCategory"]) || array_key_exists("ParentCategory", $context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.', 900, $this->source); })()), "Category", [], "any", false, false, true, 900), "name", [], "any", false, false, true, 900), 900, $this->source), "html", null, true);
echo "の他の商品</p>
\t\t\t\t\t<div class=\"product_grid\">
\t\t\t\t\t\t";
// line 902
$context["Products"] = twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [0 => ["category_id" => twig_get_attribute($this->env, $this->source, // line 903
(isset($context["ParentCategory"]) || array_key_exists("ParentCategory", $context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.', 903, $this->source); })()), "Category", [], "any", false, false, true, 903)]], "method", false, false, true, 902), "orderBy", [0 => "p.create_date", 1 => "DESC"], "method", false, false, true, 902), "setMaxResults", [0 => 100], "method", false, false, true, 904), "getQuery", [], "method", false, false, true, 904), "getResult", [], "method", false, false, true, 904);
// line 905
echo "
\t\t\t\t\t\t";
// line 906
$context["FilteredProducts"] = twig_slice($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products", $context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.', 906, $this->source); })()), 906, $this->source), function ($__p__) use ($context, $macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env, $this->source, (isset($context["p"]) || array_key_exists("p", $context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.', 906, $this->source); })()), "id", [], "any", false, false, true, 906) != twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 906, $this->source); })()), "id", [], "any", false, false, true, 906)); }), 0, 4);
// line 907
echo "
\t\t\t\t\t\t";
// line 908
if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 908, $this->source); })())) > 0)) {
// line 909
echo "\t\t\t\t\t\t";
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 909, $this->source); })()));
foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
// line 910
echo "\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"";
// line 911
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env, $this->source, $context["Product"], "id", [], "any", false, false, true, 911)]), "html", null, true);
echo "\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"";
// line 913
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "main_list_image", [], "any", false, false, true, 913), 913, $this->source)), "save_image"), "html", null, true);
echo "\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">";
// line 915
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "name", [], "any", false, false, true, 915), 915, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">";
// line 916
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "getPrice02IncTaxMin", [], "any", false, false, true, 916), 916, $this->source)), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 920
echo "\t\t\t\t\t\t";
}
// line 921
echo "\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t";
}
// line 924
echo "\t\t\t</div>
\t\t\t";
}
// line 926
echo "\t\t\t<!-- おすすめ商品 -->
\t\t\t";
// line 927
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 927, $this->source); })()), "ProductCategories", [], "any", false, false, true, 927))) {
// line 928
echo "\t\t\t";
$context["ChildCategory"] = twig_first($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 928, $this->source); })()), "ProductCategories", [], "any", false, false, true, 928), 928, $this->source), function ($__pc__) use ($context, $macros) { $context["pc"] = $__pc__; return !(null === twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["pc"]) || array_key_exists("pc", $context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.', 928, $this->source); })()), "Category", [], "any", false, false, true, 928), "parent", [], "any", false, false, true, 928)); }));
// line 929
echo "\t\t\t";
$context["ParentCategory"] = twig_first($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 929, $this->source); })()), "ProductCategories", [], "any", false, false, true, 929), 929, $this->source), function ($__pc__) use ($context, $macros) { $context["pc"] = $__pc__; return ((null === twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["pc"]) || array_key_exists("pc", $context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.', 929, $this->source); })()), "Category", [], "any", false, false, true, 929), "parent", [], "any", false, false, true, 929)) && !twig_in_filter(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["pc"]) || array_key_exists("pc", $context) ? $context["pc"] : (function () { throw new RuntimeError('Variable "pc" does not exist.', 929, $this->source); })()), "Category", [], "any", false, false, true, 929), "name", [], "any", false, false, true, 929), [0 => "新着商品", 1 => "迷ったらココ!!開店祝い等の定番!", 2 => "郵送商品(全国へ宅急便でお届けします)", 3 => "委託商品'(全国のお花屋さんに委託します)"])); }));
// line 930
echo "
\t\t\t<div class=\"same_category_product_area\">
\t\t\t\t";
// line 932
if ( !twig_test_empty((isset($context["ChildCategory"]) || array_key_exists("ChildCategory", $context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.', 932, $this->source); })()))) {
// line 933
echo "\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
\t\t\t\t\t<div class=\"product_grid osusume\">
\t\t\t\t\t\t";
// line 936
$context["Products"] = twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [0 => ["category_id" => twig_get_attribute($this->env, $this->source, // line 937
(isset($context["ChildCategory"]) || array_key_exists("ChildCategory", $context) ? $context["ChildCategory"] : (function () { throw new RuntimeError('Variable "ChildCategory" does not exist.', 937, $this->source); })()), "Category", [], "any", false, false, true, 937)]], "method", false, false, true, 936), "orderBy", [0 => "p.create_date", 1 => "DESC"], "method", false, false, true, 936), "setMaxResults", [0 => 100], "method", false, false, true, 938), "getQuery", [], "method", false, false, true, 938), "getResult", [], "method", false, false, true, 938);
// line 939
echo "
\t\t\t\t\t\t";
// line 940
$context["FilteredProducts"] = twig_slice($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products", $context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.', 940, $this->source); })()), 940, $this->source), function ($__p__) use ($context, $macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env, $this->source, (isset($context["p"]) || array_key_exists("p", $context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.', 940, $this->source); })()), "id", [], "any", false, false, true, 940) != twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 940, $this->source); })()), "id", [], "any", false, false, true, 940)); }), 0, 200);
// line 941
echo "
\t\t\t\t\t\t";
// line 942
if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 942, $this->source); })())) > 0)) {
// line 943
echo "\t\t\t\t\t\t";
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 943, $this->source); })()));
foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
// line 944
echo "\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"";
// line 945
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env, $this->source, $context["Product"], "id", [], "any", false, false, true, 945)]), "html", null, true);
echo "\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"";
// line 947
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "main_list_image", [], "any", false, false, true, 947), 947, $this->source)), "save_image"), "html", null, true);
echo "\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">";
// line 949
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "name", [], "any", false, false, true, 949), 949, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">";
// line 950
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "getPrice02IncTaxMin", [], "any", false, false, true, 950), 950, $this->source)), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t\t";
// line 952
echo "\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 955
echo "\t\t\t\t\t\t";
}
// line 956
echo "\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t";
} elseif ( !twig_test_empty( // line 958
(isset($context["ParentCategory"]) || array_key_exists("ParentCategory", $context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.', 958, $this->source); })()))) {
// line 959
echo "\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
\t\t\t\t\t<div class=\"product_grid osusume\">
\t\t\t\t\t\t";
// line 962
$context["Products"] = twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, $this->env->getFunction('repository')->getCallable()("Eccube\\Entity\\Product"), "getQueryBuilderBySearchData", [0 => ["category_id" => twig_get_attribute($this->env, $this->source, // line 963
(isset($context["ParentCategory"]) || array_key_exists("ParentCategory", $context) ? $context["ParentCategory"] : (function () { throw new RuntimeError('Variable "ParentCategory" does not exist.', 963, $this->source); })()), "Category", [], "any", false, false, true, 963)]], "method", false, false, true, 962), "orderBy", [0 => "p.create_date", 1 => "DESC"], "method", false, false, true, 962), "setMaxResults", [0 => 100], "method", false, false, true, 964), "getQuery", [], "method", false, false, true, 964), "getResult", [], "method", false, false, true, 964);
// line 965
echo "
\t\t\t\t\t\t";
// line 966
$context["FilteredProducts"] = twig_slice($this->env, twig_array_filter($this->env, $this->sandbox->ensureToStringAllowed((isset($context["Products"]) || array_key_exists("Products", $context) ? $context["Products"] : (function () { throw new RuntimeError('Variable "Products" does not exist.', 966, $this->source); })()), 966, $this->source), function ($__p__) use ($context, $macros) { $context["p"] = $__p__; return (twig_get_attribute($this->env, $this->source, (isset($context["p"]) || array_key_exists("p", $context) ? $context["p"] : (function () { throw new RuntimeError('Variable "p" does not exist.', 966, $this->source); })()), "id", [], "any", false, false, true, 966) != twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 966, $this->source); })()), "id", [], "any", false, false, true, 966)); }), 0, 200);
// line 967
echo "
\t\t\t\t\t\t";
// line 968
if ((twig_length_filter($this->env, (isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 968, $this->source); })())) > 0)) {
// line 969
echo "\t\t\t\t\t\t";
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable((isset($context["FilteredProducts"]) || array_key_exists("FilteredProducts", $context) ? $context["FilteredProducts"] : (function () { throw new RuntimeError('Variable "FilteredProducts" does not exist.', 969, $this->source); })()));
foreach ($context['_seq'] as $context["_key"] => $context["Product"]) {
// line 970
echo "\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"";
// line 971
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env, $this->source, $context["Product"], "id", [], "any", false, false, true, 971)]), "html", null, true);
echo "\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"";
// line 973
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "main_list_image", [], "any", false, false, true, 973), 973, $this->source)), "save_image"), "html", null, true);
echo "\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">";
// line 975
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "name", [], "any", false, false, true, 975), 975, $this->source), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">";
// line 976
echo twig_escape_filter($this->env, $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter($this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, $context["Product"], "getPrice02IncTaxMin", [], "any", false, false, true, 976), 976, $this->source)), "html", null, true);
echo "</p>
\t\t\t\t\t\t\t\t";
// line 978
echo "\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 981
echo "\t\t\t\t\t\t";
}
// line 982
echo "\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t";
}
// line 985
echo "\t\t\t</div>
\t\t\t";
}
// line 987
echo "
";
// line 988
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 988, $this->source); })()), "ViewData", [0 => 9], "method", false, false, true, 988))) {
// line 989
echo " <div class=\"produt_reco_text_area\">
<h3 class=\"area_ttl\">こんな花をお探しの方におすすめ</h3>
\t\t\t\t<div class=\"frame\">
<p class=\"produt_reco_text\">";
// line 992
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 992, $this->source); })()), "ViewData", [0 => 9], "method", false, false, true, 992), 992, $this->source), "html", null, true);
echo "</p>
</div>
</div>
";
}
// line 996
echo " ";
if ( !twig_test_empty(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 996, $this->source); })()), "ViewData", [0 => 10], "method", false, false, true, 996))) {
// line 997
echo " <div class=\"produt_scene_text_area\">
<div class=\"frame\">
<h3 class=\"area_ttl\">こんなシーンでも使われています</h3>
<p class=\"produt_scene_text\">";
// line 1000
echo twig_escape_filter($this->env, $this->sandbox->ensureToStringAllowed(twig_get_attribute($this->env, $this->source, (isset($context["Product"]) || array_key_exists("Product", $context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.', 1000, $this->source); })()), "ViewData", [0 => 10], "method", false, false, true, 1000), 1000, $this->source), "html", null, true);
echo "</p>
</div>
</div>
";
}
// line 1004
echo "\t\t</div>
\t</div>
</section>
\t";
// line 1008
echo $this->extensions['Eccube\Twig\Extension\IgnoreTwigSandboxErrorExtension']->twig_include($this->env, $context, "Product/signboard_preview.twig");
echo "
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "__string_template__3d1656759d2f44506edf71d82f27c517";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 1913 => 1008, 1907 => 1004, 1900 => 1000, 1895 => 997, 1892 => 996, 1885 => 992, 1880 => 989, 1878 => 988, 1875 => 987, 1871 => 985, 1866 => 982, 1863 => 981, 1855 => 978, 1851 => 976, 1847 => 975, 1842 => 973, 1837 => 971, 1834 => 970, 1829 => 969, 1827 => 968, 1824 => 967, 1822 => 966, 1819 => 965, 1817 => 963, 1816 => 962, 1811 => 959, 1809 => 958, 1805 => 956, 1802 => 955, 1794 => 952, 1790 => 950, 1786 => 949, 1781 => 947, 1776 => 945, 1773 => 944, 1768 => 943, 1766 => 942, 1763 => 941, 1761 => 940, 1758 => 939, 1756 => 937, 1755 => 936, 1750 => 933, 1748 => 932, 1744 => 930, 1741 => 929, 1738 => 928, 1736 => 927, 1733 => 926, 1729 => 924, 1724 => 921, 1721 => 920, 1711 => 916, 1707 => 915, 1702 => 913, 1697 => 911, 1694 => 910, 1689 => 909, 1687 => 908, 1684 => 907, 1682 => 906, 1679 => 905, 1677 => 903, 1676 => 902, 1671 => 900, 1668 => 899, 1666 => 898, 1662 => 896, 1659 => 895, 1649 => 891, 1645 => 890, 1640 => 888, 1635 => 886, 1632 => 885, 1627 => 884, 1625 => 883, 1622 => 882, 1620 => 881, 1617 => 880, 1615 => 878, 1614 => 877, 1609 => 875, 1606 => 874, 1604 => 873, 1600 => 871, 1597 => 870, 1594 => 869, 1592 => 868, 1588 => 866, 1582 => 863, 1579 => 862, 1577 => 861, 1568 => 854, 1564 => 852, 1556 => 849, 1541 => 847, 1532 => 846, 1515 => 845, 1511 => 843, 1507 => 842, 1503 => 841, 1500 => 840, 1497 => 839, 1495 => 838, 1483 => 835, 1480 => 834, 1477 => 833, 1475 => 832, 1469 => 828, 1462 => 825, 1456 => 822, 1453 => 821, 1451 => 820, 1445 => 818, 1443 => 817, 1432 => 811, 1428 => 810, 1422 => 807, 1418 => 806, 1413 => 803, 1406 => 799, 1402 => 797, 1395 => 793, 1387 => 787, 1377 => 785, 1375 => 784, 1367 => 779, 1360 => 775, 1354 => 772, 1350 => 771, 1343 => 770, 1340 => 769, 1334 => 766, 1330 => 765, 1327 => 764, 1325 => 763, 1320 => 761, 1316 => 760, 1313 => 759, 1311 => 758, 1305 => 755, 1297 => 751, 1295 => 750, 1292 => 749, 1286 => 746, 1282 => 745, 1279 => 744, 1276 => 743, 1270 => 740, 1264 => 739, 1261 => 738, 1255 => 735, 1251 => 734, 1248 => 733, 1246 => 732, 1244 => 731, 1241 => 730, 1239 => 729, 1236 => 728, 1231 => 726, 1224 => 725, 1221 => 724, 1217 => 722, 1212 => 720, 1203 => 719, 1201 => 718, 1197 => 717, 1190 => 716, 1188 => 715, 1185 => 714, 1182 => 713, 1176 => 710, 1170 => 707, 1167 => 706, 1164 => 705, 1160 => 703, 1154 => 701, 1151 => 700, 1145 => 698, 1143 => 697, 1140 => 696, 1137 => 695, 1133 => 693, 1127 => 691, 1124 => 690, 1118 => 688, 1116 => 687, 1113 => 686, 1111 => 685, 1108 => 684, 1097 => 682, 1093 => 681, 1090 => 680, 1085 => 677, 1082 => 676, 1074 => 669, 1067 => 667, 1063 => 665, 1058 => 663, 1054 => 662, 1049 => 661, 1047 => 660, 1043 => 659, 1039 => 658, 1035 => 657, 1028 => 656, 1026 => 655, 1021 => 654, 1018 => 653, 1015 => 652, 1010 => 651, 1007 => 650, 1004 => 649, 1001 => 648, 998 => 647, 996 => 646, 994 => 645, 975 => 644, 958 => 643, 948 => 635, 941 => 633, 937 => 631, 932 => 629, 927 => 628, 925 => 627, 921 => 626, 914 => 625, 912 => 624, 909 => 623, 906 => 622, 902 => 621, 900 => 620, 889 => 619, 867 => 617, 849 => 616, 839 => 608, 829 => 607, 759 => 545, 728 => 516, 726 => 515, 621 => 413, 617 => 412, 613 => 411, 609 => 410, 605 => 408, 599 => 406, 597 => 405, 592 => 404, 589 => 403, 579 => 401, 565 => 399, 557 => 398, 539 => 397, 534 => 395, 511 => 375, 501 => 368, 466 => 336, 461 => 333, 452 => 327, 448 => 325, 446 => 324, 443 => 323, 434 => 317, 430 => 315, 428 => 314, 331 => 219, 323 => 217, 321 => 216, 316 => 214, 313 => 213, 311 => 212, 297 => 201, 292 => 199, 229 => 138, 214 => 125, 212 => 124, 160 => 83, 75 => 6, 65 => 5, 54 => 1, 52 => 3, 39 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends 'default_frame.twig' %}
{% set body_class = 'product_page' %}
{% block stylesheet %}
<style>
\t.slick-slider {
\t\tmargin-bottom: 30px;
\t}
\t.slick-dots {
\t\tposition: absolute;
\t\tbottom: -45px;
\t\tdisplay: block;
\t\twidth: 100%;
\t\tpadding: 0;
\t\tlist-style: none;
\t\ttext-align: center;
\t}
\t.slick-dots li {
\t\tposition: relative;
\t\tdisplay: inline-block;
\t\twidth: 20px;
\t\theight: 20px;
\t\tmargin: 0 5px;
\t\tpadding: 0;
\t\tcursor: pointer;
\t}
\t.slick-dots li button {
\t\tfont-size: 0;
\t\tline-height: 0;
\t\tdisplay: block;
\t\twidth: 20px;
\t\theight: 20px;
\t\tpadding: 5px;
\t\tcursor: pointer;
\t\tcolor: transparent;
\t\tborder: 0;
\t\toutline: none;
\t\tbackground: transparent;
\t}
\t.slick-dots li button:hover,
\t.slick-dots li button:focus {
\t\toutline: none;
\t}
\t.slick-dots li button:hover:before,
\t.slick-dots li button:focus:before {
\t\topacity: 1;
\t}
\t.slick-dots li button:before {
\t\tcontent: \" \";
\t\tline-height: 20px;
\t\tposition: absolute;
\t\ttop: 0;
\t\tleft: 0;
\t\twidth: 12px;
\t\theight: 12px;
\t\ttext-align: center;
\t\topacity: .25;
\t\tbackground-color: black;
\t\tborder-radius: 50%;
\t}
\t.slick-dots li.slick-active button:before {
\t\topacity: .75;
\t\tbackground-color: black;
\t}
\t.slick-dots li button.thumbnail img {
\t\twidth: 0;
\t\theight: 0;
\t}
</style>
{% endblock %}
{% block javascript %}<script>
\$(function () {
var noChange = true;
\$('.item_visual').on('afterChange', function (event, slick, currentSlide) {
if (noChange) {
var \$img = \$(\"div[data-index='\" + currentSlide + \"']\").find('img');
if (\$('#classcategory_id1').length > 0) {
\$('#classcategory_id1').val(\"__unselected\");
\$('#classcategory_id1').change();
}
if (\$img.length > 0) {
var class1 = \$img.data('class_category1');
if (class1) {
\$('#classcategory_id1').val(class1);
\$('#classcategory_id1').change();
}
var class2 = \$img.data('class_category2');
if (class2) {
setTimeout(function () {
\$('#classcategory_id2').val(class2);
\$('#classcategory_id2').change();
}, 100);
}
}
} else {
noChange = true;
}
});
if (\$('#classcategory_id1').length > 0 && \$('#classcategory_id2').length > 0) {
\$('#classcategory_id2').change(function () {
var \$this = \$(this);
if (\$this.val()) {
var class1 = \$('#classcategory_id1').val();
if (\$('#apg_product_class_image_thumb-' + class1 + '-' + \$this.val()).length > 0) {
var class2 = \$this.val();
\$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
\$('.item_visual').slick('slickGoTo', \$index);
noChange = false;
}
}
});
{% if apgProductClassConfig.getImageType() == constant('Plugin\\\\\\ApgProductClassImage42\\\\\\Domain\\\\\\ClassImageType::CLASS_IMAGE1_ONLY') %}
\$('#classcategory_id1').change(function () {
var \$this = \$(this);
if (\$this.val() != \"__unselected\") {
var class1 = \$this.val();
if (\$(\"img[data-class_category1='\" + class1 + \"']\").length > 0) {
var class2 = \$(\"img[data-class_category1='\" + class1 + \"']\").data('class_category2');
\$index = \$('#apg_product_class_image_thumb-' + class1 + '-' + class2).parents('div').data('index');
\$('.item_visual').slick('slickGoTo', \$index);
noChange = false;
}
}
});
{% endif %}
} else if (\$('#classcategory_id1').length > 0) {
\$('#classcategory_id1').change(function () {
var \$this = \$(this);
if (\$this.val() != \"__unselected\") {
if (\$('#apg_product_class_image_thumb-' + \$this.val() + '-').length > 0) {
\$index = \$('#apg_product_class_image_thumb-' + \$this.val() + '-').parents('div').data('index');
\$('.item_visual').slick('slickGoTo', \$index);
noChange = false;
}
}
});
}
});
</script>
<script>
\t// #ratingModal がURLに含まれる場合、レビューのモーダルを開く
\t\$(function() {
\t\tconst currentHash = window.location.hash;
\t\tif (currentHash.substring(1).includes('ratingModal')) {
\t\t\t\$(\"#ratingModal\").modal('show');
\t\t}
\t});
</script>
<script>
\t// ボリュームアップの自由入力対応
\tconst volumeUpFlower = \"productoption2\";
\tconst volumeUpBalloon = \"productoption1\";
\tconst volumeUpFlower_free = \"productoption16\";
\tconst volumeUpBalloon_free = \"productoption15\";
\t\$(function(){
\t\t\$(`#\${volumeUpFlower_free}`).parents(\".plg_aoio\").hide();
\t\t\$(`#\${volumeUpBalloon_free}`).parents(\".plg_aoio\").hide();
\t\t\$(`#\${volumeUpFlower}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpFlower}_free\" name=\"\${volumeUpFlower}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpFlower}_free\">自由入力</label></div>`)
\t\t\$(`#\${volumeUpBalloon}`).append(`<div class=\"form-check\"><input type=\"radio\" id=\"\${volumeUpBalloon}_free\" name=\"\${volumeUpBalloon}\" class=\"form-check-input js-volumeUp_free\" value=\"\"><label class=\"form-check-label\" for=\"\${volumeUpBalloon}_free\">自由入力</label></div>`)
\t\t\$(`#\${volumeUpFlower} .form-check, #\${volumeUpBalloon} .form-check`).on('click', function() {
\t\t\tconst \$this_radio = \$(this).find('input[type=\"radio\"]');
\t\t\tconst name = \$this_radio.attr(\"name\");
\t\t\tlet free_input = \"\";
\t\t\tif(name == volumeUpFlower){
\t\t\t\tfree_input = \$(`#\${volumeUpFlower_free}`);
\t\t\t} else if(name == volumeUpBalloon){
\t\t\t\tfree_input = \$(`#\${volumeUpBalloon_free}`);
\t\t\t} else {
\t\t\t\treturn;
\t\t\t}
\t\t\tif(\$this_radio.hasClass(\"js-volumeUp_free\")){
\t\t\t\tfree_input.parents(\".plg_aoio\").show();
\t\t\t} else {
\t\t\t\tfree_input.parents(\".plg_aoio\").hide();
\t\t\t\tfree_input.val(\"\");
\t\t\t}
\t\t});
\t});
</script>
<script src=\"{{ asset('assets/js/signboard.js') }}\"></script>
<script>
\teccube.classCategories = {{ class_categories_as_json(Product) | raw }};
\t// 規格2に選択肢を割り当てる。
\tfunction fnSetClassCategories(form, classcat_id2_selected) {
\t\tvar \$form = \$(form);
\t\tvar product_id = \$form.find('input[name=product_id]').val();
\t\tvar \$sele1 = \$form.find('select[name=classcategory_id1]');
\t\tvar \$sele2 = \$form.find('select[name=classcategory_id2]');
\t\teccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
\t}
\t{% if form.classcategory_id2 is defined %}
\tfnSetClassCategories(
\t\t\$('#form1'), {{ form.classcategory_id2.vars.value | json_encode | raw }}
\t);
\t{% elseif form.classcategory_id1 is defined %}
\teccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value | json_encode | raw }}, null);
\t{% endif %}
</script>
<script>
\t\$(function() {
\t // 初期状態として、最初の .form-check に active クラスを付与してラジオボタンを選択
\t \$('#productoption2 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
\t \$('#productoption1 .form-check:first').addClass('active').find('input[type=\"radio\"]').prop('checked', true).trigger('change');
\t
\t // クリックイベントの設定
\t \$('#productoption2 .form-check, #productoption1 .form-check').on('click', function() {
\t\t// 対象の親を取得して、同じブロック内の .form-check から active を削除
\t\t\$(this).closest('#productoption2, #productoption1').find('.form-check').removeClass('active');
\t
\t\t// クリックした要素に active を付与
\t\t\$(this).addClass('active');
\t
\t\t// 対象のラジオボタンを選択状態にする
\t\t\$(this).find('input[type=\"radio\"]').prop('checked', true).trigger('change');
\t });
\t});
\t</script>
\t
<script>
\t\$(function () {
\t\t\$('[for=productoption2_2]').each(function () {
\t \$(this).append('<span class=\"em\">★一番人気</span>');
\t\t});
\t\t
\t\t// bfcache無効化
\t\t\$(window).bind('pageshow', function (event) {
\t\t\tif (event.originalEvent.persisted) {
\t\t\t\tlocation.reload(true);
\t\t\t}
\t\t});
\t\t// Core Web Vital の Cumulative Layout Shift(CLS)対策のため
\t\t// img タグに width, height が付与されている.
\t\t// 630px 未満の画面サイズでは縦横比が壊れるための対策
\t\t// see https://github.com/EC-CUBE/ec-cube/pull/5023
\t\t// \$('.ec-grid2__cell').hide();
\t\tvar removeSize = function () {
\t\t\t\$('.slide-item').height('');
\t\t\t\$('.slide-item img')
\t\t\t\t.removeAttr('width')
\t\t\t\t.removeAttr('height')
\t\t\t\t.removeAttr('style');
\t\t};
\t\tvar slickInitial = function (slick) {
\t\t\t\$('.ec-grid2__cell').fadeIn(1500);
\t\t\tvar baseHeight = \$(slick.target).height();
\t\t\tvar baseWidth = \$(slick.target).width();
\t\t\tvar rate = baseWidth / baseHeight;
\t\t\t\$('.slide-item').height(baseHeight * rate); // 余白を削除する
\t\t\t// transform を使用することでCLSの影響を受けないようにする
\t\t\t\$('.slide-item img')
\t\t\t\t.css(
\t\t\t\t\t{
\t\t\t\t\t\t'transform-origin': 'top left',
\t\t\t\t\t\t'transform': 'scaleY(' + rate + ')',
\t\t\t\t\t\t'transition': 'transform .1s'
\t\t\t\t\t}
\t\t\t\t);
\t\t\t// 正しいサイズに近くなったら属性を解除する
\t\t\tsetTimeout(removeSize, 500);
\t\t};
\t\t\$('.item_visual').on('init', slickInitial);
\t\t// リサイズ時は CLS の影響を受けないため属性を解除する
\t\t\$(window).resize(removeSize);
\t\t
\t let tabs = \$(\".tab_btn .cont\");
\t\ttabs.on(\"click\", function() {
\t\t\t\$(\".tab_btn .cont\").removeClass(\"show\");
\t\t\t\$(this).addClass(\"show\");
\t\t\tconst index = tabs.index(\$(this));
\t\t\t\$(\".tab_box\").removeClass(\"show\").eq(index).addClass(\"show\");
\t\t});
\t\t
\t\t\$(\".js_more_view\").on(\"click\", function() {
\$(this).toggleClass(\"on_click\");
\$(\".text_hide\").slideToggle(1000);
});
\t});
</script>
<script>
\t\$(function () {
\t\t\$(\".open_cart_modal\").on(\"click\", function() {
\t\t\t\$('.ec-modal').hide();
\t\t\t\$(\"#cart_modal\").show();
\t\t});
\t\t
\t\t\$('.add-cart').on('click', function (event) {
\t\t\t\$form = \$('#form1');
\t\t\t{% if form.classcategory_id1 is defined %}
\t\t\t// 規格1フォームの必須チェック
\t\t\tif (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
\t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
\t\t\t\treturn true;
\t\t\t} else {
\t\t\t\t\$('#classcategory_id1')[0].setCustomValidity('');
\t\t\t}
\t\t\t{% endif %}
\t\t\t{% if form.classcategory_id2 is defined %}
\t\t\t// 規格2フォームの必須チェック
\t\t\tif (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
\t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
\t\t\t\treturn true;
\t\t\t} else {
\t\t\t\t\$('#classcategory_id2')[0].setCustomValidity('');
\t\t\t}
\t\t\t{% endif %}
\t\t\t// 個数フォームのチェック
\t\t\tif (\$('#quantity').val() < 1) {
\t\t\t\t\$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
\t\t\t\treturn true;
\t\t\t} else {
\t\t\t\t\$('#quantity')[0].setCustomValidity('');
\t\t\t}
\t\t\t// オプション項目のチェック
\t\t\tif (submit_check(\$form)) {
\t\t\t\treturn true;
\t\t\t}
\t\t\tevent.preventDefault();
\t\t\t\$.ajax({
\t\t\t\turl: \$form.attr('action'),
\t\t\t\ttype: \$form.attr('method'),
\t\t\t\tdata: \$form.serialize(),
\t\t\t\tdataType: 'json',
\t\t\t\tbeforeSend: function (xhr, settings) {
\t\t\t\t\t// Buttonを無効にする
\t\t\t\t\t\$('.add-cart').prop('disabled', true);
\t\t\t\t}
\t\t\t}).done(function (data) {
\t\t\t\t// レスポンス内のメッセージをalertで表示
\t\t\t\t\$.each(data.messages, function () {
\t\t\t\t\t\$('#added_cart .ec-modal-header').text(this);
\t\t\t\t});
\t\t\t\t\$('.ec-modal').hide();
\t\t\t\t\$(\"#added_cart\").show();
\t\t\t\t// カートブロックを更新する
\t\t\t\t\$.ajax({
\t\t\t\t\turl: \"{{ url('block_cart') }}\",
\t\t\t\t\ttype: 'GET',
\t\t\t\t\tdataType: 'html'
\t\t\t\t}).done(function (html) {
\t\t\t\t\t\$('.ec-headerRole__cart').html(html);
\t\t\t\t});
\t\t\t}).fail(function (data) {
\t\t\t\talert('{{ 'カートへの追加に失敗しました。'|trans }}');
\t\t\t}).always(function (data) {
\t\t\t\t// Buttonを有効にする
\t\t\t\t\$('.add-cart').prop('disabled', false);
\t\t\t});
\t\t});
\t});
\t\$('.ec-modal-wrap').on('click', function (e) {
\t\t// モーダル内の処理は外側にバブリングさせない
\t\te.stopPropagation();
\t});
\t\$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function () {
\t\t\$('.ec-modal').hide()
\t});
</script>
<script type=\"application/ld+json\">
{
\"@context\": \"https://schema.org/\",
\"@type\": \"Product\",
\"name\": \"{{ Product.name }}\",
\"image\": [
{% for img in Product.ProductImage %}
\"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
{% else %}
\"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
{% endfor %}
],
\"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
{% if Product.code_min %}
\"sku\": \"{{ Product.code_min }}\",
{% endif %}
\"offers\": {
\"@type\": \"Offer\",
\"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
\"priceCurrency\": \"{{ eccube_config.currency }}\",
\"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
\"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
}
}
</script>
\t<script>
\t\t// ...既存のHTMLの後などに追加...
document.addEventListener('DOMContentLoaded', function() {
// 対象IDリスト
const ids = [
'productoption3',
'productoption4',
'productoption5',
'productoption10',
'productoption6',
'productoption7',
'productoption8',
'productoption9'
];
// tatefuda_boxを集める配列
const tatefudaBoxes = [];
ids.forEach(function(id) {
const el = document.getElementById(id);
if (el) {
const parent = el.closest('.plg_aoio');
if (parent && !parent.classList.contains('tatefuda_box')) {
parent.classList.add('tatefuda_box');
tatefudaBoxes.push(parent);
}
}
});
if (tatefudaBoxes.length > 0) {
// tatefuda_boxの最初と最後を取得
const first = tatefudaBoxes[0];
const last = tatefudaBoxes[tatefudaBoxes.length - 1];
// tatefuda_box_areaを作成
const wrapper = document.createElement('div');
wrapper.className = 'tatefuda_box_area';
// 最初の前に挿入
first.parentNode.insertBefore(wrapper, first);
// tatefuda_boxを順にwrapperへ移動
tatefudaBoxes.forEach(function(box) {
wrapper.appendChild(box);
});
}
});
// document.addEventListener(\"DOMContentLoaded\", function () {
// // 要素の取得
// const recoArea = document.querySelector(\".produt_reco_text_area\");
// const sceneArea = document.querySelector(\".produt_scene_text_area\");
// const latestBlock = document.querySelector(\".ec-layoutRole__mainBottom .top_inner .latest_block\");
//
// // latest_blockの下に要素を移動
// if (latestBlock) {
// latestBlock.insertAdjacentElement(\"afterend\", sceneArea);
// latestBlock.insertAdjacentElement(\"afterend\", recoArea);
// }
//
// // produt_reco_textを分割して複数の<p>に
// const recoText = recoArea.querySelector(\".produt_reco_text\");
// if (recoText) {
// const parent = recoText.parentElement;
// const texts = recoText.textContent.split(\",\");
//
// // 元の要素を削除
// recoText.remove();
//
// // 分割したテキストを<p>にして挿入
// texts.forEach(text => {
// const p = document.createElement(\"p\");
// p.className = \"produt_reco_text\";
// p.textContent = text.trim();
// parent.appendChild(p);
// });
// }
// });
\t</script>
\t<script>
document.addEventListener(\"DOMContentLoaded\", function () {
var productMain = document.querySelector(\"#product_main\");
if (!productMain) return;
var checkInterval = setInterval(function () {
var ratingArea = document.querySelector(\"#product_rating_area\");
if (ratingArea) {
productMain.parentNode.insertBefore(ratingArea, productMain.nextSibling);
clearInterval(checkInterval); // 見つけたら監視停止
}
}, 100); // 100ms ごとに確認
});
</script>
{% if(Product.id == 896) %}
<script>
\t\$(function() {
\t\tconst \$option_input = \$(\"#productoption14\");
\t\tconst \$option_box = \$option_input.parents(\".plg_aoio\");
\t\t\$option_box.css({
\t\t\t\"visibility\":\"hidden\",
\t\t\t\"height\":\"0\",
\t\t\t\"margin\":\"0\",
\t\t\t\"padding\":\"0\",
\t\t});
\t\t
\t\tconst \$price_input = \$(\"<input>\", {
\t\t\ttype: \"number\",
\t\t\tclass: \"ec-price__price\",
\t\t\tid: \"custom_price_input\",
\t\t\tmin: 0,
\t\t\tvalue: 0,
\t\t});
\t\t
\t\t\$(\".ec-price\").html(\$price_input);
\t\t\$(\".ec-price\").append('<span class=\"ec-price__tax\">円</span>');
\t\t\$(\".ec-price\").append('<p class=\"ec-price__tax\">税抜き金額をご入力ください</p>');
\t\t
\t\t\$(\"#custom_price_input\").on(\"change\", function() {
\t\t\t\$option_input.val(\$(this).val()).trigger(\"change\");
\t\t});
\t});
</script>
{% endif %}
<script>
document.addEventListener('DOMContentLoaded', function() {
// --- レビューセクションが無い場合、active を付与 ---
const reviewSection = document.querySelector('#product_rating_area #ratingContent .row.customer-reviews');
if (!reviewSection) {
const badges = document.querySelectorAll('.ec-sliderItemRole .btm_img_review_badge');
badges.forEach(badge => badge.classList.add('active'));
}
// --- placeholder の変更 & height の変更 ---
const remarks = document.getElementById('rating_remarks');
if (remarks) {
remarks.placeholder = \"例)\\n開店祝いで利用しました。華やかでボリュームもあり、先方にも喜んでもらえました。\";
remarks.style.height = \"6em\"; // ← ここを追加
}
});
</script>
<script>
document.addEventListener(\"DOMContentLoaded\", function() {
const priceSelector = \".ec-productRole .ec-productRole__price .ec-price .ec-price__price\";
// 子要素(label)を使って .mb-3 を特定
const container = document.querySelector('.mb-3 > label[for=\"classcategory_id1\"]')?.closest('.mb-3');
if (!container) return;
// p要素がなければ作成
let priceParagraph = container.querySelector(\".js_type_price\");
if (!priceParagraph) {
priceParagraph = document.createElement(\"p\");
priceParagraph.classList.add(\"js_type_price\");
container.appendChild(priceParagraph);
}
const priceElement = document.querySelector(priceSelector);
if (!priceElement) return;
// 更新処理
const updatePrice = () => {
const priceText = priceElement.textContent.trim();
if (priceText) {
priceParagraph.innerHTML = `\${priceText}<span class=\"size\">税込</span>`;
} else {
priceParagraph.innerHTML = \"\";
}
};
// 初期表示
updatePrice();
// 価格要素の変化を監視
const observer = new MutationObserver(updatePrice);
observer.observe(priceElement, { childList: true, characterData: true, subtree: true });
});
</script>
{% endblock %}
{% block main %}
<section class=\"top_inner\">
\t<div id=\"main-contents\" class=\"colnum1\">
\t\t<div class=\"ec-productRole\">
\t\t\t<div class=\"ec-grid2\" id=\"product_main\">
\t\t\t\t<div class=\"ec-grid2__cell\">
\t\t\t\t\t<div class=\"ec-sliderItemRole\">
\t\t\t\t\t\t<div class=\"item_visual\">
\t\t\t\t\t\t\t{% for ProductImage in Product.ProductImage %}
\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\" {% if loop.index> 1 %} loading=\"lazy\"{% endif %}></div>
\t\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t<div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\" alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\" height=\"550\"></div>
\t\t\t\t\t\t\t{% endfor %}{% if Product.hasProductClass -%}
{% for ProductClass in Product.getProductClasses() %}
{% if ProductClass.file_name %}
<div class=\"slide-item\">
{% if ProductClass.ClassCategory1 and ProductClass.ClassCategory2 %}
<img id=\"apg_product_class_image-{{ ProductClass.ClassCategory1.id }}-{{ ProductClass.ClassCategory2.id }}\"
src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\">
{% elseif ProductClass.ClassCategory1 %}
<img id=\"apg_product_class_image-{{ ProductClass.ClassCategory1.id }}-\"
src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\">
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endif %}
\t\t\t\t\t\t</div>
<div class=\"btm_img_review_badge\">
<a href=\"#product_rating_area\" class=\"badge_img\">
<img src=\"/html/user_data/assets/img/common/btm_img_review_badge.jpg\" alt=\"\">
</a>
</div>
\t\t\t\t\t\t<div class=\"item_nav\">
\t\t\t\t\t\t\t{% for ProductImage in Product.ProductImage %}
\t\t\t\t\t\t\t<div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\" height=\"133\" loading=\"lazy\"></div>
\t\t\t\t\t\t\t{% endfor %}{% if Product.hasProductClass -%}
{% if Product.ProductImage.count > 0 %}
{% set imageCount = Product.ProductImage.count - 1 %}
{% else %}
{% set imageCount = 0 %}
{% endif %}
{% for ProductClass in Product.getProductClasses() %}
{% if ProductClass.file_name %}
{% set imageCount = imageCount + 1 %}
<div class=\"slideThumb\" data-index=\"{{ imageCount }}\">
{% if ProductClass.ClassCategory1 and ProductClass.ClassCategory2 %}
<img id=\"apg_product_class_image_thumb-{{ ProductClass.ClassCategory1.id }}-{{ ProductClass.ClassCategory2.id }}\"
src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\"
data-class_category1=\"{{ ProductClass.ClassCategory1.id }}\"
data-class_category2=\"{{ ProductClass.ClassCategory2.id }}\">
{% elseif ProductClass.ClassCategory1 %}
<img id=\"apg_product_class_image_thumb-{{ ProductClass.ClassCategory1.id }}-\"
src=\"{{ asset(ProductClass.getImageUrl(),'save_image') }}\"
data-class_category1=\"{{ ProductClass.ClassCategory1.id }}\">
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endif %}
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"ec-grid2__cell\">
\t\t\t\t\t<div class=\"ec-productRole__profile\">
\t\t\t\t\t\t{# 商品名 #}
\t\t\t\t\t\t<div class=\"ec-productRole__title\">
\t\t\t\t\t\t\t<h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{# タグ #}
\t\t\t\t\t\t<ul class=\"ec-productRole__tags\">
\t\t\t\t\t\t\t{% for Tag in Product.Tags %}
\t\t\t\t\t\t\t<li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
\t\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t</ul>
{% if Product.ViewData(1) is not empty or Product.ViewData(2) is not empty %}
\t\t\t\t\t\t<div class=\"color_num_area color_num_area_1_2\">
\t\t\t\t\t\t\t{% if Product.ViewData(1) is not empty %}
\t\t\t\t\t\t\t<p class=\"color color_num_data\">{{ Product.ViewData(1) }}</p>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t{% if Product.ViewData(2) is not empty %}
\t\t\t\t\t\t\t<p class=\"num color_num_data\">{{ Product.ViewData(2) }}本立</p>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t{% if Product.ViewData(4) is not empty or Product.ViewData(5) is not empty %}
\t\t\t\t\t\t<div class=\"color_num_area color_num_area_4_5\">
\t\t\t\t\t\t\t{% if Product.ViewData(4) is not empty %}
\t\t\t\t\t\t\t<p class=\"dan color_num_data\">{{ Product.ViewData(4) }}段</p>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t{% if Product.ViewData(5) is not empty %}
\t\t\t\t\t\t\t<p class=\"leg_type color_num_data\">{{ Product.ViewData(5) }}</p>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t{% if Product.ViewData(6) is not empty %}
\t\t\t\t\t\t<div class=\"color_num_area color_num_area_6\">
\t\t\t\t\t\t\t<p class=\"kago_type color_num_data\">{{ Product.ViewData(6) }}</p>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t<div class=\"ec-productRole__description\">{{ Product.description_detail|raw|nl2br }}
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{# 通常価格 #}
\t\t\t\t\t\t{% if Product.hasProductClass -%}
\t\t\t\t\t\t<div class=\"ec-productRole__priceRegular\">
\t\t\t\t\t\t\t{% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
\t\t\t\t\t\t\t{% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
\t\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t{% if Product.getPrice01Max is not null %}
\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
\t\t\t\t\t\t<span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t{# 販売価格 #}
\t\t\t\t\t\t<div class=\"ec-productRole__price\">
\t\t\t\t\t\t\t{% if Product.hasProductClass -%}
\t\t\t\t\t\t\t{% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
\t\t\t\t\t\t\t<div class=\"ec-price\">
\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}</span>
\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t<div class=\"ec-price\">
\t\t\t\t\t\t\t\t<span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}</span>
\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t<div class=\"ec-price\">
\t\t\t\t\t\t\t\t<span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|price }}</span>
\t\t\t\t\t\t\t\t<span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% if Product.stock_find %}
\t\t\t\t\t\t\t<form class=\"form_add-cart\" action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\">
\t\t\t\t\t\t\t\t<div id=\"cart_modal\" class=\"ec-modal\">
\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
\t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
\t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\" /></span></span>
\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__actions\">
\t\t\t\t\t\t\t\t\t\t\t\t\t{% if form.classcategory_id1 is defined %}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_row(form.classcategory_id1) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.classcategory_id1) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t{% if form.classcategory_id2 is defined %}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-select\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_row(form.classcategory_id2) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.classcategory_id2) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t\t\t{{ include('Product/option.twig') }}<div class=\"ec-numberInput\"><span>{{ '数量'|trans }}</span>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_widget(form.quantity) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ form_errors(form.quantity) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t\t{{ form_rest(form) }}
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
\t\t\t\t\t\t\t\t\t\t\t\t\t<button type=\"submit\" class=\"ec-inlineBtn--action add-cart\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ 'カートに入れる'|trans }}
\t\t\t\t\t\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-box -->
\t\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-wrap -->
\t\t\t\t\t\t\t\t\t\t{% if Product.stock_min %}
\t\t\t\t\t\t\t\t\t\t\t<div class=\"ec-productRole__stock\">在庫数: <span class=\"stock_num\">{{ Product.stock_min }}{% if Product.stock_min != Product.stock_max %} ~ {{ Product.stock_max }}{% endif %}</span></div>
\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t</div><!-- /.ec-modal-overlay -->
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</form>
\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action open_cart_modal\">
\t\t\t\t\t\t\t\t\t{{ 'カートに入れる'|trans }}
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
\t\t\t\t\t\t\t\t\t{{ 'ただいま品切れ中です。'|trans }}
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t<div id=\"added_cart\" class=\"ec-modal\">
\t\t\t\t\t\t\t<div class=\"ec-modal-overlay\">
\t\t\t\t\t\t\t\t<div class=\"ec-modal-wrap\">
\t\t\t\t\t\t\t\t\t<span class=\"ec-modal-close\"><span class=\"ec-icon\"><img src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\" /></span></span>
\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-header text-center\">{{ 'カートに追加しました。'|trans }}</div>
\t\t\t\t\t\t\t\t\t<div class=\"ec-modal-box\">
\t\t\t\t\t\t\t\t\t\t<div class=\"ec-role\">
\t\t\t\t\t\t\t\t\t\t\t<span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
\t\t\t\t\t\t\t\t\t\t\t<a href=\"{{ url('cart') }}\" class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% if BaseInfo.option_favorite_product %}
\t\t\t\t\t\t<form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
\t\t\t\t\t\t\t<div class=\"ec-productRole__btn\">
\t\t\t\t\t\t\t\t{% if is_favorite == false %}
\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel\">
\t\t\t\t\t\t\t\t\t{{ 'お気に入りに追加'|trans }}
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t\t<button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--cancel fav_done\" disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</form>
<a class=\"page_product_review_btn\" href=\"#product_rating_area\"><span class=\"letter\">レビューを見る/書く</span></a>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t{# 商品コード #}
\t\t\t\t\t\t{% if Product.code_min is not empty %}
\t\t\t\t\t\t<div class=\"ec-productRole__code\">
\t\t\t\t\t\t\t{{ '商品コード'|trans }}: <span class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t{# 関連カテゴリ #}
\t\t\t\t\t\t{% if Product.ProductCategories is not empty %}
\t\t\t\t\t\t<div class=\"ec-productRole__category\">
\t\t\t\t\t\t\t<div>{{ '関連カテゴリ'|trans }}</div>
\t\t\t\t\t\t\t{% for ProductCategory in Product.ProductCategories %}
\t\t\t\t\t\t\t<ul>
\t\t\t\t\t\t\t\t<li>
\t\t\t\t\t\t\t\t\t{% for Category in ProductCategory.Category.path %}
\t\t\t\t\t\t\t\t\t<a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
\t\t\t\t\t\t\t\t\t<span>></span>{% endif -%}
\t\t\t\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t\t\t</li>
\t\t\t\t\t\t\t</ul>
\t\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t<!-- <div class=\"ec-productRole__description\">
\t\t\t\t\t\t\t<a href=\"/contact\">この商品について問い合わせる</a><br>
\t\t\t\t\t\t\t<a href=\"/help/tradelaw\">返品についての詳細はこちら</a>
\t\t\t\t\t\t</div> -->
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t\t{% if Product.freearea %}
\t\t\t<div class=\"ec-productRole__description\">
\t\t\t\t{{ include(template_from_string(Product.freearea), sandboxed = true) }}
\t\t\t</div>
\t\t\t{% endif %}
\t\t\t<!-- 同じカテゴリーの商品 -->
\t\t\t{% if Product.ProductCategories is not empty %}
\t\t\t{% set ChildCategory = Product.ProductCategories|filter(pc => pc.Category.parent is not null)|first %}
\t\t\t{% set ParentCategory = Product.ProductCategories|filter(pc => pc.Category.parent is null and pc.Category.name not in [\"新着商品\", \"迷ったらココ!!開店祝い等の定番!\", \"郵送商品(全国へ宅急便でお届けします)\", \"委託商品'(全国のお花屋さんに委託します)\"])|first %}
\t\t\t<div class=\"same_category_product_area\">
\t\t\t\t{% if ChildCategory is not empty %}
\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">{{ ChildCategory.Category.name }}の他の商品</p>
\t\t\t\t\t<div class=\"product_grid\">
\t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
\t\t\t\t\t\t'category_id': ChildCategory.Category
\t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
\t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:4] %}
\t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
\t\t\t\t\t\t{% for Product in FilteredProducts %}
\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t{% elseif ParentCategory is not empty %}
\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">{{ ParentCategory.Category.name }}の他の商品</p>
\t\t\t\t\t<div class=\"product_grid\">
\t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
\t\t\t\t\t\t'category_id': ParentCategory.Category
\t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
\t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:4] %}
\t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
\t\t\t\t\t\t{% for Product in FilteredProducts %}
\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t{% endif %}
\t\t\t</div>
\t\t\t{% endif %}
\t\t\t<!-- おすすめ商品 -->
\t\t\t{% if Product.ProductCategories is not empty %}
\t\t\t{% set ChildCategory = Product.ProductCategories|filter(pc => pc.Category.parent is not null)|first %}
\t\t\t{% set ParentCategory = Product.ProductCategories|filter(pc => pc.Category.parent is null and pc.Category.name not in [\"新着商品\", \"迷ったらココ!!開店祝い等の定番!\", \"郵送商品(全国へ宅急便でお届けします)\", \"委託商品'(全国のお花屋さんに委託します)\"])|first %}
\t\t\t<div class=\"same_category_product_area\">
\t\t\t\t{% if ChildCategory is not empty %}
\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
\t\t\t\t\t<div class=\"product_grid osusume\">
\t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
\t\t\t\t\t\t'category_id': ChildCategory.Category
\t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
\t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:200] %}
\t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
\t\t\t\t\t\t{% for Product in FilteredProducts %}
\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
\t\t\t\t\t\t\t\t{#<p class=\"product_num\">{{ Product.display_rank }}</p>#}
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t{% elseif ParentCategory is not empty %}
\t\t\t\t<div class=\"same_category_product_block\">
\t\t\t\t\t<p class=\"same_category_name\">おすすめ商品</p>
\t\t\t\t\t<div class=\"product_grid osusume\">
\t\t\t\t\t\t{% set Products = repository(\"Eccube\\\\Entity\\\\Product\").getQueryBuilderBySearchData({
\t\t\t\t\t\t'category_id': ParentCategory.Category
\t\t\t\t\t\t}).orderBy('p.create_date', 'DESC').setMaxResults(100).getQuery().getResult() %}
\t\t\t\t\t\t{% set FilteredProducts = Products|filter(p => p.id != Product.id)[:200] %}
\t\t\t\t\t\t{% if FilteredProducts|length > 0 %}
\t\t\t\t\t\t{% for Product in FilteredProducts %}
\t\t\t\t\t\t<div class=\"product_item\">
\t\t\t\t\t\t\t<a href=\"{{ url('product_detail', {'id': Product.id}) }}\">
\t\t\t\t\t\t\t\t<div class=\"product_image\">
\t\t\t\t\t\t\t\t\t<img src=\"{{ asset(Product.main_list_image|no_image_product, 'save_image') }}\" alt=\"Product\">
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<p class=\"product_name\">{{ Product.name }}</p>
\t\t\t\t\t\t\t\t<p class=\"product_price\">{{ Product.getPrice02IncTaxMin|price }}</p>
\t\t\t\t\t\t\t\t{#<p class=\"product_num\">{{ Product.display_rank }}</p>#}
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t{% endif %}
\t\t\t</div>
\t\t\t{% endif %}
{% if Product.ViewData(9) is not empty %}
<div class=\"produt_reco_text_area\">
<h3 class=\"area_ttl\">こんな花をお探しの方におすすめ</h3>
\t\t\t\t<div class=\"frame\">
<p class=\"produt_reco_text\">{{ Product.ViewData(9) }}</p>
</div>
</div>
{% endif %}
{% if Product.ViewData(10) is not empty %}
<div class=\"produt_scene_text_area\">
<div class=\"frame\">
<h3 class=\"area_ttl\">こんなシーンでも使われています</h3>
<p class=\"produt_scene_text\">{{ Product.ViewData(10) }}</p>
</div>
</div>
{% endif %}
\t\t</div>
\t</div>
</section>
\t{{ include('Product/signboard_preview.twig') }}
{% endblock %}", "__string_template__3d1656759d2f44506edf71d82f27c517", "");
}
public function checkSecurity()
{
static $tags = array("set" => 3, "if" => 124, "for" => 397);
static $filters = array("escape" => 199, "raw" => 201, "json_encode" => 214, "trans" => 317, "no_image_product" => 401, "slice" => 404, "replace" => 404, "default" => 404, "nl2br" => 710, "price" => 716, "first" => 869, "filter" => 869, "length" => 883);
static $functions = array("constant" => 124, "asset" => 199, "class_categories_as_json" => 201, "url" => 368, "form_row" => 760, "form_errors" => 761, "include" => 770, "form_widget" => 771, "form_rest" => 775, "template_from_string" => 863, "repository" => 877);
try {
$this->sandbox->checkSecurity(
['set', 'if', 'for'],
['escape', 'raw', 'json_encode', 'trans', 'no_image_product', 'slice', 'replace', 'default', 'nl2br', 'price', 'first', 'filter', 'length'],
['constant', 'asset', 'class_categories_as_json', 'url', 'form_row', 'form_errors', 'include', 'form_widget', 'form_rest', 'template_from_string', 'repository']
);
} catch (SecurityError $e) {
$e->setSourceContext($this->source);
if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
$e->setTemplateLine($tags[$e->getTagName()]);
} elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
$e->setTemplateLine($filters[$e->getFilterName()]);
} elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
$e->setTemplateLine($functions[$e->getFunctionName()]);
}
throw $e;
}
}
}