<!doctype html>
{#
This file is part of EC-CUBE
Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
http://www.ec-cube.co.jp/
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
#}
<html lang="{{ eccube_config.locale }}">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# product: http://ogp.me/ns/product#">
<meta http-equiv="content-language" content="{{ eccube_config.locale }}">
<meta name="google-site-verification" content="Y66QrlYcz64bHEY5gShRL_D_Uv99BsW0Q3HaQ8vBfQs" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="apple-itunes-app" content="app-id=1614240545">
<meta name="eccube-csrf-token" content="{{ csrf_token(constant('Eccube\\Common\\Constant::TOKEN_NAME')) }}">
<meta name="p:domain_verify" content="f4b9dc1809d0da8bb7113d9d5b07de34"/>
<title>{{ BaseInfo.shop_name }}{% if subtitle is defined and subtitle is not empty %} / {{ subtitle }}{% elseif title is defined and title is not empty %} / {{ title }}{% endif %}</title>
{% if Page.author is not empty %}
<meta name="author" content="{{ Page.author }}">
{% endif %}
{% if Page.description is not empty %}
<meta name="description" content="{{ Page.description }}">
{% endif %}
{% if Page.keyword is not empty %}
<meta name="keywords" content="{{ Page.keyword }}">
{% endif %}
{% if Page.meta_robots is not empty %}
<meta name="robots" content="{{ Page.meta_robots }}">
{% endif %}
{% if Page.meta_tags is not empty %}
{{ include(template_from_string(Page.meta_tags)) }}
{% endif %}
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="preconnect" href="https://maxcdn.bootstrapcdn.com">
<link rel="preconnect" href="https://use.fontawesome.com">
<link rel="preconnect" href="https://cdn.jsdelivr.net">
<link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@400;600&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon-152x152.png">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" media="print" onload="this.media='all'">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css?v=20230117" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous" media="print" onload="this.media='all'">
<link rel="stylesheet" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css" media="print" onload="this.media='all'">
{% if app.request.attributes.get('_route') == 'homepage' %}
<link rel="stylesheet" href="{{ asset('assets/css/style_homepage.css') }}">
{% else %}
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
{% endif %}
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css" media="print" onload="this.media='all'"/>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick-theme.css" media="print" onload="this.media='all'"/>
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/jquery.yycountdown.css') }}"/>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous" media="print" onload="this.media='all'">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" media="print" onload="this.media='all'">
<script>
<<<<<<< HEAD
window.difyChatbotConfig = {
token: 'bPLxsXwAWme49MB4',
inputs: {
// You can define the inputs from the Start node here
// key is the variable name
// e.g.
// name: "NAME"
},
systemVariables: {
// user_id: 'YOU CAN DEFINE USER ID HERE',
// conversation_id: 'YOU CAN DEFINE CONVERSATION ID HERE, IT MUST BE A VALID UUID',
},
userVariables: {
// avatar_url: 'YOU CAN DEFINE USER AVATAR URL HERE',
// name: 'YOU CAN DEFINE USER NAME HERE',
},
}
</script>
<script
src="https://udify.app/embed.min.js"
id="bPLxsXwAWme49MB4"
defer>
</script>
<style>
#dify-chatbot-bubble-button {
background-color: #1C64F2 !important;
}
#dify-chatbot-bubble-window {
width: 60rem !important;
height: 70rem !important;
bottom: 0 !important;
right: 0 !important;
position: fixed !important;
}
/* Mobile: Full screen */
@media (max-width: 768px) {
#dify-chatbot-bubble-window {
width: 100vw !important;
height: 95vh !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
max-width: 100% !important;
max-height: 100% !important;
}
}
</style>
<script>
// Disable body scroll when chatbot is open
(function() {
function disableBodyScroll() {
const chatbotWindow = document.getElementById('dify-chatbot-bubble-window');
const chatbotButton = document.getElementById('dify-chatbot-bubble-button');
if (!chatbotWindow || !chatbotButton) return;
// Check if chatbot is visible/open
function isChatbotOpen() {
const style = window.getComputedStyle(chatbotWindow);
return style.display !== 'none' &&
chatbotWindow.offsetHeight > 50 &&
!chatbotWindow.classList.contains('minimized');
}
// Observer to watch for chatbot visibility changes
const observer = new MutationObserver(function() {
if (isChatbotOpen()) {
// Chatbot is open, disable body scroll
document.body.style.overflow = 'hidden';
document.documentElement.style.overflow = 'hidden';
} else {
// Chatbot is closed, enable body scroll
document.body.style.overflow = '';
document.documentElement.style.overflow = '';
}
});
// Observe chatbot window for changes
observer.observe(chatbotWindow, {
attributes: true,
attributeFilter: ['style', 'class'],
childList: false,
subtree: false
});
// Also check on button click
chatbotButton.addEventListener('click', function() {
setTimeout(function() {
if (isChatbotOpen()) {
document.body.style.overflow = 'hidden';
document.documentElement.style.overflow = 'hidden';
} else {
document.body.style.overflow = '';
document.documentElement.style.overflow = '';
}
}, 100);
});
// Check initial state
setTimeout(function() {
if (isChatbotOpen()) {
document.body.style.overflow = 'hidden';
document.documentElement.style.overflow = 'hidden';
}
}, 500);
}
// Wait for chatbot to load
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
setTimeout(disableBodyScroll, 1000);
});
} else {
setTimeout(disableBodyScroll, 1000);
}
// Also try after longer delay to ensure chatbot script is loaded
setTimeout(disableBodyScroll, 3000);
})();
</script>
<script>
=======
>>>>>>> feature/Kyo_14411
// Load TikTok Pixel asynchronously after page load
window.addEventListener('load', function() {
setTimeout(function() {
!function (w, d, t) {
w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(
var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement("script")
;n.type="text/javascript",n.async=!0,n.src=r+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(n,e)};
ttq.load('{{ tiktok_pixel_id }}');
ttq.page();
// add this before event code to all pages where PII data postback is expected and appropriate
ttq.identify({
"email": "7be698d9842cd85bf022875b9801ea893ba016d5ca3a9de810a2e3f29a8c1497", // string. The email of the customer if available. It must be hashed with SHA-256 on the client side.
"phone_number": "090a22f5a8fd35d5c83cba8b63754754b30dd6d5ae2519e0fb3f8e60914a1991", // string. The phone number of the customer if available. It must be hashed with SHA-256 on the client side.
"external_id": "9a72c24f2fd76561729110d804c69f38a7088f2ec41fdf8fbfea20d07e8bcff8" // string. Any unique identifier, such as loyalty membership IDs, user IDs, and external cookie IDs.It must be hashed with SHA-256 on the client side.
});
ttq.track('CompletePayment', {
"contents": [
{
"content_id": "1145", // string. ID of the product. Example: "1077218".
"content_type": "product", // string. Either product or product_group.
"content_name": "perfume" // string. The name of the page or product. Example: "shirt".
}
],
"value": "100", // number. Value of the order or items sold. Example: 100.
"currency": "USD", // string. The 4217 currency code. Example: "USD".
}, {
"event_id": "1616318632825_357" // string. A hashed ID that can identify a unique event. Example: "1616318632825_357".
});
}(window, document, 'ttq');
}, 1000); // Delay 1 second to prioritize page rendering
});
</script>
{% if app.user is defined and app.user is not null %}
{{ include("Chatbot/dify.twig", {'user': app.user}) }}
{% endif %}
<!-- TikTok Pixel Code End -->
{% block stylesheet %}{% endblock %}
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous" {% if app.request.attributes.get('_route') == 'homepage' %} defer {% endif %}></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" defer></script>
<script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js" defer></script>
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js" defer ></script>
<script type="text/javascript" src="{{ asset('assets/js/jquery.yycountdown.js') }}" defer></script>
<script type="text/javascript" src="{{ asset('assets/js/storeCommon.js') }}" defer></script>
<script type="text/javascript" src="{{ asset('assets/js/elementManager.js') }}" defer></script>
<script type="text/javascript" src="{{ asset('assets/js/request.js') }}" defer></script>
<script type="text/javascript" src="{{ asset('assets/js/copysize.js') }}" defer></script>
<script defer>
// Set global APP_ENV for R2 uploader
window.APP_ENV = "{{getAppEnv()}}";
document.addEventListener('DOMContentLoaded', function() {
$.ajaxSetup({
'headers': {
'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content')
}
});
{% set userId = app.user.id is defined ? app.user.id : 0 %}
let userId = {{ userId }}
let currentPath = window.location.pathname
$.ajax({
url: '{{ url('access_log') }}',
type: 'POST',
dataType: 'json',
data: {
"userId": userId,
"path": currentPath,
},
}).done(function(response) {
console.log("accessLog",response)
})
});
</script>
{# Layout: HEAD #}
{% if Layout.Head %}
{{ include('block.twig', {'Blocks': Layout.Head}) }}
{% endif %}
<script src="//statics.a8.net/a8sales/a8sales.js"></script>
{# プラグイン用styleseetやmetatagなど #}
{% if plugin_assets is defined %}{{ include('@admin/snippet.twig', { snippets: plugin_assets }) }}{% endif %}
<link rel="stylesheet" href="{{ asset('assets/css/customize.css', 'user_data') }}?v=202204011"><!-- test = -->
{% if app.request.attributes.get('_route') == 'homepage' %}
<link rel="stylesheet" href="{{ asset('assets/css/default_homepage.css') }}?v={{ "now"|date("YmdHis") }}">
{% else %}
<link rel="stylesheet" href="{{ asset('assets/css/default.css') }}?v={{ "now"|date("YmdHis") }}">
{% endif %}
<link rel="stylesheet" href="{{ asset('assets/css/page_countdown.css') }}?v=20220915">
<link rel="stylesheet" href="{{ asset('assets/css/video_style.css') }}">
{% if body_class is not defined %}
{% set body_class = "" %}
{% endif %}
{% if 'cbd' in body_class %}
<link rel="stylesheet" href="{{ asset('assets/css/cbd.css') }}">
{% endif %}
<script type='text/javascript' src='https://js.crossees.com/csslp.js' defer></script>
{% block additional_head %}{% endblock %}
</head>
<body id="page_{{ app.request.get('_route') }}" class="{{ body_class|default('other_page') }}" style="{% if body_style is defined %}{{ body_style }}{% endif %}">
{# Layout: BODY_AFTER #}
{% if Layout.BodyAfter %}
{{ include('block.twig', {'Blocks': Layout.BodyAfter}) }}
{% endif %}
{% if app.user and app.user.getRakutenUser is not null and app.user.first_login == false %}
{% include 'change_password_rakuten_member.twig' %}
{% endif %}
{% if app.user and app.user.getSupplierUser is not null and app.user.first_login == false %}
{% include 'change_password_rakuten_member.twig' %}
{% endif %}
<div class="{{ IsApp ? 'ec-layoutRole-app' :'ec-layoutRole' }}">
{# Layout: HEADER #}
{% if Layout.Header %}
<div class="ec-layoutRole__header">
{{ include('block.twig', {'Blocks': Layout.Header}) }}
</div>
<div class="ec-layoutRole__header_cz"></div>
{% endif %}
{# Layout: CONTENTS_TOP #}
{% if Layout.ContentsTop %}
<div class="ec-layoutRole__contentTop">
{{ include('block.twig', {'Blocks': Layout.ContentsTop}) }}
</div>
{% endif %}
<div class="ec-layoutRole__contents">
{# Layout: SIDE_LEFT #}
{% if Layout.SideLeft %}
<div class="ec-layoutRole__left">
{{ include('block.twig', {'Blocks': Layout.SideLeft}) }}
</div>
{% endif %}
{% set layoutRoleMain = 'ec-layoutRole__main' %}
{% if Layout.ColumnNum == 2 %}
{% set layoutRoleMain = 'ec-layoutRole__mainWithColumn' %}
{% elseif Layout.ColumnNum == 3 %}
{% set layoutRoleMain = 'ec-layoutRole__mainBetweenColumn' %}
{% endif %}
<div class="{{ layoutRoleMain }}">
{# Layout: MAIN_TOP #}
{% if Layout.MainTop %}
<div class="ec-layoutRole__mainTop">
{{ include('block.twig', {'Blocks': Layout.MainTop}) }}
</div>
{% endif %}
{# MAIN AREA #}
{% block main %}{% endblock %}
{# Layout: MAIN_Bottom #}
{% if Layout.MainBottom %}
<div class="ec-layoutRole__mainBottom">
{{ include('block.twig', {'Blocks': Layout.MainBottom}) }}
</div>
{% endif %}
</div>
{# Layout: SIDE_RIGHT #}
{% if Layout.SideRight %}
<div class="ec-layoutRole__right">
{{ include('block.twig', {'Blocks': Layout.SideRight}) }}
</div>
{% endif %}
</div>
{# Layout: CONTENTS_BOTTOM #}
{% if Layout.ContentsBottom %}
<div class="ec-layoutRole__contentBottom">
{{ include('block.twig', {'Blocks': Layout.ContentsBottom}) }}
</div>
{% endif %}
{# Layout: CONTENTS_FOOTER #}
{% if Layout.Footer %}
<div class="ec-layoutRole__footer">
{{ include('block.twig', {'Blocks': Layout.Footer}) }}
</div>
{% endif %}
</div><!-- ec-layoutRole -->
<div class="ec-overlayRole"></div>
<div class="ec-drawerRoleClose"><i class="fas fa-times"></i></div>
<div class="ec-drawerRole">
{# Layout: DRAWER #}
{% if Layout.Drawer %}
{{ include('block.twig', {'Blocks': Layout.Drawer}) }}
{% endif %}
</div>
<div id="FixedLineBtn" style="display:none">
<div id="FixedLineDiv">
{# <a href="https://lin.ee/28rac17" target="_blank"><img loading="lazy" id="FixedLineBtnImg" src="/html/user_data/assets/img/lineBtn/LineBtn.png" alt="LINEボタン"></a> #}
<a href="https://lin.ee/28rac17" target="_blank"><img loading="lazy" id="FixedLineBtnImg" src="{{ getR2ImageUrl('LineBtn.png', 'user_data/assets/img/lineBtn') }}" alt="LINEボタン"></a>
{# <img loading="lazy" id="FixedLineBtnClose" src="/html/user_data/assets/img/lineBtn/LineClose.png" alt="閉じる"> #}
<img loading="lazy" id="FixedLineBtnClose" src="{{ getR2ImageUrl('LineClose.png', 'user_data/assets/img/lineBtn') }}" alt="閉じる">
</div>
</div>
<div class="ec-blockTopBtn pagetop"><i class="fas fa-chevron-circle-up"></i></div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js" defer></script>
{% include('@common/lang.twig') %}
<script src="{{ asset('assets/js/function.min.js') }}?v=2023-01-29" defer></script>
<script src="{{ asset('assets/js/eccube.js') }}" defer></script>
{% block javascript %}{% endblock %}
{# Layout: CLOSE_BODY_BEFORE #}
{% if Layout.CloseBodyBefore %}
{{ include('block.twig', {'Blocks': Layout.CloseBodyBefore}) }}
{% endif %}
{# プラグイン用Snippet #}
{% if plugin_snippets is defined %}
{{ include('snippet.twig', { snippets: plugin_snippets }) }}
{% endif %}
<script src="{{ asset('assets/js/customize.js', 'user_data') }}?v20220128" defer></script>
</body>
</html>