Maks | проверил работу Алексея 18/06/2025

web_99
Andrei 2 months ago
parent 0010d71a61
commit 2a7af95419
  1. 51
      catalog/index.php
  2. 4
      local/templates/.default/components/bitrix/catalog/main/section_horizontal.php
  3. 6
      local/templates/.default/css/custom.css
  4. 19
      local/templates/.default/js/custom.js
  5. 63
      local/templates/.default/js/main.js

@ -48,22 +48,16 @@ if (isset($_GET['sorting'])) {
?><? $APPLICATION->IncludeComponent( ?><? $APPLICATION->IncludeComponent(
"bitrix:catalog", "bitrix:catalog",
"main", "main", // отсюда перенести верстку в чистый шаблон на базе .default
// ".default",
array( array(
"SEF_MODE" => "Y", "SEF_MODE" => "Y",
"SEF_FOLDER" => "/", "SEF_FOLDER" => "/",
"SEF_URL_TEMPLATES" => array(
"sections" => "catalog/",
"section" => "#SECTION_CODE_PATH#/", // нельзя слеш ставить в начале
"element" => "#ELEMENT_CODE#/", // нельзя слеш ставить в начале
"compare" => "compare/",
),
"ACTION_VARIABLE" => "action", "ACTION_VARIABLE" => "action",
"ADD_ELEMENT_CHAIN" => "Y", "ADD_ELEMENT_CHAIN" => "Y",
"ADD_PICT_PROP" => "-", "ADD_PICT_PROP" => "-",
"ADD_PROPERTIES_TO_BASKET" => "Y", "ADD_PROPERTIES_TO_BASKET" => "Y",
"ADD_SECTIONS_CHAIN" => "Y", "ADD_SECTIONS_CHAIN" => "Y",
// "AJAX_MODE" => "Y",
"AJAX_MODE" => "N", "AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "", "AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "Y", "AJAX_OPTION_HISTORY" => "Y",
@ -77,20 +71,27 @@ if (isset($_GET['sorting'])) {
"COMMON_ADD_TO_BASKET_ACTION" => "ADD", "COMMON_ADD_TO_BASKET_ACTION" => "ADD",
"COMMON_SHOW_CLOSE_POPUP" => "N", "COMMON_SHOW_CLOSE_POPUP" => "N",
"COMPATIBLE_MODE" => "N", "COMPATIBLE_MODE" => "N",
"COMPONENT_TEMPLATE" => "main", "COMPONENT_TEMPLATE" => ".default",
"CONVERT_CURRENCY" => "N", "CONVERT_CURRENCY" => "N",
"DETAIL_ADD_DETAIL_TO_SLIDER" => "N", "DETAIL_ADD_DETAIL_TO_SLIDER" => "N",
"DETAIL_ADD_TO_BASKET_ACTION" => array(0 => "BUY", ), "DETAIL_ADD_TO_BASKET_ACTION" => array(
"DETAIL_ADD_TO_BASKET_ACTION_PRIMARY" => array(0 => "BUY", ), 0 => "BUY",
),
"DETAIL_ADD_TO_BASKET_ACTION_PRIMARY" => array(
0 => "BUY",
),
"DETAIL_BACKGROUND_IMAGE" => "-", "DETAIL_BACKGROUND_IMAGE" => "-",
"DETAIL_BRAND_USE" => "N", "DETAIL_BRAND_USE" => "N",
"DETAIL_BROWSER_TITLE" => "-", "DETAIL_BROWSER_TITLE" => "-",
"DETAIL_CHECK_SECTION_ID_VARIABLE" => "N", "DETAIL_CHECK_SECTION_ID_VARIABLE" => "N",
"DETAIL_DETAIL_PICTURE_MODE" => array(0 => "MAGNIFIER", ), "DETAIL_DETAIL_PICTURE_MODE" => array(
0 => "MAGNIFIER",
),
"DETAIL_DISPLAY_NAME" => "Y", "DETAIL_DISPLAY_NAME" => "Y",
"DETAIL_DISPLAY_PREVIEW_TEXT_MODE" => "E", "DETAIL_DISPLAY_PREVIEW_TEXT_MODE" => "E",
"DETAIL_IMAGE_RESOLUTION" => "16by9", "DETAIL_IMAGE_RESOLUTION" => "16by9",
"DETAIL_MAIN_BLOCK_PROPERTY_CODE" => array(), "DETAIL_MAIN_BLOCK_PROPERTY_CODE" => array(
),
"DETAIL_META_DESCRIPTION" => "-", "DETAIL_META_DESCRIPTION" => "-",
"DETAIL_META_KEYWORDS" => "-", "DETAIL_META_KEYWORDS" => "-",
"DETAIL_PRODUCT_INFO_BLOCK_ORDER" => "sku,props", "DETAIL_PRODUCT_INFO_BLOCK_ORDER" => "sku,props",
@ -136,7 +137,8 @@ if (isset($_GET['sorting'])) {
"IBLOCK_TYPE" => "catalog", "IBLOCK_TYPE" => "catalog",
"INCLUDE_SUBSECTIONS" => "Y", "INCLUDE_SUBSECTIONS" => "Y",
"INSTANT_RELOAD" => "N", "INSTANT_RELOAD" => "N",
"LABEL_PROP" => array(), "LABEL_PROP" => array(
),
"LAZY_LOAD" => "Y", "LAZY_LOAD" => "Y",
"LINE_ELEMENT_COUNT" => "3", "LINE_ELEMENT_COUNT" => "3",
"LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#", "LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#",
@ -149,7 +151,8 @@ if (isset($_GET['sorting'])) {
"LIST_META_KEYWORDS" => "-", "LIST_META_KEYWORDS" => "-",
"LIST_PRODUCT_BLOCKS_ORDER" => "price,props,sku,quantityLimit,quantity,buttons", "LIST_PRODUCT_BLOCKS_ORDER" => "price,props,sku,quantityLimit,quantity,buttons",
"LIST_PRODUCT_ROW_VARIANTS" => "[{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false}]", "LIST_PRODUCT_ROW_VARIANTS" => "[{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false}]",
"LIST_PROPERTY_CODE_MOBILE" => array(), "LIST_PROPERTY_CODE_MOBILE" => array(
),
"LIST_SHOW_SLIDER" => "N", "LIST_SHOW_SLIDER" => "N",
"LIST_SLIDER_INTERVAL" => "3000", "LIST_SLIDER_INTERVAL" => "3000",
"LIST_SLIDER_PROGRESS" => "N", "LIST_SLIDER_PROGRESS" => "N",
@ -176,7 +179,8 @@ if (isset($_GET['sorting'])) {
"PAGER_TITLE" => "Товары", "PAGER_TITLE" => "Товары",
"PAGE_ELEMENT_COUNT" => "9", "PAGE_ELEMENT_COUNT" => "9",
"PARTIAL_PRODUCT_PROPERTIES" => "N", "PARTIAL_PRODUCT_PROPERTIES" => "N",
"PRICE_CODE" => array(), "PRICE_CODE" => array(
),
"PRICE_VAT_INCLUDE" => "Y", "PRICE_VAT_INCLUDE" => "Y",
"PRICE_VAT_SHOW_VALUE" => "N", "PRICE_VAT_SHOW_VALUE" => "N",
"PRODUCT_ID_VARIABLE" => "id", "PRODUCT_ID_VARIABLE" => "id",
@ -194,7 +198,7 @@ if (isset($_GET['sorting'])) {
"SECTION_ADD_TO_BASKET_ACTION" => "ADD", "SECTION_ADD_TO_BASKET_ACTION" => "ADD",
"SECTION_BACKGROUND_IMAGE" => "-", "SECTION_BACKGROUND_IMAGE" => "-",
"SECTION_COUNT_ELEMENTS" => "N", "SECTION_COUNT_ELEMENTS" => "N",
"SECTION_ID" => isset($_REQUEST["SECTION_ID"]) ? $_REQUEST["SECTION_ID"] : "", "SECTION_ID" => isset($_REQUEST["SECTION_ID"])?$_REQUEST["SECTION_ID"]:"",
"SECTION_ID_VARIABLE" => "SECTION_ID", "SECTION_ID_VARIABLE" => "SECTION_ID",
"SECTION_TOP_DEPTH" => "3", "SECTION_TOP_DEPTH" => "3",
"SET_LAST_MODIFIED" => "N", "SET_LAST_MODIFIED" => "N",
@ -244,6 +248,15 @@ if (isset($_GET['sorting'])) {
"USE_PRODUCT_QUANTITY" => "N", "USE_PRODUCT_QUANTITY" => "N",
"USE_SALE_BESTSELLERS" => "N", "USE_SALE_BESTSELLERS" => "N",
"USE_STORE" => "N", "USE_STORE" => "N",
"VARIABLE_ALIASES" => array("compare" => array("ACTION_CODE" => "action", ), ) "SIDEBAR_SECTION_POSITION" => "right",
) "SIDEBAR_DETAIL_POSITION" => "right",
"SEF_URL_TEMPLATES" => array(
"sections" => "catalog/",
"section" => "#SECTION_CODE_PATH#/",
"element" => "#ELEMENT_CODE#/",
"compare" => "compare/",
"smart_filter" => "#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/",
)
),
false
); ?><? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?> ); ?><? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>

@ -24,7 +24,7 @@ else
<div class="row"> <div class="row">
<? if ($isFilter): ?> <? if ($isFilter): ?>
<div class="col-xs-12<?=(isset($arParams['FILTER_HIDE_ON_MOBILE']) && $arParams['FILTER_HIDE_ON_MOBILE'] === 'Y' ? ' hidden-xs' : '')?>"> <div class="col-xs-12<?=(isset($arParams['FILTER_HIDE_ON_MOBILE']) && $arParams['FILTER_HIDE_ON_MOBILE'] === 'Y' ? ' hidden-xs' : '')?>">
<? <?/*
$APPLICATION->IncludeComponent( $APPLICATION->IncludeComponent(
"bitrix:catalog.smart.filter", "bitrix:catalog.smart.filter",
"", "",
@ -54,7 +54,7 @@ else
), ),
$component, $component,
array('HIDE_ICONS' => 'Y') array('HIDE_ICONS' => 'Y')
); );*/
?> ?>
</div> </div>
<? endif ?> <? endif ?>

@ -1,3 +1,9 @@
/* Start | Maks fix catalog */
.catalog-page__filter-wrap{
height: 100vh;
}
/* End| Maks fix catalog */
.footer-items { .footer-items {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

@ -382,3 +382,22 @@ document.addEventListener('DOMContentLoaded', function() {
setupResultClickToHistory('header-search-input', 'header-search-histories'); setupResultClickToHistory('header-search-input', 'header-search-histories');
setupResultClickToHistory('mobile-search-input', 'mobile-search-histories'); setupResultClickToHistory('mobile-search-input', 'mobile-search-histories');
}); });
// From main.js
// const filter = document.querySelector(".catalog-page__filter");
// if (filter) {
// const openFilterBtn = document.querySelector(".js-show-filter");
// const hideFilterBtn = document.querySelector(".js-close-filter");
// const html = document.querySelector("html");
// if (openFilterBtn) openFilterBtn.addEventListener("click", ()=>{
// filter.classList.add("is-active");
// html.style.overflow = "hidden";
// });
// if (hideFilterBtn) hideFilterBtn.addEventListener("click", ()=>{
// filter.classList.remove("is-active");
// html.removeAttribute("style");
// });
// }

@ -167,35 +167,38 @@ parcelRegister("6aHKA", function(module, exports) {
// AJAX-отправка формы // AJAX-отправка формы
if (cartForm) { if (cartForm) {
cartForm.addEventListener("submit", function(e) { cartForm.addEventListener("submit", function(e) {
e.preventDefault(); e.preventDefault();
const form = this; const form = this;
const submitBtn = form.querySelector("button[type=submit]"); const submitBtn = form.querySelector("button[type=submit]");
submitBtn.disabled = true; submitBtn.disabled = true;
submitBtn.classList.add("is-loading"); submitBtn.classList.add("is-loading");
fetch(form.action, { fetch(form.action, {
method: form.method || "POST", method: "POST",
body: new FormData(form) body: new FormData(form)
}) })
.then(res => res.json()) .then(res => {
.then(data => { if (!res.ok) throw new Error(`HTTP ${res.status}`);
if (data.success) { return res.json();
cartPopup.classList.add("cart-popup__wrapper--hidden"); })
cartOrderSuccess.classList.add("success-order--visible"); .then(data => {
cartBreadcrumbs?.remove(); if (data.success) {
} else { showCartToast("Заявка успешно отправлена", 3000, 'success');
alert(data.message || "Ошибка при оформлении заказа"); form.reset(); // <<< правильное имя
} } else {
}) showCartToast("Ошибка при отправке заявки", 3000, 'error');
.catch(() => { }
alert("Не удалось связаться с сервером"); })
}) .catch(err => {
.finally(() => { console.error(err);
submitBtn.disabled = false; showCartToast("Произошла ошибка при отправке", 3000, 'error');
submitBtn.classList.remove("is-loading"); })
}); .finally(() => {
}); submitBtn.disabled = false; // <<< то же самое
submitBtn.classList.remove("is-loading");
});
});
} }
}); });
@ -8250,6 +8253,8 @@ $d4ee7d94a63ba5b5$var$groups.forEach((group)=>{
group.classList.remove("is-opened"); group.classList.remove("is-opened");
}); });
}); });
// Открытие фильтра
const $d4ee7d94a63ba5b5$var$filter = document.querySelector(".catalog-page__filter"); const $d4ee7d94a63ba5b5$var$filter = document.querySelector(".catalog-page__filter");
if ($d4ee7d94a63ba5b5$var$filter) { if ($d4ee7d94a63ba5b5$var$filter) {
const openFilterBtn = document.querySelector(".js-show-filter"); const openFilterBtn = document.querySelector(".js-show-filter");

Loading…
Cancel
Save