Twig\Error\RuntimeError {#538 #message: "An exception has been thrown during the rendering of a template ("Division by zero")." #code: 0 #file: "/var/www/albero/application/template/product.twig" #line: 235 -previous: DivisionByZeroError {#537 #message: "Division by zero" #code: 0 #file: "/var/www/albero/cache/cd/cd19582891fb046461a9037b138d6554.php" #line: 436 : { { __TwigTemplate_66a55c22518e0bcd1eddd0f8e8f1c518->block_body($context, array $blocks = []) … ›echo "\t\t\t\t\t\t\t\t";
›$context["discountValue"] = twig_round((((twig_get_attribute($this->env, $this->source, ($context["product"] ?? null), "promo_price", [], "any", false, false, false, 235) - twig_get_attribute($this->env, $this->source, ($context["product"] ?? null), "site_price", [], "any", false, false, false, 235)) / twig_get_attribute($this->env, $this->source, ($context["product"] ?? null), "site_price", [], "any", false, false, false, 235)) * 100));
›// line 236
} { Twig\Template->displayBlock($name, array $context, array $blocks = [], $useBlocks = true, self $templateContext = null) … ›try {
›$template->$block($context, $blocks);
›} catch (Error $e) {
} { __TwigTemplate_e9662f664531489ab3bbe6a4e44753b9->doDisplay(array $context, array $blocks = []) … ›<main id="body" class=" container-ex">
›\t{% block body %}
› } { Twig\Template->displayWithErrorHandling(array $context, array $blocks = []) … ›try {
›$this->doDisplay($context, $blocks);
›} catch (Error $e) {
} { Twig\Template->display(array $context, array $blocks = []) … ›{
›$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
›}
} { __TwigTemplate_66a55c22518e0bcd1eddd0f8e8f1c518->doDisplay(array $context, array $blocks = []) … ›$this->parent = $this->loadTemplate("base.twig", "product.twig", 1);
›$this->parent->display($context, array_merge($this->blocks, $blocks));
›}
} { Twig\Template->displayWithErrorHandling(array $context, array $blocks = []) … ›try {
›$this->doDisplay($context, $blocks);
›} catch (Error $e) {
} { Twig\Template->display(array $context, array $blocks = []) … ›{
›$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
›}
} { Twig\Template->render(array $context) … ›try {
›$this->display($context);
›} catch (\Throwable $e) {
} { Twig\TemplateWrapper->render(array $context = []): string … ›{
›return $this->template->render($context);
›}
} { Twig\Environment->render($name, array $context = []): string … ›{
›return $this->load($name)->render($context);
›}
} { App\Core\FrontendController->render() … ›try {
›\t$output = $this->twig->render($this->page .'.twig', $this->data);
›\t$search = ['/assets/global/description','/assets/global/upload/images', '/assets/global/upload/files'];
} { App\Controller\Product->getProduct(string $productUrl, int $productId) … ›\t$this->page = 'product';
›\t$this->render();
›}
} { require_once … › ›call_user_func_array(array(&$CI, $method), $params);
› } { › ›require_once BASEPATH.'core/CodeIgniter.php';
› : { "/var/www/albero/system/core/CodeIgniter.php" } } } } -lineno: 235 -name: "product.twig" -rawMessage: "An exception has been thrown during the rendering of a template ("Division by zero")." -sourcePath: "/var/www/albero/application/template/product.twig" -sourceCode: """ {% extends "base.twig" %}\n \n {% block css %}\n <style>\n .pop{\n cursor: pointer;\n }\n .monoIcon{\n border-radius: 100%;\n padding: 20px;\n border: 1px solid #80808082;\n }\n .close_zoom_btn{\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n position: absolute;\n top: 25px;\n right: 50px;\n color: black;\n cursor: pointer;\n font-size: 23px;\n background: #007b5f;\n border-radius: 50%;\n border: 1px solid white;\n padding: 0.5em;\n }\n .swiper-slide img {\n cursor: pointer;\n }\n \n #know_discount {\n cursor: pointer;\n }\n \n #know_discount:hover {\n background: #fff;\n color: #007b5f;\n -webkit-transition: .2s ease-out;\n -o-transition: .2s ease-out;\n transition: .2s ease-out;\n border: 1px solid #007b5f;\n }\n \n #modalShowDiscount .modal-dialog {\n height: 85vh;\n }\n \n #modalShowDiscount .product_img {\n max-height: 10em;\n max-width: 5em;\n }\n \n #modalShowDiscount .product_img img {\n width: 100%;\n height: 100%;\n border: 1px solid grey;\n }\n \n #modalShowDiscount .modal-body {\n background: white;\n display: flex;\n align-items: center;\n }\n \n #modalShowDiscount .modal-dialog-large {\n max-width: 400px;\n }\n \n #modalShowDiscount .modal-content{\n border-radius: 0;\n border: 2px solid black;\n }\n \n #modalShowDiscount .know_discount_button{\n color: white;\n background: #007b5f;\n }\n \n #modalShowDiscount .know_discount_button:hover {\n background: white;\n color: #007b5f;\n border: 1px solid #007b5f;\n }\n \n #modalShowDiscount .form-control {\n height: auto;!important;\n }\n \n #modalShowDiscount .modal-header {\n border-bottom: none;\n }\n \n #modalShowDiscount .modal-header button, #modalShowDiscount .modal-header button:hover {\n border: none;\n background: none;\n color: #007b5f;\n opacity: 1;\n padding: .5rem 1rem;\n margin: -1rem -1rem -1rem auto;\n font-size: 1.5rem;\n }\n \n #modalShowDiscount .know_discount_help {\n font-size: 14px;\n }\n \n </style>\n {% endblock %}\n {% block body %}\n \t{% if product.reviews is defined and product.reviews != [] %}\n \n \n \t\t{% set rewiews_r = 0 %}\n \t\t{% for k in product.reviews %}\n \t\t\t{% set rewiews_r = rewiews_r + k.rating %}\n \t\t{% endfor %}\n \t\t{% set rewiews_r = rewiews_r / (product.reviews| length) %}\n \n \n \t{% endif %}\n \n {% if product.reviews is defined and product.reviews %}\n {% set max_r = 0 %}\n {% for r in product.reviews %}\n {% if r.rating > max_r|number_format %}\n {% set max_r = r.rating|number_format %}\n {% endif %}\n {% endfor %}\n \t{% endif %}\n {% set description = product.description|raw %}\n {# in offers warning, needs "priceValidUntil": "" #}\n \t<script type="application/ld+json">\n \t[{\n \t\t"@context": "http://schema.org",\n \t\t"@type": "Product",\n \t\t"name": "{{product.site_name}}",\n \t\t"image": "{{product.images_path.logo_path}}",\n \t\t"brand": {\n \t\t "@type": "Brand",\n \t\t "name": "{{product.manufacturer | raw}}"\n \t\t},\n \n \t\t"description": "{{product.description|raw }}",\n \t\t"offers": {\n \t\t "@type": "Offer",\n \t\t "price": "{{product.site_price}}",\n \t\t "priceCurrency": "UAH",\n \t\t "availability": "http://schema.org/InStock"\n \t\t},\n "aggregateRating":\n {\n "@type": "AggregateRating",\n "ratingValue": "{{rewiews_r | round(2)}}",\n "reviewCount": "{{product.reviews|length}}"\n },\n \n "reviewRating":\n {\n "@type": "Rating",\n "bestRating":"{{max_r ? max_r : 5}}",\n "ratingValue":"{{rewiews_r ? rewiews_r : 5}}"\n }\n \n \n \t },\n {\n \t\t\t "@context": "https://schema.org",\n \t\t\t "@type": "BreadcrumbList",\n \t\t\t "itemListElement": [\n \t\t\t\t{\n \t\t\t\t "@type": "ListItem",\n \t\t\t\t "position": 1,\n \t\t\t\t "name": "Albero",\n \t\t\t\t "item": "{{ base_url('') }}"\n \t\t\t\t},\n \t\t\t\t{\n \t\t\t\t "@type": "ListItem",\n \t\t\t\t "position": 2,\n \t\t\t\t "name": "{{ product.category.category_name }}",\n \t\t\t\t "item": "{{base_url('products/'~product.category.slug) }}"\n \t\t\t\t},\n \t\t\t\t{\n \t\t\t\t "@type": "ListItem",\n \t\t\t\t "position": 3,\n \t\t\t\t "name": "{{ product.site_name }}",\n \t\t\t\t "item": "{{base_url('products/'~product.category.final_slug) }}"\n \t\t\t\t}\n \t\t\t ]\n \t\t\t}]\n \t</script>\n \t<div id="main-block-product">\n \n \t\t<input type="hidden" name="id" value="{{product.id}}">\n \t\t<input type="hidden" name="brand" value="{{product.e_commerce_data.brand_name}}">\n \t\t<input type="hidden" name="parent_category" value="{{product.e_commerce_data.category_name}}">\n \t\t<div class="row pt-2">\n \t\t\t<nav aria-label="breadcrumb ">\n \t\t\t\t<ol class="breadcrumb">\n \t\t\t\t\t<li class="breadcrumb-item"><a href="{{ base_url('') }}">{{l('albero')}}</a></li>\n \t\t\t\t\t<li class="breadcrumb-item"><a href="{{base_url('products/'~product.category.final_slug) }}">{{product.category.category_name}}</a></li>\n \n \t\t\t\t\t{% for b in product_features.brend.features %}\n \t\t\t\t\t\t{% if b.feature_name %}\n \t\t\t\t\t\t\t<li class="breadcrumb-item"><a href="#">\n \n \t\t\t\t\t\t\t\t\t{{ b.feature_name }}\n \n \t\t\t\t\t\t\t\t</a></li>\n \t\t\t\t\t\t{% endif %}\n \t\t\t\t\t{% endfor %}\n \n \t\t\t\t\t<li class="breadcrumb-item active" aria-current="page">{{ product.site_name }}</li>\n \t\t\t\t</ol>\n \t\t\t</nav>\n \t\t</div>\n \n \t\t<div class="row d-flex justify-content-around">\n \t\t\t{% if( product.active != 1 ) %}\n \t\t\t<p class="product_disabled_txt text-center ">{{l('product_not_available')}}</p>\n \t\t\t{% endif %}\n \t\t\t<div class="col-4 img_section pb-5 position-relative">\n \n \t\t\t\t\t<div class="product_banner_container position-absolute d-flex flex-column flex-wrap">\n {% if product.is_top %}\n <span class="product_banner product_banner_top">TOP</span>\n {% endif %}\n {% if product.new_products %}\n <span class="product_banner product_banner_new">NEW</span>\n {% endif %}\n \t\t\t\t\t\t{% if product.promo_price > 0 %}\n \t\t\t\t\t\t\t{% if product.discount == 0 %}\n \t\t\t\t\t\t\t\t{% set discountValue = (((product.promo_price - product.site_price) / product.site_price) * 100) | round %}\n \t\t\t\t\t\t\t{% else %}\n \t\t\t\t\t\t\t\t{% set discountValue = product.discount %}\n \t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t<span class="product_banner product_banner_percentage d-flex justify-content-center align-items-center {{ product.promo_price > 0 ? '' : 'd-none' }} {{ black_friday ? 'black_friday' : '' }}">\n \t\t\t\t\t\t\t\t{{ discountValue }}%\n \t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t</div>\n \n \t\t\t{% if product.is_door and product.door_colors_path %}\n \t\t\t\t<div class=" swiper productDoor-swiper mx-0 mb-2 ">\n \t\t\t\t\t<figure class="swiper-wrapper">\n \t\t\t\t\t\t{% for color in product.door_colors_path %}\n \t\t\t\t\t\t\t<div class="h-auto w-100 swiper-slide text-center">\n {% set origin_image = color.logo_path ? color.logo_path|replace({'/400x900/': '/600x1200/'}) : product.images_path.logo_path|replace({'/400x900/': '/500x1100/'})%}\n \t\t\t\t\t\t\t\t<img style="height: 100%;width: auto"\n data-enlargable\n \t\t\t\t\t\t\t\t\t src="{{ color.logo_path ? color.logo_path : product.images_path.logo_path }}"\n origin-src="{{ origin_image }}"\n \t\t\t\t\t\t\t\t\t alt="{{ seo.h1 }} - Альберо" title="{{ seo.h1 }} - Альберо"\n \t\t\t\t\t\t\t\t\t class="logo_door_swiper mx-auto "\n \t\t\t\t\t\t\t\t\t loading="lazy">\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t</figure>\n \t\t\t\t\t<div class="swiper-button-next"></div>\n \t\t\t\t\t<div class="swiper-button-prev"></div>\n \t\t\t\t</div>\n \n \t\t\t\t\t<div class="mx-0 swiper door-swiper-pagination w-100">\n \t\t\t\t\t\t<figure class="swiper-wrapper d-flex justify-content-start">\n \t\t\t\t\t\t\t{% for color_door in product.door_colors_path %}\n \t\t\t\t\t\t\t\t<div class="swiper-slide thumbs-slide text-center">\n <button type="button"\n class="color-slide"\n style="background-image: url('{{ color_door.logo_color_path }}')"\n data-bs-trigger="hover"\n data-bs-container="body"\n data-bs-toggle="popover"\n data-bs-placement="bottom"\n data-bs-content="{{ color_door.name }}">\n </button>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t</figure>\n \t\t\t\t\t</div>\n \n \t\t\t{% else %}\n \t\t\t\t<div class=" swiper product-swiper mx-0 mb-2 ">\n \t\t\t\t\t<figure class="swiper-wrapper d-flex align-items-center" style="height: 35em;">\n \t\t\t\t\t\t\t{% for image in product.images_path %}\n {% set origin_image = product.is_door ? image|replace({'/400x900/': '/600x1200/'}) : image|replace({'/737x737/': '/1200x1200/'}) %}\n \t\t\t\t\t\t\t\t<div class="swiper-slide logo w-100 text-center position-relative">\n <img style="width: auto; height: 100%; max-width:100%" data-enlargable src="{{ image }}" origin-src="{{ origin_image }}" alt="{{ seo.h1 }} - Альберо" title="{{ seo.h1 }} - Альберо"\n \t\t\t\t\t\t\t\t\tclass="" loading="lazy">\n </div>\n \t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t</figure>\n \t\t\t\t\t\t<div class="swiper-button-next"></div>\n \t\t\t\t\t\t<div class="swiper-button-prev"></div>\n \t\t\t\t\t</div>\n \n \t\t\t\t<div style="height: 9em;" class="mx-0 swiper product-swiper-pagination w-75">\n \t\t\t\t\t<figure class=" swiper-wrapper d-flex justify-content-start">\n \t\t\t\t\t\t{% for image in product.images_path %}\n \t\t\t\t\t\t\t<div class="d-flex align-items-center swiper-slide thumbs-slide text-center nav-swiper-slide">\n \t\t\t\t\t\t\t\t<img src="{{ image }}" alt="{{ seo.h1 }} - Альберо" title="{{ seo.h1 }} - Альберо" loading="lazy" style="max-height: 100%;">\n \t\t\t\t\t\t\t\t<figcaption></figcaption>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t</figure>\n \t\t\t\t</div>\n \t\t\t{% endif %}\n \t\t</div>\n \n \n \t\t\t<div class="col-8 px-5 description_section">\n \t\t\t\t<div class="d-flex align-items-center justify-content-between">\n \t\t\t\t\t<h1 class="text-bold h3 col-10">{{ seo.h1 }}</h1>\n \t\t\t\t\t<div class="product_id text-center fs-6 text-bold col-auto p-1">\n \t\t\t\t\t\t<span>Код:</span>\n \t\t\t\t\t\t<span class="b_green">{{product.id}}</span>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \t\t\t\t<div class="row d-flex justify-content-between pt-4">\n \t\t\t\t\t<div class="col pe-5 ">\n \t\t\t\t\t\t<div class="row d-flex justify-content-between">\n \t\t\t\t\t\t\t<div class="col product_price ">\n \t\t\t\t\t\t\t\t{% if product.promo_price != 0 %}\n \t\t\t\t\t\t\t\t\t<h4>\n \t\t\t\t\t\t\t\t\t<span class="site_price_num_price b_grey text-bold text-decoration-line-through me-3">\n \t\t\t\t\t\t\t\t\t{{ product.site_price }} грн\n \t\t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t\t\t\t<span\n \t\t\t\t\t\t\t\t\t\t\tclass="discount_sum py-1 px-4 text-bold">- {{ product.site_price - product.promo_price }}</span>\n \t\t\t\t\t\t\t\t\t</h4>\n \t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t\t<h4>\n \t\t\t\t\t\t\t\t<span>\n \t\t\t\t\t\t\t\t\t<strong>\n \t\t\t\t\t\t\t\t\t<span class="site_price_num {{ product.promo_price != 0 ? 'b_red' : 'b_green' }}">\n \t\t\t\t\t\t\t\t\t\t{{ product.promo_price != 0 ? product.promo_price : product.site_price }} \n \t\t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t\t\t<span class="{{ product.promo_price != 0 ? 'b_red' : 'b_green' }}">грн/{{ product.unit }}</span>\n \t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\t</strong>\n \t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\t</span>\n \n \t\t\t\t\t\t\t\t</h4>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t<div class="col-2 position-relative end-0 d-flex justify-content-end " >\n \n \t\t\t\t\t\t\t\t<i class="likedProduct {{ product.id in whish_list_ids ? 'alb-like_green' : 'alb-like' }} a-icon s-30 position-relative end-0 " data-productid="{{ product.id }}"></i>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t{% if product.is_door == 0 and product.count > 0 %}\n \t\t\t\t\t\t<div class="row b_green"><span>{{ l('in_stock') }}</span></div>\n \t\t\t\t\t\t{% elseif(product.is_door == 0 and product.count == 0) %}\n \t\t\t\t\t\t\t<div class="row b_green"><span>{{l('to_order')}}</span></div>\n \t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t</div>\n \n \t\t\t\t\t<div class="col-4 d-flex justify-content-end position-relative align-self-top">\n \t\t\t\t\t\t<div id="rating_product" class=" mt-0">\n \t\t\t\t\t\t\t<div class="rating">\n \t\t\t\t\t\t\t\t<input type="radio" id="star5" name="rating"\n \t\t\t\t\t\t\t\t\tvalue="5" {{ rewiews_r == '5' or rewiews_r is null ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\tdisabled/><label for="star5"></label>\n \t\t\t\t\t\t\t\t<input type="radio" id="star4" name="rating"\n \t\t\t\t\t\t\t\t\tvalue="4" {{ rewiews_r > '3' and rewiews_r < '5' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\tdisabled/><label for="star4"></label>\n \t\t\t\t\t\t\t\t<input type="radio" id="star3" name="rating"\n \t\t\t\t\t\t\t\t\tvalue="3" {{ rewiews_r > '2' and rewiews_r < '4' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\tdisabled/><label for="star3"></label>\n \t\t\t\t\t\t\t\t<input type="radio" id="star2" name="rating"\n \t\t\t\t\t\t\t\t\tvalue="2" {{ rewiews_r > '1' and rewiews_r < '2' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\tdisabled/><label for="star2"></label>\n \t\t\t\t\t\t\t\t<input type="radio" id="star1" name="rating"\n \t\t\t\t\t\t\t\t\tvalue="1" {{ rewiews_r > '0' and rewiews_r < '1' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\tdisabled/><label for="star1"></label>\n \t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \t\t\t\t<div class="row d-flex justify-content-between ">\n \n \t\t\t\t\t{% if product.is_door == 1 %}\n \t\t\t\t\t\t{% include "/pageParts/modules/productPage/door_info.twig" %}\n \t\t\t\t\t{% else %}\n \t\t\t\t\t\t{% include "/pageParts/modules/productPage/covering_info.twig" %}\n \t\t\t\t\t{% endif %}\n \t\t\t\t\t<div class="col-4 boxBay position-relative">\n \t\t\t\t\t\t{% if product.in_box == 0 %}\n \t\t\t\t\t\t\t{% set in_box = 1 %}\n \t\t\t\t\t\t{% else %}\n \t\t\t\t\t\t\t{% set in_box = product.is_door ? (product.in_box) | number_format(0) : (product.in_box) | number_format(3) %}\n \t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t\t<div\n \t\t\t\t\t\t\tclass="choose_quantity position-absolute bottom-0 end-0 w-100 {{ product.is_door == 1 ? 'h-100' : '' }}"\n data-old-price ="{{product.promo_price != 0 ? product.site_price : 0}}"\n \t\t\t\t\t\t\tdata-price="{{ product.promo_price != 0 ? product.promo_price : product.site_price }}"\n \t\t\t\t\t\t\tdata-new-price="{{ product.promo_price != 0 ? product.promo_price : product.site_price }}"\n \t\t\t\t\t\t\tdata-discount-price="{{ product.site_price - product.promo_price }}"\n \t\t\t\t\t\t\tdata-furnirure-price='0'\n \t\t\t\t\t\t\tdata-korob-price='0'\n \t\t\t\t\t\t\tdata-lishva-price='0'\n \t\t\t\t\t\t\tdata-size-price='0'\n \t\t\t\t\t\t\tdata-in-box="{{ in_box }}"\n \t\t\t\t\t\t\tdata-unit="{{ product.unit }}"\n \t\t\t\t\t\t>\n \t\t\t\t\t\t\t<div class="px-0 bay_options text-center ">\n \t\t\t\t\t\t\t\t<div class="mx-auto">\n \t\t\t\t\t\t\t\t\t<p class="bay_scale mb-0 py-3 fs-5">{{ l('Оберіть кількість') }}, {{ product.unit }} </p>\n \t\t\t\t\t\t\t\t\t<div class="d-flex justify-content-center p_correction">\n \t\t\t\t\t\t\t\t\t\t<button class="btn_minus btns_add_product">-</button>\n \t\t\t\t\t\t\t\t\t\t<label>\n \t\t\t\t\t\t\t\t\t\t\t<input disabled data-is-door="{{ product.is_door }}" class="choose_count" type="number" min="0" value="{{ in_box }}">\n \t\t\t\t\t\t\t\t\t\t</label>\n \t\t\t\t\t\t\t\t\t\t<button class="btn_plus btns_add_product">+</button>\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t<span>(Упаковок: </span>\n \t\t\t\t\t\t\t\t\t<span class="sum_pack">1</span>)\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="mx-auto">\n \t\t\t\t\t\t\t\t\t<p class="sum_bay_name"><strong>{{ l('order_amount') }}</strong></p>\n \n \t\t\t\t\t\t\t\t<p class="sum_bay_value b_green fw-bold">\n \t\t\t\t\t\t\t\t\t{% if product.unit == 'м²' or product.unit == 'пог.м' %}\n \t\t\t\t\t\t\t\t\t\t<span\n \t\t\t\t\t\t\t\t\t\t\tclass="sum_bay_value_num fs-4">{{ product.promo_price != 0 ? (product.promo_price * in_box)|number_format(2,'.','') : (product.site_price * in_box)|number_format(2,'.','') }} </span>\n \t\t\t\t\t\t\t\t\t{% else %}\n \t\t\t\t\t\t\t\t\t\t<span\n \t\t\t\t\t\t\t\t\t\t\tclass="sum_bay_value_num fs-4">{{ product.promo_price != 0 ? product.promo_price : product.site_price }} </span>\n \t\t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t\t\tгрн\n \t\t\t\t\t\t\t\t</p>\n \t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t<button class="in_basket {{product.active == 1 ? 'add-to-cart' : ''}} d-flex justify-content-center "\n \t\t\t\t\t\t\t\t\tdata-id='{{ product.id }}'\n \t\t\t\t\t\t\t\t\tdata-logo='{{ product.images_path.logo_path }}'\n \t\t\t\t\t\t\t\t\tdata-name='{{ product.site_name }}'\n \t\t\t\t\t\t\t\t\tdata-price='{{ product.site_price|number_format(2, '.', '') }}'\n \t\t\t\t\t\t\t\t\tdata-promo-price='{{ product.promo_price |number_format(2, '.', '')}}'\n \t\t\t\t\t\t\t\t\tdata-inbox='{{ product.in_box <= 1 ? 1 : product.in_box }}'\n \t\t\t\t\t\t\t\t\tdata-unit='{{ product.unit }}'\n \t\t\t\t\t\t\t\t\tdata-is-door="{{ product.is_door }}"\n \t\t\t\t\t\t\t\t\t{{product.active == 1 ? '' : 'disabled'}}\n \t\t\t\t\t\t\t>\n <input type="hidden" name="brand" value="{{ product.manufacturer }}">\n <input type="hidden" name="category" value="{{product.category.category_name}}">\n \t\t\t\t\t\t\t\t<i class="alb-shopCar_w a-icon s-20 shopCar_w"> </i> <span\n \t\t\t\t\t\t\t\t\tclass="align-self-center">{{ l('add_cart') }}</span>\n <input name="e_product_id" type="hidden" value="{{ product.e_commerce_data.product_id }}">\n <input name="e_product_brand" type="hidden" value="{{ product.e_commerce_data.brand_name }}">\n <input name="e_product_category" type="hidden" value="{{ product.e_commerce_data.category_name }}">\n \t\t\t\t\t\t\t</button>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n <div class="d-flex justify-content-center align-self-center align-items-center pe-0 position-relative top-100 mt-3">\n <i\n data-bs-title="ОНЛАЙН ОПЛАТА"\n data-bs-content="{{ l('payment_online_text') }}"\n data-bs-container="body"\n data-bs-toggle="popover"\n data-bs-placement="bottom"\n class="pop alb-pay_vm a-icon s-45 "> </i>\n <i\n data-bs-title="{{ l('delivery_nova_poshta') }}"\n data-bs-content="{{ l('delivery_nova_poshta_text') }}"\n data-bs-container="body"\n data-bs-toggle="popover"\n data-bs-placement="bottom"\n class="pop alb-np a-icon s-45 "> </i>\n \n {% if product.liqpay_counts > 1 %}\n {# <i class="likedProduct alb-mono_{{product.liqpay_counts}} a-icon s-40 " title="{{ l('payment_mono')}}"></i> #}\n <i class="pop alb-pay_parts a-icon s-45 d-flex justify-content-center align-items-center mx-2 " title="{{ l('payment_installments')}}"\n data-bs-title="{{ l('payment_installments') }}"\n data-bs-content="{{ l('payment_installments_description')}}{{product.liqpay_counts}} {{ l('місяців')}}"\n data-bs-container="body"\n data-bs-toggle="popover"\n data-bs-placement="bottom"\n >\n <span>{{product.liqpay_counts}}</span></i>\n {% endif %}\n {% if product.mono_counts > 1 %}\n <i class="likedProduct alb-mono_{{product.mono_counts}} a-icon s-30 monoIcon"\n title="{{ l('payment_mono')}}"\n data-bs-content="{{ l('payment_installments_description')}}{{product.mono_counts}} {{ l('місяців')}}"\n data-bs-container="body"\n data-bs-toggle="popover"\n data-bs-placement="bottom"\n ></i>\n {% endif %}\n </div>\n \t\t\t\t</div>\n <div class="row">\n {# col-xxl-8 col-md-8 #}\n <div class="col px-4 d-flex justify-content-between align-items-center">\n <div class="col-7">\n <ul class="info_by_products position-relative pt-3 px-0">\n <li>{{ l('color_product_differ') }}</li>\n <li>{{ l('tel_shop') }} 0 800 21 88 33</li>\n <li>{{ l('take_phone') }}</li>\n </ul>\n </div>\n {% if product.promo_price == 0 %}\n <div id="know_discount" class="col-5 py-2">\n <div class="w-100">{{ l('get_discount') }} %</div>\n </div>\n {% endif %}\n </div>\n \n <div class="col-4"></div>\n </div>\n \t\t\t\t</div>\n \t\t\t</div>\n \t\t\t<div class="card_product_menu row mx-auto position-relative d-flex justify-content-center pt-4">\n \n \t\t\t\t<div class="col card_product_info text-uppercase active pe-none">\n \t\t\t\t\t<div class="card_name collapsed" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne"\n \t\t\t\t\t\t aria-expanded="false" aria-controls="flush-collapseOne">{{l('features')}} <br>\n \t\t\t\t\t\t<div class="card_line"></div>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \n \t\t\t\t{% if product.description != null %}\n \t\t\t\t\t<div class="col card_product_info text-uppercase" id="headingFour">\n \t\t\t\t\t\t<div class="card_name collapsed" data-bs-toggle="collapse" data-bs-target="#flush-collapseFour"\n \t\t\t\t\t\t\taria-expanded="true" aria-controls="flush-collapseFour">{{l('product_description')}} <br>\n \t\t\t\t\t\t\t<div class="card_line"></div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t{% endif %}\n \n \t\t\t\t<div class="col card_product_info text-uppercase ">\n \t\t\t\t\t<div class="card_name " id="review" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo"\n \t\t\t\t\t\taria-expanded="false"\n \t\t\t\t\t\taria-controls="flush-headingTwo">{{l('reviews')}} <br>\n \t\t\t\t\t\t<div class="card_line"></div>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \t\t\t\t<div id="headingThre" class="col card_product_info text-uppercase ">\n \t\t\t\t\t<div class="card_name" data-bs-toggle="collapse" data-bs-target="#flush-collapseThre"\n \t\t\t\t\t\taria-expanded="false"\n \t\t\t\t\t\taria-controls="flush-collapseThre">{{l('product_in_collection')}} <br>\n \t\t\t\t\t\t<div class="card_line"></div>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \n \t\t\t</div>\n \t\t\t<div class="box_info accordion accordion-flush py-4" id="optionsCollapse">\n \n \t\t\t\t<div class="accordion-collapse collapse" aria-labelledby="headingFour" id="flush-collapseFour"\n \t\t\t\t\tdata-bs-parent="#optionsCollapse">\n \t\t\t\t\t{{ product.description | raw }}\n \t\t\t\t</div>\n \n \t\t\t\t<div class="accordion-collapse collapse show" id="flush-collapseOne" aria-labelledby="flush-headingOne"\n \t\t\t\t\tdata-bs-parent="#optionsCollapse">\n \t\t\t\t\t<div class="info_char d-flex justify-content-between py-3 ">\n \n \t\t\t\t\t\t<div class="section_1 col ">\n \t\t\t\t\t\t\t<ul>\n \t\t\t\t\t\t\t\t{% set numbPos = 1 %}\n \n \t\t\t\t\t\t\t\t{% for n in product.features %}\n \n \t\t\t\t\t\t\t\t\t{% if numbPos < product.features |length / 2 %}\n \t\t\t\t\t\t\t\t\t\t{% set numbPos = numbPos + 1 %}\n \n \t\t\t\t\t\t\t\t\t\t<li class="product_options d-flex justify-content-between py-2">\n \t\t\t\t\t\t\t\t\t\t\t<div class="option_name_char">{{ n.feature_type_name }}</div>\n \t\t\t\t\t\t\t\t\t\t\t<div class="option_value_char">\n \t\t\t\t\t\t\t\t\t\t\t\t{% for k in n.features %}\n \t\t\t\t\t\t\t\t\t\t\t\t\t{{ k.feature_name }}\n \t\t\t\t\t\t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t\t</li>\n \t\t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t\t{% endfor %}\n \n \n \t\t\t\t\t\t\t</ul>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t<div class="line_info "></div>\n \t\t\t\t\t\t<div class="section_2 col">\n \t\t\t\t\t\t\t{% set numbPos = 0 %}\n \t\t\t\t\t\t\t{% for s,n in product.features %}\n \t\t\t\t\t\t\t\t{% set numbPos = numbPos + 1 %}\n \t\t\t\t\t\t\t\t{% if numbPos > product.features |length / 2 %}\n \t\t\t\t\t\t\t\t\t<li class="product_options d-flex justify-content-between py-2">\n \t\t\t\t\t\t\t\t\t\t<div class="option_name_char">{{ n.feature_type_name }}</div>\n \t\t\t\t\t\t\t\t\t\t<div class="option_value_char">\n \t\t\t\t\t\t\t\t\t\t\t{% for k in n.features %}\n \t\t\t\t\t\t\t\t\t\t\t\t{{ k.feature_name }}\n \t\t\t\t\t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t</li>\n \t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \t\t\t\t<div class="accordion-collapse collapse hiddenSwiper" id="flush-collapseTwo"\n \t\t\t\t\taria-labelledby="flush-headingTwo"\n \t\t\t\t\tdata-bs-parent="#optionsCollapse">\n \n \t\t\t\t\t<div class="reviews_box">\n \t\t\t\t\t\t{% if product.reviews |length == 0 %}\n \n \t\t\t\t\t\t\t<form class="w-100">\n \t\t\t\t\t\t\t\t<h3 class="w-100 text-uppercase">{{ l('no_reviews') }}</h3>\n \t\t\t\t\t\t\t\t<div id="add_rating_product" class="row p-3 text-start d-flex justify-content-start">\n \t\t\t\t\t\t\t\t\t<div class="rating ">\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star51" name="add_rating" value="5" checked/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star51"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star41" name="add_rating" value="4"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star41"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star31" name="add_rating" value="3"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star31"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star21" name="add_rating" value="2"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star21"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star11" name="add_rating" value="1"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star11"></label>\n \t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="row">\n \t\t\t\t\t\t\t\t\t<h5>{{ l('add_your_reviews') }}</h5>\n \t\t\t\t\t\t\t\t\t<div class="col-6 addReviewInputs">\n \n \t\t\t\t\t\t\t\t\t\t<div class="w-100 reg-item mb-2">\n \t\t\t\t\t\t\t\t\t\t\t<input name="first_name" class="firstName input formInputs" id="input" type="text"\n \t\t\t\t\t\t\t\t\t\t\t\trequired/>\n \t\t\t\t\t\t\t\t\t\t\t<label for="input" alt="{{ l('customer_name') }}" placeholder="{{ l('customer_name') }}"></label>\n \t\t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t\t<div class="w-100 reg-item mb-2">\n \t\t\t\t\t\t\t\t\t\t\t<input name="email" class="email input formInputs" id="input" type="text" required />\n \t\t\t\t\t\t\t\t\t\t\t<label for="input" alt="Email" placeholder="Email"></label>\n \t\t\t\t\t\t\t\t\t\t</div>\n \n \n \t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn-review"\n \t\t\t\t\t\t\t\t\t\t\t\tdata-bs-dismiss="modal">{{ l('review_submit_btn') }}</button>\n \t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t<div class="col-6">\n \t\t\t\t\t\t\t\t\t\t<div class="m-0 reviews_message h-100">\n \n \t\t\t\t\t\t\t\t\t\t\t<textarea class="add_reviews_text h-100" name="message"\n \t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder="{{ l('text') }}"></textarea>\n \t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t</form>\n \t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t\t<div class="swiper reviews-swiper">\n \t\t\t\t\t\t\t<div class="swiper-wrapper">\n \n \t\t\t\t\t\t\t\t{% for k,review_item in product.reviews %}\n \n \t\t\t\t\t\t\t\t\t<div class="review swiper-slide h-auto d-flex flex-wrap align-content-between">\n \n \n \t\t\t\t\t\t\t\t\t\t<div class="review_person d-flex pb-3 w-100">\n \t\t\t\t\t\t\t\t\t\t\t<div class="review_person_img">\n \t\t\t\t\t\t\t\t\t\t\t\t<i class="alb-avatar a-icon s-50 "> </i>\n \t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t<div class="review_person_data ps-3">\n \t\t\t\t\t\t\t\t\t\t\t\t<div class="person_data_name">{{ review_item.name }}</div>\n \t\t\t\t\t\t\t\t\t\t\t\t<div class="person_data_date">{{ review_item.created }}</div>\n \t\t\t\t\t\t\t\t\t\t\t\t<div class="review_stars">\n \t\t\t\t\t\t\t\t\t\t\t\t\t<div id="rating_product" class="mt-0">\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="rating">\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" id="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue="5" {{ review_item.rating == '5' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled/><label\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor="star5"></label>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" id="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue="4" {{ review_item.rating == '4' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled/><label\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor="star4"></label>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" id="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue="3" {{ review_item.rating == '3' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled/><label\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor="star3"></label>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" id="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue="2" {{ review_item.rating == '2' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled/><label\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor="star2"></label>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" id="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname="review_rating_{{ k }}"\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue="1" {{ review_item.rating == '1' ? 'checked' : '' }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled/><label\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor="star1"></label>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t\t<div class="review_text pb-3">{{ review_item.review }}.</div>\n \t\t\t\t\t\t\t\t\t\t<div class="review_read_more text-center pt-2 b_green text-bold pe-auto mx-auto"\n \t\t\t\t\t\t\t\t\t\t\trole="button">{{ l('read_all') }}\n \t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<div class="review_stars d-flex">\n \n \t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t<div class="swiper-button-prev"></div>\n \t\t\t\t\t\t\t<div class="swiper-button-next"></div>\n \n \t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t{% if product.reviews |length > 0 %}\n \t\t\t\t\t\t\t<div class="container-fluid">\n \t\t\t\t\t\t\t\t<div class="row">\n \t\t\t\t\t\t\t\t\t<button type="button" class="btn-review my-3 add-review">{{l('add_reviews_product')}}</button>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t<form class="addReview w-100 d-none my-3">\n \t\t\t\t\t\t\t\t<div id="add_rating_product" class="row pt-3 text-start d-flex justify-content-start">\n \t\t\t\t\t\t\t\t\t<div class="rating">\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star51" name="add_rating" value="5"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star51"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star41" name="add_rating" value="4"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star41"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star31" name="add_rating" value="3"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star31"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star21" name="add_rating" value="2"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star21"></label>\n \t\t\t\t\t\t\t\t\t\t<input type="radio" id="star11" name="add_rating" value="1"/><label\n \t\t\t\t\t\t\t\t\t\t\tfor="star11"></label>\n \t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="row">\n \t\t\t\t\t\t\t\t\t<h5>{{ l('add_your_reviews') }}</h5>\n \t\t\t\t\t\t\t\t\t<div class="col-6 addReviewInputs">\n \n \t\t\t\t\t\t\t\t\t\t<div class="w-100 reg-item mb-2">\n \t\t\t\t\t\t\t\t\t\t\t<input name="first_name" class="firstName input formInputs" id="input" type="text"\n \t\t\t\t\t\t\t\t\t\t\t\trequired/>\n \t\t\t\t\t\t\t\t\t\t\t<label for="input" alt="{{ l('customer_name') }}" placeholder="{{ l('customer_name') }}"></label>\n \t\t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t\t<div class="w-100 reg-item mb-2">\n \t\t\t\t\t\t\t\t\t\t\t<input name="email" class="email input formInputs" id="input" type="text" required />\n \t\t\t\t\t\t\t\t\t\t\t<label for="input" alt="Email" placeholder="Email"></label>\n \t\t\t\t\t\t\t\t\t\t</div>\n \n \n \t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn-review"\n \t\t\t\t\t\t\t\t\t\t\t\tdata-bs-dismiss="modal">{{ l('review_submit_btn') }}</button>\n \t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t\t\t<div class="col-6">\n \t\t\t\t\t\t\t\t\t\t<div class="m-0 reviews_message h-100">\n \n \t\t\t\t\t\t\t\t\t\t\t<textarea class="add_reviews_text h-100" name="message"\n \t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder="{{ l('text') }}"></textarea>\n \n \n \t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t\t\t</form>\n \n \t\t\t\t\t\t{% endif %}\n \t\t\t\t\t</div>\n \n \t\t\t\t</div>\n \n \t\t\t\t<div class="accordion-collapse collapse " id="flush-collapseThre" aria-labelledby="flush-headingThre"\n \t\t\t\t\tdata-bs-parent="#optionsCollapse">\n \n \t\t\t\t\t<div class="d-flex justify-content-between py-5 ">\n \n \t\t\t\t\t\t<div class="row d-flex justify-content-start w-100 pb-4">\n \t\t\t\t\t\t\t{% for k, product in product.products_in_collection %}\n \t\t\t\t\t\t\t\t{% if k < 11 %}\n \t\t\t\t\t\t\t\t\t<div class="col-2 d-flex productBox py-4 px-2">\n \t\t\t\t\t\t\t\t\t\t{% include "/pageParts/modules/productPage/productCard.twig" %}\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \n \t\t\t</div>\n \t\t</div>\n \n \t\t<!--\n \t\t\t<h4 class=" groupHead text-uppercase"><strong>Не забудьте придбати</strong></h4>\n \t\t\t<div class="row d-flex justify-content-start pb-4">\n \n \t\t\t\tТут буде Список товарів, які можна придбати з цим товаром\n \t\t\t</div>\n \t\t-->\n \t\t{% if product.products_in_collection|length > 0 %}\n \t\t\t<h4 class=" groupHead text-uppercase"><strong>{{ l('you_can_like') }}</strong></h4>\n \t\t\t<div class="row d-flex justify-content-start pb-4">\n \t\t\t\t{% for k, product in product.products_in_collection %}\n \t\t\t\t\t{% if k < 11 %}\n \t\t\t\t\t\t<div class="col-2 d-flex productBox py-4 px-2">\n \t\t\t\t\t\t\t{% include "/pageParts/modules/productPage/productCard.twig" %}\n \t\t\t\t\t\t</div>\n \t\t\t\t\t{% endif %}\n \t\t\t\t{% endfor %}\n \t\t\t</div>\n \t\t{% endif %}\n \n \t</div>\n \n <div class="modal fade" id="modalShowDiscount" tabindex="-1" role="dialog" aria-labelledby="modalShowDiscountLabel">\n <div class="modal-dialog modal-dialog-large px-0" role="document">\n <div class="modal-content-wrap" id="modalShowDiscountDataWrap">\n <div class="modal-content" id="modalShowDiscountData">\n <div class="modal-header">\n <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">\n <span>×</span>\n </button>\n </div>\n <div class="modal-body">\n <div class="container">\n <div class="mb-3">\n <div class="know_discount_help font-italic ml-5 mb-3">\n <div>- Потрібна консультація ?</div>\n <div>- Бажаєте знижку ?</div>\n <div>- Знайшли дешевшу пропозицію ?</div>\n </div>\n <div class="font-weight-bold fs-13">Ми охоче підемо вам на зустріч</div>\n </div>\n \n <div class="d-flex align-items-start justify-content-between mb-3">\n <div class="product_img">\n <img src="{{ product.images_path.logo_path }}" alt="{{ product.site_name }}">\n </div>\n <div class="d-flex flex-column pl-3">\n <div class="lh-sm mb-2" style="line-height: normal">\n <span class="fs-13 ">{{ product.name }}</span>\n </div>\n <div class="ml-auto">\n {# <span class="fs-13">Ціна <span class="font-weight-bold">{{ product.price }}</span> ₴/{{ abbr(productUnit)|raw }}</span>#}\n </div>\n </div>\n </div>\n \n <form method="post" id="know_discount_form">\n <div class="form-group mb-3">\n <label for="phone">Телефон<span style="color: red">*</span></label>\n <input type="text"\n class="form-control"\n name="phone"\n id="phone"\n placeholder="+380"\n maxlength="13">\n <p id="showDiscountPhoneError" class="d-none text-danger mt-1">Недійсний номер</p>\n </div>\n <button type="submit" class="btn know_discount_button mb-3 font-weight-bold text-center p-3 w-100">\n Надіслати запит\n <i class="d-none know-discount-spinner fa fa-spinner fa-spin mr-2"></i>\n </button>\n <div class="font-weight-bold mb-1">Додаткові дані</div>\n <div class="form-group">\n <label for="email">Email</label>\n <input type="email" class="form-control" name="email" id="email">\n </div>\n <div class="form-group">\n <label for="productCount">Кількість товару</label>\n <input type="number" class="form-control" name="productCount" id="productCount">\n </div>\n <div class="form-group">\n <label for="externalUrl">Сайт з дешевшою пропозицією</label>\n <input type="text" class="form-control" name="externalUrl" id="externalUrl">\n </div>\n <div class="form-group d-none">\n <label for="product_id">Product id</label>\n <input type="hidden" class="form-control" name="product_id" id="product_id" value="{{ product.id }}">\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n </div>\n {% endblock %}\n \n {% block js %}\n \n <script src="{{ asset('js/components/cookie.js') }}"></script>\n \n \t<script>\n \t\t$(document).ready(function () {\n \t\t\tlet price = parseFloat($('.sum_bay_value_num ').text().trim());\n \t\t\tlet id = $('#main-block-product').find($('input[name="id"]')).val();\n \t\t\tlet brand = $('#main-block-product').find($('input[name="brand"]')).val();\n \t\t\tlet category = $('#main-block-product').find($('input[name="parent_category"]')).val();\n \n if (id && price) {\n viewItem(\n id,\n price,\n brand ? brand : 'no name',\n category ? category : 'no name'\n );\n }\n \n \t\t\t$('.btn_plus').click(function () {\n \t\t\t\tlet product = $(this).parents('.choose_quantity');\n \t\t\t\tlet productId = product.find('.removed_product').data('id');\n \t\t\t\tlet price = product.data('new-price');\n \t\t\t\tlet unit = product.data('unit');\n \t\t\t\tlet inBox = parseFloat(product.data('in-box')); //товару в коробці\n \t\t\t\tlet result = parseFloat(product.find('.choose_count').val());\n \t\t\t\tlet boxes = parseFloat(product.find('.sum_pack').text()); //упаковок\n \n \t\t\t\tconst is_door = $('.choose_count').attr('data-is-door'); // провірка на двері\n \n \t\t\t\tlet fin = (result + inBox) //кінцева ціна\n \n \t\t\t\tif (is_door !== '1' && unit !== 'шт') {\n \t\t\t\t\tfin = fin.toFixed(3);\n \t\t\t\t}\n \n \t\t\t\tif (boxes >= 0) {\n \t\t\t\t\t$(this).parent().find('.choose_count').val(fin);\n \t\t\t\t\t$(this).parent().find('.sum_bay_value_num ').text(fin);\n \t\t\t\t\tresult = product.find('.choose_count').val();\n \n \t\t\t\t\tboxes = boxes + 1;\n \n \t\t\t\t\tlet sumPrice = price * boxes;\n \t\t\t\t\tif (unit === 'м²' || unit === 'пог.м') {\n \t\t\t\t\t\tsumPrice = price * fin;\n \t\t\t\t\t}\n \t\t\t\t\tsumPrice = (Math.floor(sumPrice * 100) / 100).toFixed(2);\n \t\t\t\t\tproduct.find('.sum_pack').text(boxes);\n \t\t\t\t\tproduct.find('.sum_bay_value_num ').text(sumPrice);\n \t\t\t\t}\n \n \t\t\t\treturn false;\n \t\t\t});\n \t\t\t$('.btn_minus').click(function () {\n \t\t\t\tlet product = $(this).parents('.choose_quantity');\n \t\t\t\tlet productId = product.find('.removed_product').data('id');\n \n \t\t\t\tlet price = product.data('new-price');\n \t\t\t\tlet unit = product.data('unit');\n \t\t\t\tlet inBox = parseFloat(product.data('in-box')); //товару в коробці\n \t\t\t\tlet result = parseFloat(product.find('.choose_count').val());\n \t\t\t\tlet boxes = parseFloat(product.find('.sum_pack').text()); //упаковок\n \n \t\t\t\tconst is_door = $('.choose_count').attr('data-is-door'); // провірка на двері\n \n \t\t\t\tlet fin = (result - inBox) //кінцева ціна\n \n \t\t\t\tif (is_door !== '1' && unit !== 'шт') {\n \t\t\t\t\tfin = fin.toFixed(3);\n \t\t\t\t}\n \n \t\t\t\tif (boxes > 1) {\n \t\t\t\t\t$(this).parent().find('.choose_count').val(fin);\n \t\t\t\t\t$(this).parent().find('.sum_bay_value_num ').text(fin);\n \t\t\t\t\tresult = product.find('.choose_count').val();\n \n \t\t\t\t\tboxes = boxes - 1;\n \n \t\t\t\t\tlet sumPrice = price * boxes;\n \t\t\t\t\tif (unit === 'м²' || unit === 'пог.м') {\n \t\t\t\t\t\tsumPrice = price * fin;\n \t\t\t\t\t}\n \t\t\t\t\tsumPrice = (Math.floor(sumPrice * 100) / 100).toFixed(2);\n \n \t\t\t\t\tproduct.find('.sum_pack').text(boxes);\n \t\t\t\t\tproduct.find('.sum_bay_value_num ').text(sumPrice);\n \t\t\t\t}\n \t\t\t})\n \n \t\t\t// $('.in_basket').on('click', function () {\n \t\t\t// \tlet countsChosen = Number($('.sum_pack').text());\n \t\t\t// \t$(this).data('count', countsChosen);\n \t\t\t// });\n \n \t\t\t//chosen furniture\n \t\t\t$('.furniture_items li').click(function () {\n \t\t\t\tlet chosenItem = $(this).text();\n \t\t\t\tlet priceItem = parseFloat($(this).data('accessori-price'));\n \t\t\t\t$('.choose_quantity').data('furnirure-price', priceItem);\n \t\t\t\t$(this).parent().prev().prev().find('span').removeClass('b_grey').text(chosenItem);\n \t\t\t\t$(this).parent().prev().prev().find('span').removeClass('b_grey').attr('title', chosenItem);\n \t\t\t\tsumProduct()\n \t\t\t});\n \n \t\t\t//chosen furniture\n \n \t\t\t//chosen lishva\n \t\t\t$('.lishva_items li').click(function () {\n \t\t\t\tlet chosenItem = $(this).text();\n \t\t\t\tvar firstWord = $.trim(chosenItem);\n \t\t\t\tlet priceItem = parseFloat($(this).data('lishva-price'));\n \t\t\t\t$('.choose_quantity').data('lishva-price', priceItem);\n \t\t\t\t$(this).parent().prev().prev().find('span').removeClass('b_grey').text(firstWord);\n \t\t\t\tsumProduct()\n \t\t\t});\n \n \t\t\t//chosen lishva\n \n \t\t\t//chosen size\n \t\t\t$('.size_items li').click(function () {\n \t\t\t\tlet chosenItem = $(this).text();\n \t\t\t\tlet priceItem = parseFloat($(this).data('size-price'));\n \n \t\t\t\t$(this).parent().prev().prev().find('span').removeClass('b_grey').text(chosenItem);\n \t\t\t\tsumProduct()\n \t\t\t});\n \t\t\t//chosen size\n \n \n \t\t\t$('.product_check').on('click', function () {\n \t\t\t\tlet korobPrice = Number($(this).data('korob'));\n \t\t\t\tlet oldPrice = Number($('.choose_quantity').data('price'));\n \t\t\t\tif ($(this).is(':checked')) {\n \t\t\t\t\t$('.choose_quantity').data('korob-price', korobPrice);\n \t\t\t\t\tsumProduct();\n \t\t\t\t} else {\n \t\t\t\t\t$('.choose_quantity').data('korob-price', '0')\n \t\t\t\t\tsumProduct();\n \t\t\t\t}\n \n \t\t\t});\n \n \t\t\tfunction sumProduct() {\n \t\t\t\tlet startPrice = Number($('.choose_quantity').data('price'));\n \t\t\t\tlet oldPrice = Number($('.in_basket').data('price'));\n \t\t\t\tlet furniturePrice = Number($('.choose_quantity').data('furnirure-price'));\n \t\t\t\tlet korobPrice = Number($('.choose_quantity').data('korob-price'))\n \t\t\t\tlet lishvaPrice = Number($('.choose_quantity').data('lishva-price'));\n \t\t\t\tlet pack = Number($('.sum_pack').text())\n \t\t\t\tlet finOldSum = ((oldPrice + furniturePrice + korobPrice + lishvaPrice)*100)/100;\n \t\t\t\tlet finSum =((startPrice + furniturePrice + korobPrice + lishvaPrice)*100)/100;\n \n \t\t\t\t$('.site_price_num_price').text(finOldSum.toFixed(2) + ' грн');\n \t\t\t\t$('.site_price_num').text(finSum.toFixed(2));\n \t\t\t\t$('.choose_quantity').data('new-price', finSum.toFixed(2));\n \t\t\t\t$('.sum_bay_value_num').text((finSum * pack).toFixed(2));\n \n \t\t\t}\n \n \n \n \t\t\t$('.card_product_info').click(function () {\n \t\t\t\t$('.card_product_info').each(function () {\n \t\t\t\t\t$(this).removeClass('active pe-none');\n \t\t\t\t});\n \t\t\t\t$(this).addClass('active pe-none');\n \t\t\t});\n \n \t\t\t$('.review').click(function () {\n \t\t\t\t$(this).find('.review_text').toggleClass('active')\n \t\t\t})\n \n \t\t\t$('#review').click(function () {\n \t\t\t\t$('.hiddenSwiper').removeClass('hiddenSwiper')\n \t\t\t})\n \n \t\t});\n \n \t\t// add review btn\n \n \t\t$('.add-review').click(function () {\n \t\t\t$('.addReview').removeClass('d-none')\n \t\t\t$('.add-review').addClass('hide')\n \t\t})\n \n \t\t// focus on form after clicking rating\n \n \t\t$('input[name="add_rating"]').click(function () {\n \t\t\t$('.firstName.input').focus();\n \t\t})\n \n \t\t//\n \n \t\t$('#rating_product').first().click(function (e) {\n \t\t\te.preventDefault();\n \n \t\t\t$('.card_product_info').each(function () {\n \t\t\t\t$(this).removeClass('active')\n \t\t\t\t$('.card_product_info').has('#review').addClass('active')\n \t\t\t});\n \n \t\t\t$('.accordion-collapse').each(function () {\n \t\t\t\tif ($(this).hasClass('show')) {\n \t\t\t\t\t$(this).removeClass('show')\n \t\t\t\t\t$('#flush-collapseTwo').addClass('show');\n \t\t\t\t\t$('.firstName.input').focus();\n \t\t\t\t\t$([document.documentElement, document.body]).animate({\n \t\t\t\t\t\tscrollTop: $("#flush-collapseTwo").offset().top\n \t\t\t\t\t}, 0);\n \t\t\t\t}\n \t\t\t})\n \t\t})\n \n $('#one_click_btn').on('click', function(){\n \n let product_id =$('.one_click').data('product-id');\n let user_tel =$('.one_click').val();\n let product_count = $('.choose_count').val();\n \n if(user_tel.length == 13){\n $.ajax({\n type: "POST",\n url: '/ajax/sendOneClick',\n data: {\n id: product_id,\n tel: user_tel,\n count: product_count\n }\n });\n }\n })\n \n $('.b_1click input').on('input',function () {\n let phone = $('.b_1click input').val().replace(/[^+\d]/g, '');\n \n if (phone.substring(0, 3) !== '+38') {\n phone = '+38';\n }\n \n if (phone.substring(0, 4) !== '+380') {\n phone = '+380';\n }\n \n $(this).val(phone);\n });\n \n $('.b_1click button').click(function (e) {\n e.preventDefault();\n let phone = $('.b_1click input').val().replace(/[^+\d]/g, '');\n \n if (phone.length === 13) {\n $('.b_1click input').removeClass('errInput')\n $(this).attr('disabled', 'disabled').addClass('b_1clicked');\n $('.progress-bar').css('right', 0)\n const toastTrigger = $('#order-click-toast-btn');\n const liveToast = $('#order-click-toast');\n if (toastTrigger) {\n liveToast.show();\n setTimeout(function () {\n liveToast.fadeOut('slow');\n }, 5000);\n }\n $('.b_1click input').val('+380');\n } else {\n $('.b_1click input').addClass('errInput')\n }\n })\n \n $('img[data-enlargable]').click(function () {\n const src = $(this).attr('origin-src');\n let overlay = $('<div>').css({\n background: 'RGBA(0,0,0,.5) url(' + src + ') no-repeat center',\n backgroundSize: 'auto',\n width: '100%',\n height: '100%',\n maxWidth: '100%',\n maxHeight: '100%',\n position: 'fixed',\n zIndex: '10000',\n top: '0',\n left: '0',\n \n cursor: 'zoom-out',\n }).click(function () {\n $(this).remove();\n }).appendTo('body');\n let closeButton = $('<div>').html('x').addClass('close_zoom_btn').click(function () {\n overlay.remove();\n }).appendTo(overlay);\n });\n \n const phone = $('#phone');\n \n $('#know_discount').on('click', function () {\n $('#modalShowDiscount').modal('show');\n });\n \n phone.on('input', function () {\n let inputValue = $(this).val();\n let numericValue = inputValue.replace(/\D/g, '');\n let sanitizedValue = numericValue.startsWith('380') ? '+' + numericValue : '+380' + numericValue;\n \n sanitizedValue = sanitizedValue.substring(0, 13);\n $(this).val(sanitizedValue);\n });\n \n phone.on('keydown', function (e) {\n const key = e.keyCode || e.charCode;\n const cursorPosition = this.selectionStart;\n \n if ($(this).val() === '+380' && (key === 8 || key === 46)) {\n e.preventDefault();\n return;\n }\n \n if ((key === 8 || key === 46) && cursorPosition >= 4) {\n return;\n }\n \n let inputValue = $(this).val().replace(/\D/g, '');\n let sanitizedValue = inputValue;\n \n if (!sanitizedValue.startsWith('380')) {\n sanitizedValue = '380' + sanitizedValue;\n }\n \n sanitizedValue = sanitizedValue.substring(0, 13);\n $(this).val(sanitizedValue);\n });\n \n phone.on('focus', function (e) {\n e.preventDefault();\n if (!$(this).val()) $(this).val('+380');\n });\n \n $('#know_discount_form').on('submit', function (e) {\n e.preventDefault();\n const data = $(this).serializeArray();\n const sendButton = $('.know_discount_button');\n const phoneError = $('#showDiscountPhoneError');\n const regex = /^\+38(098|067|097|050|073|066|095|099|075|068|096|063|093|091)/gm;\n if (phone.val().length === 13 && regex.test(phone.val())) {\n $.ajax({\n type: 'POST',\n url: '/ajax/sendWishDiscount',\n data: data,\n beforeSend: function () {\n sendButton.prop('disabled', true)\n },\n success: function () {\n sendButton.prop('disabled', false);\n $('#know_discount_form')[0].reset();\n $('#modalShowDiscount').modal('hide');\n const toastTrigger = $('#order-click-toast-btn');\n const liveToast = $('#order-click-toast');\n if (toastTrigger) {\n liveToast.show();\n setTimeout(function () {\n liveToast.fadeOut('slow');\n }, 5000);\n }\n phoneError.addClass('d-none');\n },\n error: function (e) {\n console.log(e)\n sendButton.prop('disabled', false);\n $('#know_discount_form')[0].reset();\n $('#modalShowDiscount').modal('hide');\n phoneError.addClass('d-none');\n }\n });\n } else {\n phoneError.removeClass('d-none');\n }\n });\n \n \t</script>\n {% if product.is_door %}\n <script defer src="{{ asset('js/components/selectColor.js') }}"></script>\n {% endif %}\n {% endblock %}\n """ : { { Twig\Template->displayBlock($name, array $context, array $blocks = [], $useBlocks = true, self $templateContext = null) … ›{% if product.discount == 0 %}
›\t{% set discountValue = (((product.promo_price - product.site_price) / product.site_price) * 100) | round %}
›{% else %}
} { __TwigTemplate_e9662f664531489ab3bbe6a4e44753b9->doDisplay(array $context, array $blocks = []) … ›<main id="body" class=" container-ex">
›\t{% block body %}
› } { Twig\Template->displayWithErrorHandling(array $context, array $blocks = []) … ›try {
›$this->doDisplay($context, $blocks);
›} catch (Error $e) {
} { Twig\Template->display(array $context, array $blocks = []) … ›{
›$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
›}
} { __TwigTemplate_66a55c22518e0bcd1eddd0f8e8f1c518->doDisplay(array $context, array $blocks = []) … ›$this->parent = $this->loadTemplate("base.twig", "product.twig", 1);
›$this->parent->display($context, array_merge($this->blocks, $blocks));
›}
} { Twig\Template->displayWithErrorHandling(array $context, array $blocks = []) … ›try {
›$this->doDisplay($context, $blocks);
›} catch (Error $e) {
} { Twig\Template->display(array $context, array $blocks = []) … ›{
›$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
›}
} { Twig\Template->render(array $context) … ›try {
›$this->display($context);
›} catch (\Throwable $e) {
} { Twig\TemplateWrapper->render(array $context = []): string … ›{
›return $this->template->render($context);
›}
} { Twig\Environment->render($name, array $context = []): string … ›{
›return $this->load($name)->render($context);
›}
} { App\Core\FrontendController->render() … ›try {
›\t$output = $this->twig->render($this->page .'.twig', $this->data);
›\t$search = ['/assets/global/description','/assets/global/upload/images', '/assets/global/upload/files'];
} { App\Controller\Product->getProduct(string $productUrl, int $productId) … ›\t$this->page = 'product';
›\t$this->render();
›}
} { require_once … › ›call_user_func_array(array(&$CI, $method), $params);
› } { › ›require_once BASEPATH.'core/CodeIgniter.php';
› : { "/var/www/albero/system/core/CodeIgniter.php" } } } }
Some problems An exception has been thrown during the rendering of a template ("Division by zero").