dev_gp | fix: перенеса главная, футер, хедер, js, css

master
Andrei 2 months ago
parent bbb3ccccf4
commit 432d45208b
  1. 741
      index.php
  2. 72
      local/templates/.default/components/bitrix/catalog.item/mainpage/template.php
  3. 26
      local/templates/.default/components/bitrix/catalog.section/mainpage/template.php
  4. 64
      local/templates/.default/components/bitrix/catalog/main/!page.php
  5. 640
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/.parameters.php
  6. 63
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/component_epilog.php
  7. 107
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/functions.php
  8. 9
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/result_modifier.php
  9. 359
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/script.js
  10. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/script.map.js
  11. 2
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/script.min.js
  12. 804
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_offers/template.php
  13. 640
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/.parameters.php
  14. 63
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/component_epilog.php
  15. 107
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/functions.php
  16. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/arr_left.png
  17. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/arr_right.png
  18. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/fade_left.png
  19. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/fade_right.png
  20. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/missing.png
  21. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/no_photo.png
  22. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/no_prop_value.png
  23. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/stick.png
  24. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/stick_disc.png
  25. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/x2border.png
  26. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/images/x2border_active.png
  27. 109
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/lang/de/.parameters.php
  28. 27
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/lang/de/template.php
  29. 109
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/lang/en/.parameters.php
  30. 27
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/lang/en/template.php
  31. 110
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/lang/ru/.parameters.php
  32. 28
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/lang/ru/template.php
  33. 90
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/old/style.css
  34. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/old/style.min.css
  35. 9
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/result_modifier.php
  36. 359
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/script.js
  37. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/script.map.js
  38. 2
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/script.min.js
  39. 829
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/template.php
  40. 829
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/template2.php
  41. 267
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/template_new.php
  42. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/black/images/x2border_active.png
  43. 61
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/black/style.css
  44. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/black/style.min.css
  45. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/blue/images/x2border.png
  46. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/blue/images/x2border_active.png
  47. 25
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/blue/style.css
  48. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/blue/style.min.css
  49. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/green/images/x2border.png
  50. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/green/images/x2border_active.png
  51. 26
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/green/style.css
  52. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/green/style.min.css
  53. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/red/images/x2border_active.png
  54. 26
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/red/style.css
  55. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/red/style.min.css
  56. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/wood/images/x2border.png
  57. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/wood/images/x2border_active.png
  58. 62
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/wood/style.css
  59. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/wood/style.min.css
  60. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/yellow/images/x2border.png
  61. BIN
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/yellow/images/x2border_active.png
  62. 26
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/yellow/style.css
  63. 1
      local/templates/.default/components/bitrix/catalog/main/bitrix/!catalog.section/cat_section/themes/yellow/style.min.css
  64. 80
      local/templates/.default/components/bitrix/catalog/main/section_page.php
  65. 33
      local/templates/.default/components/bitrix/menu/catalog_left_menu/.parameters.php
  66. BIN
      local/templates/.default/components/bitrix/menu/catalog_left_menu/images/spacer.png
  67. 10
      local/templates/.default/components/bitrix/menu/catalog_left_menu/lang/de/.parameters.php
  68. 10
      local/templates/.default/components/bitrix/menu/catalog_left_menu/lang/en/.parameters.php
  69. 10
      local/templates/.default/components/bitrix/menu/catalog_left_menu/lang/ru/.parameters.php
  70. 254
      local/templates/.default/components/bitrix/menu/catalog_left_menu/result_modifier.php
  71. 124
      local/templates/.default/components/bitrix/menu/catalog_left_menu/script.js
  72. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/script.map.js
  73. 2
      local/templates/.default/components/bitrix/menu/catalog_left_menu/script.min.js
  74. 222
      local/templates/.default/components/bitrix/menu/catalog_left_menu/style.css
  75. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/style.min.css
  76. 48
      local/templates/.default/components/bitrix/menu/catalog_left_menu/template.php
  77. 27
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/black/colors.css
  78. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/black/colors.min.css
  79. 25
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/blue/colors.css
  80. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/blue/colors.min.css
  81. 25
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/green/colors.css
  82. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/green/colors.min.css
  83. 26
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/red/colors.css
  84. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/red/colors.min.css
  85. 25
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/wood/colors.css
  86. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/wood/colors.min.css
  87. 25
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/yellow/colors.css
  88. 1
      local/templates/.default/components/bitrix/menu/catalog_left_menu/themes/yellow/colors.min.css
  89. 5
      local/templates/.default/components/bitrix/news/services/.description.php
  90. 43
      local/templates/.default/components/bitrix/news/services/style.css
  91. 21
      local/templates/.default/components/bitrix/news/services/template.php
  92. 452
      local/templates/.default/css/custom.css
  93. 2
      local/templates/.default/js/custom.js
  94. 24
      local/templates/.default/js/main.js
  95. 111
      local/templates/EraSeptik/footer.php
  96. 136
      local/templates/EraSeptik/header.php

@ -69,87 +69,67 @@ $APPLICATION->SetTitle("ЭраСептик");
<div class="sale__wrap"> <div class="sale__wrap">
<h3 class="sale__wrap-title">Популярные товары</h3> <h3 class="sale__wrap-title">Популярные товары</h3>
<div class="sale__products"> <div class="sale__products">
<div class="product"> <?php
<a class="product__image" href="product.html"> $APPLICATION->IncludeComponent(
<picture><source srcset="./img/png/product.webp" type="image/webp"><img src="./img/png/product.png" width="336" height="340" alt="product" /></picture> "bitrix:catalog.section",
</a> "mainpage",
<div class="product__data"> array(
<div class="product__rating rating rating--4">4/5</div> "IBLOCK_TYPE" => "catalog",
<div class="product__info"> "IBLOCK_ID" => "4",
<a class="product__title" href="product.html">Септик ЭРА 4 прин</a> "SECTION_ID" => "",
<p class="product__text">Решение для небольших дачных домов</p> "SECTION_CODE" => "",
</div> "ELEMENT_SORT_FIELD" => "shows",
<div class="product__info"> "ELEMENT_SORT_ORDER" => "desc",
<p class="product__text">Пользователей: <span>1-3 чел</span></p> "PAGE_ELEMENT_COUNT" => "3",
<p class="product__text">Производительность: <span>0.5м2</span></p> "PROPERTY_CODE" => array("CHEL", "SBROS_NUM", "RECYCLE_VOL"),
<p class="product__text">Сброс: <span>150 литров</span></p> "SHOW_ALL_WO_SECTION" => "Y",
<p class="product__text">Питание: <span>не нужно</span></p> "PRICE_CODE" => array(),
</div> "SHOW_PRICE_COUNT" => "1",
<div class="product__price">77 000 ₽</div> "PRICE_VAT_INCLUDE" => "Y",
<div class="product__btns"> "ADD_TO_BASKET_ACTION" => "ADD",
<button class="button button--orange">Купить</button> "PRODUCT_ID_VARIABLE" => "id",
<button class="button button--outline">Купить с установкой</button> "PRODUCT_QUANTITY_VARIABLE" => "quantity",
</div> "PRODUCT_PROPS_VARIABLE" => "prop",
</div> "CACHE_TYPE" => "A",
</div> "CACHE_TIME" => "36000000",
"CACHE_GROUPS" => "Y",
<div class="product"> "DISPLAY_COMPARE" => "N",
<a class="product__image" href="product.html"> "SET_TITLE" => "N",
<picture><source srcset="./img/png/product.webp" type="image/webp"><img src="./img/png/product.png" width="336" height="340" alt="product" /></picture> "SET_BROWSER_TITLE" => "N",
</a> "SET_META_KEYWORDS" => "N",
<div class="product__data"> "SET_META_DESCRIPTION" => "N",
<div class="product__rating rating rating--4">4/5</div> "ADD_SECTIONS_CHAIN" => "N",
<div class="product__info"> "SHOW_ALL_WO_SECTION" => "Y",
<a class="product__title" href="product.html">Септик ЭРА 4 прин</a> "SHOW_404" => "N",
<p class="product__text">Решение для небольших дачных домов</p> "MESSAGE_404" => "",
</div> // ... другие параметры по необходимости ...
<div class="product__info"> ),
<p class="product__text">Пользователей: <span>1-3 чел</span></p> false
<p class="product__text">Производительность: <span>0.5м2</span></p> );
<p class="product__text">Сброс: <span>150 литров</span></p> ?>
<p class="product__text">Питание: <span>не нужно</span></p>
</div>
<div class="product__price">77 000 ₽</div>
<div class="product__btns">
<button class="button button--orange">Купить</button>
<button class="button button--outline">Купить с установкой</button>
</div>
</div>
</div>
<div class="product">
<a class="product__image" href="product.html">
<picture><source srcset="./img/png/product.webp" type="image/webp"><img src="./img/png/product.png" width="336" height="340" alt="product" /></picture>
</a>
<div class="product__data">
<div class="product__rating rating rating--4">4/5</div>
<div class="product__info">
<a class="product__title" href="product.html">Септик ЭРА 4 прин</a>
<p class="product__text">Решение для небольших дачных домов</p>
</div>
<div class="product__info">
<p class="product__text">Пользователей: <span>1-3 чел</span></p>
<p class="product__text">Производительность: <span>0.5м2</span></p>
<p class="product__text">Сброс: <span>150 литров</span></p>
<p class="product__text">Питание: <span>не нужно</span></p>
</div>
<div class="product__price">77 000 ₽</div>
<div class="product__btns">
<button class="button button--orange">Купить</button>
<button class="button button--outline">Купить с установкой</button>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div class="sale__wrap"> <div class="sale__wrap">
<h3 class="sale__wrap-title">Категории товаров</h3> <h3 class="sale__wrap-title">Категории товаров</h3>
<div class="sale__list"> <div class="sale__list">
<a class="sale__item" href="/">Септики</a> <?php
<a class="sale__item" href="/">Автономные канализации</a> if (CModule::IncludeModule('iblock')) {
<a class="sale__item" href="/">Станции биоочистки</a> $arFilter = [
<a class="sale__item" href="/">Локальные очистные сооружения</a> 'IBLOCK_ID' => 4,
<a class="sale__item sale__item--green" href="/"> 'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
'DEPTH_LEVEL' => 1
];
$arSelect = ['ID', 'NAME', 'SECTION_PAGE_URL'];
$rsSections = CIBlockSection::GetList(['SORT' => 'ASC'], $arFilter, false, $arSelect);
while ($arSection = $rsSections->GetNext()) {
?>
<a class="sale__item" href="<?= $arSection['SECTION_PAGE_URL'] ?>"><?= htmlspecialchars($arSection['NAME']) ?></a>
<?php
}
}
?>
<a class="sale__item sale__item--green" href="/catalog/">
<span>У нас <u>собственное</u> производство</span> <span>У нас <u>собственное</u> производство</span>
<span class="sale__item-action">К каталогу</span> <span class="sale__item-action">К каталогу</span>
</a> </a>
@ -232,249 +212,162 @@ $APPLICATION->SetTitle("ЭраСептик");
<section class="services container section"> <section class="services container section">
<h2 class="section-title">Мы предлагаем следующие услуги</h2> <h2 class="section-title">Мы предлагаем следующие услуги</h2>
<div class="services__list"> <div class="services__list">
<div class="services__item"> <a class="services__item" href="/uslugi/montazh-septikov/">
<h3 class="services__name">Монтаж септика под ключ</h3> <h3 class="services__name">Установка септика под ключ</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Осуществление проектов любой сложности.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 90 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/ustanovka-septika-dlya-chastnogo-doma/">
<h3 class="services__name">Монтаж септика для дома</h3> <h3 class="services__name">Установка септика для дома</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Быстро рассчитаем смету и качественно проведём все необходимые мероприятия.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 109 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/ustanovka-septika-dlya-dachi/">
<h3 class="services__name">Монтаж септика для дачи</h3> <h3 class="services__name">Установка септика для дачи</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> рассмотрим все сложности, быстро и надежно произведём установку.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 101 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/ustanovka-septika-dlya-bani/">
<h3 class="services__name">Монтаж септика для бани</h3> <h3 class="services__name">Установка септика для бани</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Подготовим проект, предусмотрим все проблемы, проведём монтаж септика под ключ.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 90 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/montazh-los/">
<h3 class="services__name">Монтаж ЛОС</h3> <h3 class="services__name">Установка ЛОС</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Осуществим проект под различные домовладения, с учётом всех нюансов.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 109 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/ustanovka-septika-dlya-kottedzha/">
<h3 class="services__name">Септик для коттеджа</h3> <h3 class="services__name">Установка септика для коттеджа</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Скорая калькуляция сметы, оперативный подход в оговоренные сроки.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 134 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/ustanovka-septika-dlya-kukhni/">
<h3 class="services__name">Монтаж септика для кухни</h3> <h3 class="services__name">Установка септика для кухни</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Примем во внимание все пожелания, быстро и надежно выполним свои услуги.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 90 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<div class="services__item"> </a> <a class="services__item" href="/uslugi/montazh-avtonomnykh-kanalizatsiy/">
<h3 class="services__name">Автономные канализации</h3> <h3 class="services__name">Установка автономной канализации</h3>
<p class="services__info">Полный монтаж септика под ключ, быстро и&nbsp;надежно.</p> <p class="services__info">
<div class="services__data"> Специалисты с большим опытом, профессионально проведут совокупность работ.
<span class="services__price">от 77 000 ₽</span> </p>
<span class="services__time">(от 36 часов)</span> <div class="services__data">
</div> <span class="services__price">от 109 000 ₽</span> <span class="services__time">(от 8.5 часов)</span>
</div> </div>
<a class="services__item services__item--green" href="#"> </a> <a class="services__item services__item--green" href="/uslugi/"> <span class="services__link">Все услуги</span> </a>
<span class="services__link">Все услуги</span> </div>
</a>
</div>
</section>
<section class="order-call container section">
<div class="order-call__wrap" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/house.png');">
<form class="order-call__data" action="#">
<h2 class="section-title">Рассчитать септик <span class="orange-text">за 5 минут!</span></h2>
<p class="order-call__info">Наш менеджер свяжется с вами в ближайшее время</p>
<input type="text" class="input" placeholder="Ваше имя" />
<input type="text" class="input" placeholder="Номер телефона" />
<button class="button button--orange">Заказать звонок</button>
<p class="order-call__personal">Нажимая кнопку «Заказать звонок», вы подтверждаете свое согласие на обработку <a href="#">персональных данных </a></p>
</form>
</div>
</section>
<section class="portfolio portfolio section">
<div class="container">
<h2 class="section-title">Последние выполненные объекты</h2>
<div class="portfolio__list">
<div class="portfolio__item">
<div class="portfolio__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/completed-object1.png');">
<div class="portfolio__image-details">
<div>Загородный дом в Подмосковье, <span class="portfolio__date">03.05.24</span></div>
<a class="portfolio__link" href="#">Подробнее</a>
</div>
</div>
<h3 class="portfolio__title">Установка септика в коттедж</h3>
<p class="portfolio__info">Клиенту требовалась автономная канализация для проживания</p>
<h4 class="portfolio__sub">Что было сделано:</h4>
<ul class="portfolio__data">
<li class="portfolio__data-item">исследование грунта и уровня грунтовых вод</li>
<li class="portfolio__data-item">выявление особенностей участка и согласование с клиентом</li>
</ul>
</div>
<div class="portfolio__item">
<div class="portfolio__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/completed-object2.png');">
<div class="portfolio__image-details">
<div>Загородный дом в Подмосковье, 03.05.24</div>
<a class="portfolio__link" href="#">Подробнее</a>
</div>
</div>
<h3 class="portfolio__title">Установка септика в коттедж</h3>
<p class="portfolio__info">Клиенту требовалась автономная канализация для проживания</p>
<h4 class="portfolio__sub">Что было сделано:</h4>
<ul class="portfolio__data">
<li class="portfolio__data-item">исследование грунта и уровня грунтовых вод</li>
<li class="portfolio__data-item">выявление особенностей участка и согласование с клиентом</li>
</ul>
</div>
<div class="portfolio__item">
<div class="portfolio__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/completed-object3.png');">
<div class="portfolio__image-details">
<div>Загородный дом в Подмосковье, 03.05.24</div>
<a class="portfolio__link" href="#">Подробнее</a>
</div>
</div>
<h3 class="portfolio__title">Установка септика в коттедж</h3>
<p class="portfolio__info">Клиенту требовалась автономная канализация для проживания</p>
<h4 class="portfolio__sub">Что было сделано:</h4>
<ul class="portfolio__data">
<li class="portfolio__data-item">исследование грунта и уровня грунтовых вод</li>
<li class="portfolio__data-item">выявление особенностей участка и согласование с клиентом</li>
</ul>
</div>
<div class="portfolio__item portfolio__item--green">
<h3 class="portfolio__title">Вы можете ознакомиться с другими проектами в нашем портфолио</h3>
<a class="portfolio__link" href="#">Перейти к другим работам</a>
</div>
</div>
</div>
</section> </section>
<section class="reviews container section"> <?$APPLICATION->IncludeComponent(
<div class="reviews__wrap reviews__swiper"> "bitrix:main.include",
<div class="reviews__top"> "",
<h2 class="section-title">Что говорят наши клиенты</h2> Array(
<div class="reviews__btns"> "AREA_FILE_SHOW" => "file",
<button class="reviews__btn reviews__btn--prev" type="button"></button> "PATH" => "/include/order-call.php"
<button class="reviews__btn reviews__btn--next" type="button"></button> )
</div> );?>
</div>
<div class="reviews__list swiper-wrapper">
<div class="reviews__item reviews__item--video swiper-slide">
<picture><source srcset="./img/png/review-video.webp" type="image/webp"><img class="reviews__poster-img" src="./img/png/review-video.png" width="400" height="300" alt="Review video poster" /></picture>
<button class="reviews__item-btn button-video">
<picture><source srcset="./img/svg/video-play.svg" type="image/webp"><img src="./img/svg/video-play.svg" width="62" height="62" alt="video-play" /></picture>
</button>
<div class="reviews__value">
<div class="reviews__date">06.06.23</div>
<div class="reviews__rating rating rating--small rating--3">4/5</div>
</div>
<div class="reviews__author">
<div class="reviews__author-name">Анатолий Матвеевич</div>
<div class="reviews__author-city">г. Одинцово</div>
</div>
</div>
<div class="reviews__item swiper-slide">
<div class="reviews__author reviews__author--with-icon">
<div class="reviews__author-icon">А</div>
<div class="reviews__author-name">Анатолий Матвеевич</div>
<div class="reviews__author-city">г. Одинцово</div>
</div>
<h3 class="reviews__name">Монтаж септиков</h3>
<div class="reviews__message">
В своем новом доме не хотелось пользоваться выгребной ямой. Тем более что после посещения ассенизаторов остается неприятный запах. Искали и приобрели автономную канализацию ЭРА. Доступные цены и качественный монтаж в
короткие сроки. После его установки недолгое время присматривался, а потом забыл на два года пока не пришло время обслуживать. Порекомендовали систему ЭРА соседям. Они поступили мудро и оборудовали сразу три дома одной
системой. Рекомнедую!!!
</div>
<div class="reviews__value">
<div class="reviews__date">06.06.23</div>
<div class="reviews__rating rating rating--4">4/5</div>
</div>
</div>
<div class="reviews__item swiper-slide">
<div class="reviews__author reviews__author--with-icon">
<div class="reviews__author-icon">Е</div>
<div class="reviews__author-name">Евгения</div>
<div class="reviews__author-city">г. Подольск</div>
</div>
<h3 class="reviews__name">Монтаж септиков</h3>
<div class="reviews__message">
В своем новом доме не хотелось пользоваться выгребной ямой. Тем более что после посещения ассенизаторов остается неприятный запах. Искали и приобрели автономную канализацию ЭРА. Доступные цены и качественный монтаж в
короткие сроки. После его установки недолгое время присматривался, а потом забыл на два года пока не пришло время обслуживать. Порекомендовали систему ЭРА соседям. Они поступили мудро и оборудовали сразу три дома одной
системой. Рекомнедую!!!
</div>
<div class="reviews__value">
<div class="reviews__date">06.06.23</div>
<div class="reviews__rating rating rating--4">4/5</div>
</div>
</div>
<div class="reviews__item swiper-slide"> <section class="completed-objects section">
<div class="reviews__author reviews__author--with-icon"> <div class="container">
<div class="reviews__author-icon">А</div> <h2 class="section-title">Последние выполненные объекты</h2>
<div class="reviews__author-name">Анатолий Матвеевич</div> <div class="completed-objects__list">
<div class="reviews__author-city">г. Одинцово</div> <div class="completed-objects__item">
</div> <div class="completed-objects__image" style="background-image: url('/local/templates/EraSeptik/images/webp/портфолио-дача-1.webp');">
<h3 class="reviews__name">Монтаж септиков</h3> <div class="completed-objects__image-details">
<div class="reviews__message"> <div>
В своем новом доме не хотелось пользоваться выгребной ямой. Тем более что после посещения ассенизаторов остается неприятный запах. Искали и приобрели автономную канализацию ЭРА. Доступные цены и качественный монтаж в Дача в Подмосковье, <span class="completed-objects__date">24.03.25</span>
короткие сроки. После его установки недолгое время присматривался, а потом забыл на два года пока не пришло время обслуживать. Порекомендовали систему ЭРА соседям. Они поступили мудро и оборудовали сразу три дома одной </div>
системой. Рекомнедую!!! <a class="completed-objects__link" href="/interesnoe/portfolio-proektov/ustanovka-septika-dlya-dachi/">Подробнее</a>
</div> </div>
<div class="reviews__value"> </div>
<div class="reviews__date">06.06.23</div> <h3 class="completed-objects__title"><a href="/interesnoe/portfolio-proektov/ustanovka-septika-dlya-dachi/">Установка септика для дачи</a></h3>
<div class="reviews__rating rating rating--4">4/5</div> <p class="completed-objects__info">
</div> Клиент пожелал приобрести автономную канализацию для дачи.
</div> </p>
<h4 class="completed-objects__sub">Что было сделано:</h4>
<ul class="completed-objects__data">
<li class="completed-objects__data-item">Был осуществлен бесплатный выезд инженера, который выявил глубину залегания трубы. Определил особенности грунта и будущее месторасположение септика.</li>
<li class="completed-objects__data-item">Септик установлен, готов к использованию. </li>
</ul>
</div>
<div class="completed-objects__item">
<div class="completed-objects__image" style="background-image: url('/local/templates/EraSeptik/images/webp/коттедж-порфолио.webp');">
<div class="completed-objects__image-details">
<div>
Баня в Подмосковье, 19.12.24
</div>
<a class="completed-objects__link" href="/interesnoe/portfolio-proektov/ustanovka-septika-v-banyu/">Подробнее</a>
</div>
</div>
<h3 class="completed-objects__title"><a href="/interesnoe/portfolio-proektov/ustanovka-septika-v-banyu/">Установка септика в бане</a></h3>
<p class="completed-objects__info">
Клиент захотел септик для бани под ключ на 5 человек
</p>
<h4 class="completed-objects__sub">Что было сделано:</h4>
<ul class="completed-objects__data">
<li class="completed-objects__data-item">Учли все сложности, пожелания, согласовали смету </li>
<li class="completed-objects__data-item">Осуществили свои обязанности перед заказчиком в короткие сроки </li>
</ul>
</div>
<div class="completed-objects__item">
<div class="completed-objects__image" style="background-image: url('/local/templates/EraSeptik/images/webp/портфолио-баня.webp');">
<div class="completed-objects__image-details">
<div>
Частный дом в Подмосковье, 10.02.25
</div>
<a class="completed-objects__link" href="/interesnoe/portfolio-proektov/ustanovka-septika-dlya-chastnogo-doma/">Подробнее</a>
</div>
</div>
<h3 class="completed-objects__title"><a href="/interesnoe/portfolio-proektov/ustanovka-septika-dlya-chastnogo-doma/">Установка септика в частный дом</a></h3>
<p class="completed-objects__info">
Клиент нуждался в септике для дома под ключ на 4 человека
</p>
<h4 class="completed-objects__sub">Что было сделано:</h4>
<ul class="completed-objects__data">
<li class="completed-objects__data-item">Выявили потребность, запустили проект в работу</li>
<li class="completed-objects__data-item">Произвели все необходимые действия, сдали объект по акту приёма передачи </li>
</ul>
</div>
<div class="completed-objects__item completed-objects__item--green">
<h3 class="completed-objects__title">Вы можете ознакомиться с другими проектами в нашем портфолио</h3>
<a class="completed-objects__link" href="/interesnoe/portfolio-proektov/">Перейти к другим работам</a>
</div>
</div>
</div>
</section>
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",
"",
Array(
"AREA_FILE_SHOW" => "file",
"PATH" => "/include/reviews.php"
)
);?>
<div class="reviews__item swiper-slide">
<div class="reviews__author reviews__author--with-icon">
<div class="reviews__author-icon">Е</div>
<div class="reviews__author-name">Евгения</div>
<div class="reviews__author-city">г. Подольск</div>
</div>
<h3 class="reviews__name">Монтаж септиков</h3>
<div class="reviews__message">
В своем новом доме не хотелось пользоваться выгребной ямой. Тем более что после посещения ассенизаторов остается неприятный запах. Искали и приобрели автономную канализацию ЭРА. Доступные цены и качественный монтаж в
короткие сроки. После его установки недолгое время присматривался, а потом забыл на два года пока не пришло время обслуживать. Порекомендовали систему ЭРА соседям. Они поступили мудро и оборудовали сразу три дома одной
системой. Рекомнедую!!!
</div>
<div class="reviews__value">
<div class="reviews__date">06.06.23</div>
<div class="reviews__rating rating rating--4">4/5</div>
</div>
</div>
</div>
</div>
</section>
<section class="about-company section"> <section class="about-company section">
<div class="container"> <div class="container">
@ -489,114 +382,122 @@ $APPLICATION->SetTitle("ЭраСептик");
<div class="about-company__description"> <div class="about-company__description">
Давайте знакомиться ближе 🤍 Давайте знакомиться ближе 🤍
</div> </div>
<a class="about-company__link" href="#"> Читать о компании </a> <a class="about-company__link" href="/about"> Читать о компании </a>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
<section class="blog section"> <section class="blog section">
<div class="container"> <div class="container">
<h2 class="section-title">Мы ведем профессиональный блог</h2> <h2 class="section-title">Мы ведем профессиональный блог</h2>
<div class="blog__list"> <div class="blog__list">
<div class="blog__item"> <div class="blog__item">
<div class="blog__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/blog-image1.png');"> <div class="blog__image" style="background-image: url('/local/templates/EraSeptik/images/webp/виды-частный-дом-статья.webp')">
<div class="blog__detail"> <div class="blog__detail">
<div>20.05.24</div> <div>
<a class="blog__link" href="#">Читать статью</a> 20.05.24
</div> </div>
</div> <a class="blog__link" href="/interesnoe/blog-pro-septiki/vidy-septikov-dlya-chastnogo-doma/">Читать статью</a>
<div class="blog__content"> </div>
<div class="blog__tag-list"> </div>
<div class="blog__tag-item">Инструкция</div> <div class="blog__content">
<div class="blog__tag-item">Советы</div> <div class="blog__tag-list">
<div class="blog__tag-item">История</div> <div class="blog__tag-item">
</div> Инструкция
<h3 class="blog__title"> </div>
Типы локальных очистных сооружений: как выбрать подходящее решение для вашего участка <div class="blog__tag-item">
</h3> Советы
<div class="blog__description"> </div>
Выбор септика для дачи — важная задача, от которой зависит комфорт и экологическая безопасность вашего загородного участка. В этом посте мы рассмотрим ключевые факторы, которые стоит учесть при выборе септика: объем, </div>
тип системы, материал изготовления, а также нюансы монтажа и эксплуатации. Узнайте, как сделать ваш выбор осознанным и избежать распространенных ошибок, чтобы ваша дача всегда оставалась чистым и уютным местом для <h3 class="blog__title"><a href="/interesnoe/blog-pro-septiki/vidy-septikov-dlya-chastnogo-doma/">
отдыха! Виды септиков для частного дома</a> </h3>
</div> <div class="blog__description">
</div> При строительстве загородного дома или дачи особое внимание стоит уделить организации системы очистки сточных вод.
</div> </div>
</div>
<div class="blog__item"> </div>
<div class="blog__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/blog-image4.png');"> <div class="blog__item">
<div class="blog__detail"> <div class="blog__image" style="background-image: url('/local/templates/EraSeptik/images/jpg/gl-sdachi-st.webp')">
<div>20.05.24</div> <div class="blog__detail">
<a class="blog__link" href="#">Читать статью</a> <div>
</div> 20.09.24
</div> </div>
<div class="blog__content"> <a class="blog__link" href="/interesnoe/blog-pro-septiki/kakoy-septik-dlya-dachi-vybrat/">Читать статью</a>
<div class="blog__tag-list"> </div>
<div class="blog__tag-item">Инструкция</div> </div>
<div class="blog__tag-item">Советы</div> <div class="blog__content">
</div> <div class="blog__tag-list">
<h3 class="blog__title">Как правильно подплетать дредлоки самому</h3> <div class="blog__tag-item">
<div class="blog__description"> Инструкция
Выбор септика для дачи — важная задача, от которой зависит комфорт и экологическая безопасность вашего загородного участка. В этом посте мы рассмотрим ключевые факторы, которые стоит учесть при выборе септика: объем, </div>
тип системы, материал изготовления, а также нюансы монтажа и эксплуатации. Узнайте, как сделать ваш выбор осознанным и избежать распространенных ошибок, чтобы ваша дача всегда оставалась чистым и уютным местом для <div class="blog__tag-item">
отдыха! Советы
</div> </div>
</div> </div>
</div> <h3 class="blog__title"><a href="/interesnoe/blog-pro-septiki/kakoy-septik-dlya-dachi-vybrat/">Септики для дачи: Руководство по выбору и установке</a></h3>
<div class="blog__description">
<div class="blog__item"> Существует три основных типа септиков, которые чаще всего применяются на дачных участках. Каждый из них имеет свои особенности, преимущества и требования к эксплуатации.
<div class="blog__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/blog-image2.png');"> </div>
<div class="blog__detail"> </div>
<div>20.05.24</div> </div>
<a class="blog__link" href="#">Читать статью</a> <div class="blog__item">
</div> <div class="blog__image" style="background-image: url('/local/templates/EraSeptik/images/webp/gl-ak-st.webp')">
</div> <div class="blog__detail">
<div class="blog__content"> <div>
<div class="blog__tag-list"> 11.01.24
<div class="blog__tag-item">Советы</div> </div>
<div class="blog__tag-item">История</div> <a class="blog__link" href="/interesnoe/blog-pro-septiki/avtonomnaya-kanalizatsiya-kak-vybrat/">Читать статью</a>
</div> </div>
<h3 class="blog__title"> </div>
Плюсы и минусы использования автономных канализационных систем на даче <div class="blog__content">
</h3> <div class="blog__tag-list">
<div class="blog__description"> <div class="blog__tag-item">
Выбор септика для дачи — важная задача, от которой зависит комфорт и экологическая безопасность вашего загородного участка. В этом посте мы рассмотрим ключевые факторы, которые стоит учесть при выборе септика: объем, Советы
тип системы, материал изготовления, а также нюансы монтажа и эксплуатации. Узнайте, как сделать ваш выбор осознанным и избежать распространенных ошибок, чтобы ваша дача всегда оставалась чистым и уютным местом для </div>
отдыха! <div class="blog__tag-item">
</div> Инструкция
</div> </div>
</div> </div>
<h3 class="blog__title"><a href="/interesnoe/blog-pro-septiki/avtonomnaya-kanalizatsiya-kak-vybrat/">
<div class="blog__item"> Автономная канализация для частного дома и дачи: Как выбрать лучшую систему и правильно ее установить</a> </h3>
<div class="blog__image" style="background-image: url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/blog-image3.png');"> <div class="blog__description">
<div class="blog__detail"> В отсутствие подключения к централизованной системе, выбор подходящей канализационной установки становится ключевым для эффективной утилизации сточных вод.
<div>20.05.24</div> </div>
<a class="blog__link" href="#">Читать статью</a> </div>
</div> </div>
</div> <div class="blog__item">
<div class="blog__content"> <div class="blog__image" style="background-image: url('/local/templates/EraSeptik/images/webp/gl-sbo-st.webp')">
<div class="blog__tag-list"> <div class="blog__detail">
<div class="blog__tag-item">История</div> <div>
<div class="blog__tag-item">Инструкция</div> 05.05.24
</div> </div>
<h3 class="blog__title"> <a class="blog__link" href="/interesnoe/blog-pro-septiki/stantsii-biologicheskoy-ochistki-pravilnyy-vybor/">Читать статью</a>
Монтаж и обслуживание локальных очистных сооружений: что нужно знать </div>
</h3> </div>
<div class="blog__description"> <div class="blog__content">
Выбор септика для дачи — важная задача, от которой зависит комфорт и экологическая безопасность вашего загородного участка. В этом посте мы рассмотрим ключевые факторы, которые стоит учесть при выборе септика: объем, <div class="blog__tag-list">
тип системы, материал изготовления, а также нюансы монтажа и эксплуатации. Узнайте, как сделать ваш выбор осознанным и избежать распространенных ошибок, чтобы ваша дача всегда оставалась чистым и уютным местом для <div class="blog__tag-item">
отдыха! История
</div> </div>
</div> <div class="blog__tag-item">
</div> Инструкция
</div>
<div class="blog__item blog__item--green"> </div>
<div class="blog__more"> <h3 class="blog__title"><a href="/interesnoe/blog-pro-septiki/stantsii-biologicheskoy-ochistki-pravilnyy-vybor/">
Читайте больше полезной информации в&nbsp;нашем блоге Станции биологической очистки: принцип работы и правильный выбор</a> </h3>
</div> <div class="blog__description">
<a class="blog__more-link"> Смотреть все статьи </a> Для решения этого вопроса раньше использовались такие традиционные методы, как выгребные ямы и септики.
</div> </div>
</div> </div>
</div> </div>
</section> <div class="blog__item blog__item--green">
<div class="blog__more">
Читайте больше полезной информации в&nbsp;нашем блоге
</div>
<a class="blog__more-link" href="/interesnoe/blog-pro-septiki/"> Смотреть все статьи </a>
</div>
</div>
</div>
</section>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

@ -0,0 +1,72 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
$this->setFrameMode(true);
if (isset($arResult['ITEM'])):
$productId = $arResult['ITEM']['ID'];
$priceRow = Bitrix\Catalog\PriceTable::getList([
'filter' => [
'PRODUCT_ID' => $productId,
'CATALOG_GROUP_ID' => 1
],
'select' => ['PRICE', 'CURRENCY']
])->fetch();
$salePrice = $arResult['ITEM']['PROPERTIES']['ATT_OLD_PRICE']['VALUE'];
$CHEL = $arResult['ITEM']['PROPERTIES']['CHEL']['VALUE'];
$SBROS_NUM = $arResult['ITEM']['PROPERTIES']['SBROS_NUM']['VALUE'];
$RECYCLE_VOL = $arResult['ITEM']['PROPERTIES']['RECYCLE_VOL']['VALUE'];
$reviews = $arResult['ITEM']['PROPERTIES']['REV_COMPLITE']['VALUE'];
$rating = function_exists('getAverageRating') ? getAverageRating($reviews) : 0;
?>
<div class="product">
<a class="product__image" href="<?= $arResult['ITEM']['DETAIL_PAGE_URL'] ?>">
<img src="<?= $arResult['ITEM']['PREVIEW_PICTURE']['SRC'] ?>" width="336" height="340" alt="<?= $arResult['ITEM']['NAME'] ?>">
</a>
<div class="product__data">
<div class="product__rating rating rating--<?= $rating ?>"><?= $rating ?>/5</div>
<div class="product__info">
<a class="product__title" href="<?= $arResult['ITEM']['DETAIL_PAGE_URL'] ?>">
<?= $arResult['ITEM']['NAME'] ?>
</a>
<?php if (!empty($arResult['ITEM']['PREVIEW_TEXT'])): ?>
<p class="product__text">
<?= $arResult['ITEM']['PREVIEW_TEXT'] ?>
</p>
<?php endif; ?>
</div>
<div class="product__info">
<?php if (!empty($CHEL)): ?>
<p class="product__text">
Пользователей: <span><?= $CHEL ?></span>
</p>
<?php endif; ?>
<?php if (!empty($SBROS_NUM)): ?>
<p class="product__text">
Залповый сброс, л: <span><?= $SBROS_NUM ?></span>
</p>
<?php endif; ?>
<?php if (!empty($RECYCLE_VOL)): ?>
<p class="product__text">
Объем переработки, л/сутки: <span><?= $RECYCLE_VOL ?></span>
</p>
<?php endif; ?>
</div>
<?php if (!empty($priceRow['PRICE'])): ?>
<div class="product__price">
<?= number_format($priceRow['PRICE'], 0, '', ' ') ?>
</div>
<?php endif; ?>
<form class="product__btns add-to-cart-form" action="<?=POST_FORM_ACTION_URI?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>" value="1" class="form-control" id="QUANTITY<?= $arResult['ITEM']['ID'] ?>">
<input type="hidden" name="<?echo $arParams["ACTION_VARIABLE"]?>" value="ADD2BASKET">
<input type="hidden" name="ajax_basket" value="Y">
<input type="hidden" name="<?echo $arParams["PRODUCT_ID_VARIABLE"]?>" value="<?= $arResult['ITEM']['ID'] ?>" class="id-offer">
<button type="button" class="button button--orange" data-product="<?= $arResult['ITEM']['NAME'] ?>">
Купить
</button>
<button type="submit" class="button button--outline add-to-cart-button" name="<?echo $arParams["ACTION_VARIABLE"]."ADD2BASKET"?>">
Добавить в корзину
</button>
</form>
</div>
</div>
<?php endif; ?>

@ -0,0 +1,26 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
$this->setFrameMode(true);
?>
<?php if (!empty($arResult['ITEMS'])): ?>
<?php foreach ($arResult['ITEMS'] as $item): ?>
<?php
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'mainpage',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $this->GetEditAreaId($item['ID']),
'TYPE' => 'CARD',
),
'PARAMS' => $arParams
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?php endforeach; ?>
<?php else: ?>
<div>Товаров не найдено</div>
<?php endif; ?>

@ -0,0 +1,64 @@
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
$APPLICATION->IncludeComponent(
"bitrix:catalog.section",
"",
array(
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"],
"ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"],
"PAGE_ELEMENT_COUNT" => $arParams["PAGE_ELEMENT_COUNT"],
"LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"],
"PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"],
"OFFERS_CART_PROPERTIES" => $arParams["OFFERS_CART_PROPERTIES"],
"OFFERS_FIELD_CODE" => $arParams["LIST_OFFERS_FIELD_CODE"],
"OFFERS_PROPERTY_CODE" => $arParams["LIST_OFFERS_PROPERTY_CODE"],
"OFFERS_SORT_FIELD" => $arParams["OFFERS_SORT_FIELD"],
"OFFERS_SORT_ORDER" => $arParams["OFFERS_SORT_ORDER"],
"OFFERS_LIMIT" => $arParams["LIST_OFFERS_LIMIT"],
"SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"],
"DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["element"],
"BASKET_URL" => $arParams["BASKET_URL"],
"ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"],
"PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"],
"PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"],
"PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"],
"SECTION_ID_VARIABLE" => $arParams["SECTION_ID_VARIABLE"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"DISPLAY_COMPARE" => $arParams["USE_COMPARE"],
"PRICE_CODE" => $arParams["PRICE_CODE"],
"USE_PRICE_COUNT" => $arParams["USE_PRICE_COUNT"],
"SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"],
"PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"],
"PRODUCT_PROPERTIES" => $arParams["PRODUCT_PROPERTIES"],
"USE_PRODUCT_QUANTITY" => $arParams["USE_PRODUCT_QUANTITY"],
"CONVERT_CURRENCY" => $arParams["CONVERT_CURRENCY"],
"CURRENCY_ID" => $arParams["CURRENCY_ID"],
"DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"],
"DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"],
"PAGER_TITLE" => $arParams["PAGER_TITLE"],
"PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"],
"PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"],
"PAGER_DESC_NUMBERING" => $arParams["PAGER_DESC_NUMBERING"],
"PAGER_DESC_NUMBERING_CACHE_TIME" => $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"],
"PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"],
"FILTER_NAME" => "arrFilter",
"SECTION_ID" => "",
"SECTION_CODE" => "",
"SECTION_USER_FIELDS" => array(),
"INCLUDE_SUBSECTIONS" => "Y",
"SHOW_ALL_WO_SECTION" => "Y",
"META_KEYWORDS" => "",
"META_DESCRIPTION" => "",
"BROWSER_TITLE" => "",
"ADD_SECTIONS_CHAIN" => "N",
"SET_TITLE" => "N",
"SET_STATUS_404" => "N",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "N",
),
$component
);
?>

@ -0,0 +1,640 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var string $componentPath
* @var string $componentName
* @var array $arCurrentValues
* @var array $arTemplateParameters
*/
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
use Bitrix\Main\Web\Json;
use Bitrix\Iblock;
if (!Loader::includeModule('iblock'))
return;
$boolCatalog = Loader::includeModule('catalog');
CBitrixComponent::includeComponentClass($componentName);
$usePropertyFeatures = Iblock\Model\PropertyFeature::isEnabledFeatures();
$iblockExists = (!empty($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID'] > 0);
$defaultValue = array('-' => GetMessage('CP_BCS_TPL_PROP_EMPTY'));
$arSKU = false;
$boolSKU = false;
$filterDataValues = array();
if ($boolCatalog && (isset($arCurrentValues['IBLOCK_ID']) && 0 < intval($arCurrentValues['IBLOCK_ID'])))
{
$arSKU = CCatalogSku::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']);
$boolSKU = !empty($arSKU) && is_array($arSKU);
$filterDataValues['iblockId'] = (int)$arCurrentValues['IBLOCK_ID'];
if ($boolSKU)
{
$filterDataValues['offersIblockId'] = $arSKU['IBLOCK_ID'];
}
}
$arThemes = array();
if (ModuleManager::isModuleInstalled('bitrix.eshop'))
{
$arThemes['site'] = GetMessage('CP_BCS_TPL_THEME_SITE');
}
$arThemesList = array(
'blue' => GetMessage('CP_BCS_TPL_THEME_BLUE'),
'green' => GetMessage('CP_BCS_TPL_THEME_GREEN'),
'red' => GetMessage('CP_BCS_TPL_THEME_RED'),
'yellow' => GetMessage('CP_BCS_TPL_THEME_YELLOW')
);
$dir = trim(preg_replace("'[\\\\/]+'", '/', __DIR__.'/themes/'));
if (is_dir($dir))
{
foreach ($arThemesList as $themeID => $themeName)
{
if (!is_file($dir.$themeID.'/style.css'))
continue;
$arThemes[$themeID] = $themeName;
}
}
$arTemplateParameters['TEMPLATE_THEME'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_TEMPLATE_THEME'),
'TYPE' => 'LIST',
'VALUES' => $arThemes,
'DEFAULT' => 'blue',
'ADDITIONAL_VALUES' => 'Y'
);
$lineElementCount = (int)($arCurrentValues['LINE_ELEMENT_COUNT'] ?? 3);
$pageElementCount = (int)($arCurrentValues['PAGE_ELEMENT_COUNT'] ?? 18);
$arTemplateParameters['PRODUCT_ROW_VARIANTS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ROW_VARIANTS'),
'TYPE' => 'CUSTOM',
'BIG_DATA' => \Bitrix\Main\Analytics\Catalog::isOn() ? 'Y' : 'N',
'COUNT_PARAM_NAME' => 'PAGE_ELEMENT_COUNT',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_add'),
'JS_EVENT' => 'initDraggableAddControl',
'JS_MESSAGES' => Json::encode(array(
'variant' => GetMessage('CP_BCS_TPL_SETTINGS_VARIANT'),
'delete' => GetMessage('CP_BCS_TPL_SETTINGS_DELETE'),
'quantity' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY'),
'quantityBigData' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA')
)),
'JS_DATA' => Json::encode(CatalogSectionComponent::getTemplateVariantsMap()),
'DEFAULT' => Json::encode(CatalogSectionComponent::predictRowVariants($lineElementCount, $pageElementCount))
);
$arTemplateParameters['ENLARGE_PRODUCT'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'Y',
'DEFAULT' => 'N',
'VALUES' => array(
'STRICT' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_STRICT'),
'PROP' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_PROP')
)
);
$arTemplateParameters['PRODUCT_BLOCKS_ORDER'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCKS_ORDER'),
'TYPE' => 'CUSTOM',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_order'),
'JS_EVENT' => 'initDraggableOrderControl',
'JS_DATA' => Json::encode(array(
'price' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PRICE'),
'quantityLimit' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT'),
'quantity' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY'),
'buttons' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS'),
'props' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PROPS'),
'sku' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_SKU')
)),
'DEFAULT' => 'price,props,sku,quantityLimit,quantity,buttons'
);
$arTemplateParameters['SHOW_SLIDER'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_SLIDER'),
'TYPE' => 'CHECKBOX',
'MULTIPLE' => 'N',
'REFRESH' => 'Y',
'DEFAULT' => 'Y'
);
if (isset($arCurrentValues['SHOW_SLIDER']) && $arCurrentValues['SHOW_SLIDER'] === 'Y')
{
$arTemplateParameters['SLIDER_INTERVAL'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_INTERVAL'),
'TYPE' => 'TEXT',
'MULTIPLE' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '3000'
);
$arTemplateParameters['SLIDER_PROGRESS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_PROGRESS'),
'TYPE' => 'CHECKBOX',
'MULTIPLE' => 'N',
'REFRESH' => 'N',
'DEFAULT' => 'N'
);
}
$arAllPropList = array();
$arFilePropList = $defaultValue;
$arListPropList = array();
if ($iblockExists)
{
$rsProps = CIBlockProperty::GetList(
array('SORT' => 'ASC', 'ID' => 'ASC'),
array('IBLOCK_ID' => $arCurrentValues['IBLOCK_ID'], 'ACTIVE' => 'Y')
);
while ($arProp = $rsProps->Fetch())
{
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME'];
if ($arProp['CODE'] == '')
{
$arProp['CODE'] = $arProp['ID'];
}
$arAllPropList[$arProp['CODE']] = $strPropName;
if ($arProp['PROPERTY_TYPE'] === 'F')
{
$arFilePropList[$arProp['CODE']] = $strPropName;
}
if ($arProp['PROPERTY_TYPE'] === 'L')
{
$arListPropList[$arProp['CODE']] = $strPropName;
}
}
$showedProperties = [];
if ($usePropertyFeatures)
{
if ($iblockExists)
{
$showedProperties = Iblock\Model\PropertyFeature::getListPageShowPropertyCodes(
$arCurrentValues['IBLOCK_ID'],
['CODE' => 'Y']
);
if ($showedProperties === null)
$showedProperties = [];
}
}
else
{
if (!empty($arCurrentValues['PROPERTY_CODE']) && is_array($arCurrentValues['PROPERTY_CODE']))
{
$showedProperties = $arCurrentValues['PROPERTY_CODE'];
}
}
if (!empty($showedProperties))
{
$selected = array();
foreach ($showedProperties as $code)
{
if (isset($arAllPropList[$code]))
{
$selected[$code] = $arAllPropList[$code];
}
}
$arTemplateParameters['PROPERTY_CODE_MOBILE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PROPERTY_CODE_MOBILE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'VALUES' => $selected
);
}
unset($showedProperties);
if (isset($arCurrentValues['ENLARGE_PRODUCT']) && $arCurrentValues['ENLARGE_PRODUCT'] === 'PROP')
{
$arTemplateParameters['ENLARGE_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $defaultValue + $arListPropList
);
}
if ($boolSKU)
{
$arTemplateParameters['PRODUCT_DISPLAY_MODE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_DISPLAY_MODE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'Y',
'DEFAULT' => 'N',
'VALUES' => array(
'N' => GetMessage('CP_BCS_TPL_DML_SIMPLE'),
'Y' => GetMessage('CP_BCS_TPL_DML_EXT')
)
);
}
$arTemplateParameters['ADD_PICT_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_ADD_PICT_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arFilePropList
);
$arTemplateParameters['LABEL_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'Y',
'VALUES' => $arListPropList
);
if (isset($arCurrentValues['LABEL_PROP']) && !empty($arCurrentValues['LABEL_PROP']))
{
if (!is_array($arCurrentValues['LABEL_PROP']))
{
$arCurrentValues['LABEL_PROP'] = array($arCurrentValues['LABEL_PROP']);
}
$selected = array();
foreach ($arCurrentValues['LABEL_PROP'] as $name)
{
if (isset($arListPropList[$name]))
{
$selected[$name] = $arListPropList[$name];
}
}
$arTemplateParameters['LABEL_PROP_MOBILE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_MOBILE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'VALUES' => $selected
);
unset($selected);
$arTemplateParameters['LABEL_PROP_POSITION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_POSITION'),
'TYPE' => 'CUSTOM',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'),
'JS_EVENT' => 'initPositionControl',
'JS_DATA' => Json::encode(
array(
'positions' => array(
'top-left', 'top-center', 'top-right',
'middle-left', 'middle-center', 'middle-right',
'bottom-left', 'bottom-center', 'bottom-right'
),
'className' => ''
)
),
'DEFAULT' => 'top-left'
);
}
if ($boolSKU && isset($arCurrentValues['PRODUCT_DISPLAY_MODE']) && 'Y' == $arCurrentValues['PRODUCT_DISPLAY_MODE'])
{
$arAllOfferPropList = array();
$arFileOfferPropList = $arTreeOfferPropList = $defaultValue;
$rsProps = CIBlockProperty::GetList(
array('SORT' => 'ASC', 'ID' => 'ASC'),
array('IBLOCK_ID' => $arSKU['IBLOCK_ID'], 'ACTIVE' => 'Y')
);
while ($arProp = $rsProps->Fetch())
{
if ($arProp['ID'] == $arSKU['SKU_PROPERTY_ID'])
continue;
$arProp['USER_TYPE'] = (string)$arProp['USER_TYPE'];
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME'];
if ('' == $arProp['CODE'])
$arProp['CODE'] = $arProp['ID'];
$arAllOfferPropList[$arProp['CODE']] = $strPropName;
if ('F' == $arProp['PROPERTY_TYPE'])
$arFileOfferPropList[$arProp['CODE']] = $strPropName;
if ('N' != $arProp['MULTIPLE'])
continue;
if (
'L' == $arProp['PROPERTY_TYPE']
|| 'E' == $arProp['PROPERTY_TYPE']
|| ('S' == $arProp['PROPERTY_TYPE'] && 'directory' == $arProp['USER_TYPE'] && CIBlockPriceTools::checkPropDirectory($arProp))
)
$arTreeOfferPropList[$arProp['CODE']] = $strPropName;
}
$arTemplateParameters['OFFER_ADD_PICT_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_OFFER_ADD_PICT_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arFileOfferPropList
);
if (!$usePropertyFeatures)
{
$arTemplateParameters['OFFER_TREE_PROPS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_OFFER_TREE_PROPS'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arTreeOfferPropList
);
}
}
}
if ($boolCatalog)
{
$arTemplateParameters['PRODUCT_SUBSCRIPTION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_SUBSCRIPTION'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y'
);
$arTemplateParameters['SHOW_DISCOUNT_PERCENT'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_DISCOUNT_PERCENT'),
'TYPE' => 'CHECKBOX',
'REFRESH' => 'Y',
'DEFAULT' => 'N'
);
if (isset($arCurrentValues['SHOW_DISCOUNT_PERCENT']) && $arCurrentValues['SHOW_DISCOUNT_PERCENT'] === 'Y')
{
$arTemplateParameters['DISCOUNT_PERCENT_POSITION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_DISCOUNT_PERCENT_POSITION'),
'TYPE' => 'CUSTOM',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'),
'JS_EVENT' => 'initPositionControl',
'JS_DATA' => Json::encode(
array(
'positions' => array(
'top-left', 'top-center', 'top-right',
'middle-left', 'middle-center', 'middle-right',
'bottom-left', 'bottom-center', 'bottom-right'
),
'className' => 'bx-pos-parameter-block-circle'
)
),
'DEFAULT' => 'bottom-right'
);
}
$arTemplateParameters['SHOW_OLD_PRICE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_OLD_PRICE'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N'
);
$arTemplateParameters['SHOW_MAX_QUANTITY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY'),
'TYPE' => 'LIST',
'REFRESH' => 'Y',
'MULTIPLE' => 'N',
'VALUES' => array(
'N' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_N'),
'Y' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_Y'),
'M' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_M')
),
'DEFAULT' => array('N'),
);
if (isset($arCurrentValues['SHOW_MAX_QUANTITY']))
{
if ($arCurrentValues['SHOW_MAX_QUANTITY'] !== 'N')
{
$arTemplateParameters['MESS_SHOW_MAX_QUANTITY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT')
);
}
if ($arCurrentValues['SHOW_MAX_QUANTITY'] === 'M')
{
$arTemplateParameters['RELATIVE_QUANTITY_FACTOR'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR'),
'TYPE' => 'STRING',
'DEFAULT' => '5'
);
$arTemplateParameters['MESS_RELATIVE_QUANTITY_MANY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT')
);
$arTemplateParameters['MESS_RELATIVE_QUANTITY_FEW'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT')
);
}
}
$arTemplateParameters['ADD_TO_BASKET_ACTION'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BCS_TPL_ADD_TO_BASKET_ACTION'),
'TYPE' => 'LIST',
'VALUES' => array(
'ADD' => GetMessage('ADD_TO_BASKET_ACTION_ADD'),
'BUY' => GetMessage('ADD_TO_BASKET_ACTION_BUY')
),
'DEFAULT' => 'ADD',
'REFRESH' => 'N'
);
$arTemplateParameters['SHOW_CLOSE_POPUP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_CLOSE_POPUP'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
);
}
$arTemplateParameters['MESS_BTN_BUY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY_DEFAULT')
);
$arTemplateParameters['LAZY_LOAD'] = array(
'PARENT' => 'PAGER_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_LAZY_LOAD'),
'TYPE' => 'CHECKBOX',
'REFRESH' => 'Y',
'DEFAULT' => 'N'
);
$arTemplateParameters['MESS_BTN_LAZY_LOAD'] = array(
'PARENT' => 'PAGER_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD'),
'TYPE' => 'TEXT',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT'),
'HIDDEN' => (isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y' ? 'N' : 'Y')
);
$arTemplateParameters['LOAD_ON_SCROLL'] = array(
'PARENT' => 'PAGER_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_LOAD_ON_SCROLL'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'HIDDEN' => (
(isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y')
|| (isset($arCurrentValues['DISPLAY_TOP_PAGER']) && $arCurrentValues['DISPLAY_TOP_PAGER'] === 'Y')
|| (!isset($arCurrentValues['DISPLAY_BOTTOM_PAGER']) || $arCurrentValues['DISPLAY_BOTTOM_PAGER'] !== 'N')
? 'N'
: 'Y'
)
);
$arTemplateParameters['MESS_BTN_ADD_TO_BASKET'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT')
);
$arTemplateParameters['MESS_BTN_SUBSCRIBE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT')
);
if (isset($arCurrentValues['DISPLAY_COMPARE']) && $arCurrentValues['DISPLAY_COMPARE'] === 'Y')
{
$arTemplateParameters['MESS_BTN_COMPARE'] = array(
'PARENT' => 'COMPARE',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT')
);
$arTemplateParameters['COMPARE_NAME'] = array(
'PARENT' => 'COMPARE',
'NAME' => GetMessage('CP_BCS_TPL_COMPARE_NAME'),
'TYPE' => 'STRING',
'DEFAULT' => 'CATALOG_COMPARE_LIST'
);
}
$arTemplateParameters['MESS_BTN_DETAIL'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT')
);
$arTemplateParameters['MESS_NOT_AVAILABLE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT')
);
$arTemplateParameters['MESS_NOT_AVAILABLE_SERVICE'] = [
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT'),
];
if (\Bitrix\Main\Analytics\Catalog::isOn())
{
$arTemplateParameters['RCM_TYPE'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_TYPE_TITLE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'VALUES' => array(
// personal
'personal' => GetMessage('CP_BCS_TPL_PERSONAL'),
// general
'bestsell' => GetMessage('CP_BCS_TPL_BESTSELLERS'),
// item2item
'similar_sell' => GetMessage('CP_BCS_TPL_SOLD_WITH'),
'similar_view' => GetMessage('CP_BCS_TPL_VIEWED_WITH'),
'similar' => GetMessage('CP_BCS_TPL_SIMILAR'),
// randomly distributed
'any_similar' => GetMessage('CP_BCS_TPL_SIMILAR_ANY'),
'any_personal' => GetMessage('CP_BCS_TPL_PERSONAL_WBEST'),
'any' => GetMessage('CP_BCS_TPL_RAND')
),
'DEFAULT' => 'personal'
);
$arTemplateParameters['RCM_PROD_ID'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ID_PARAM'),
'TYPE' => 'STRING',
'DEFAULT' => '={$_REQUEST["PRODUCT_ID"]}'
);
$arTemplateParameters['SHOW_FROM_SECTION'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_FROM_SECTION'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N'
);
}
$arTemplateParameters['USE_ENHANCED_ECOMMERCE'] = array(
'PARENT' => 'ANALYTICS_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_USE_ENHANCED_ECOMMERCE'),
'TYPE' => 'CHECKBOX',
'REFRESH' => 'Y',
'DEFAULT' => 'N'
);
if (isset($arCurrentValues['USE_ENHANCED_ECOMMERCE']) && $arCurrentValues['USE_ENHANCED_ECOMMERCE'] === 'Y')
{
$arTemplateParameters['DATA_LAYER_NAME'] = array(
'PARENT' => 'ANALYTICS_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_DATA_LAYER_NAME'),
'TYPE' => 'STRING',
'DEFAULT' => 'dataLayer'
);
$arTemplateParameters['BRAND_PROPERTY'] = array(
'PARENT' => 'ANALYTICS_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_BRAND_PROPERTY'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'DEFAULT' => '',
'VALUES' => $defaultValue + $arAllPropList
);
}

@ -0,0 +1,63 @@
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var array $arParams
* @var array $templateData
* @var string $templateFolder
* @var CatalogSectionComponent $component
*/
global $APPLICATION;
if (isset($templateData['TEMPLATE_THEME']))
{
$APPLICATION->SetAdditionalCSS($templateFolder.'/themes/'.$templateData['TEMPLATE_THEME'].'/style.css');
$APPLICATION->SetAdditionalCSS('/bitrix/css/main/themes/'.$templateData['TEMPLATE_THEME'].'/style.css', true);
}
if (!empty($templateData['TEMPLATE_LIBRARY']))
{
$loadCurrency = false;
if (!empty($templateData['CURRENCIES']))
{
$loadCurrency = \Bitrix\Main\Loader::includeModule('currency');
}
CJSCore::Init($templateData['TEMPLATE_LIBRARY']);
if ($loadCurrency)
{
?>
<script>
BX.Currency.setCurrencies(<?=$templateData['CURRENCIES']?>);
</script>
<?
}
}
// lazy load and big data json answers
$request = \Bitrix\Main\Context::getCurrent()->getRequest();
if ($request->isAjaxRequest() && ($request->get('action') === 'showMore' || $request->get('action') === 'deferredLoad'))
{
$content = ob_get_contents();
ob_end_clean();
[, $itemsContainer] = explode('<!-- items-container -->', $content);
$paginationContainer = '';
if ($templateData['USE_PAGINATION_CONTAINER'])
{
[, $paginationContainer] = explode('<!-- pagination-container -->', $content);
}
[, $epilogue] = explode('<!-- component-end -->', $content);
if (isset($arParams['AJAX_MODE']) && $arParams['AJAX_MODE'] === 'Y')
{
$component->prepareLinks($paginationContainer);
}
$component::sendJsonAnswer(array(
'items' => $itemsContainer,
'pagination' => $paginationContainer,
'epilogue' => $epilogue,
));
}

@ -0,0 +1,107 @@
<?
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
if (!function_exists('getDoublePicturesForItem'))
{
function getDoublePicturesForItem(&$item, $propertyCode)
{
$result = array(
'PICT' => false,
'SECOND_PICT' => false
);
if (!empty($item) && is_array($item))
{
if (!empty($item['PREVIEW_PICTURE']))
{
if (!is_array($item['PREVIEW_PICTURE']))
$item['PREVIEW_PICTURE'] = CFile::GetFileArray($item['PREVIEW_PICTURE']);
if (isset($item['PREVIEW_PICTURE']['ID']))
{
$result['PICT'] = array(
'ID' => intval($item['PREVIEW_PICTURE']['ID']),
'SRC' => $item['PREVIEW_PICTURE']['SRC'],
'WIDTH' => intval($item['PREVIEW_PICTURE']['WIDTH']),
'HEIGHT' => intval($item['PREVIEW_PICTURE']['HEIGHT'])
);
}
}
if (!empty($item['DETAIL_PICTURE']))
{
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT');
if (!is_array($item['DETAIL_PICTURE']))
$item['DETAIL_PICTURE'] = CFile::GetFileArray($item['DETAIL_PICTURE']);
if (isset($item['DETAIL_PICTURE']['ID']))
{
$result[$keyPict] = array(
'ID' => intval($item['DETAIL_PICTURE']['ID']),
'SRC' => $item['DETAIL_PICTURE']['SRC'],
'WIDTH' => intval($item['DETAIL_PICTURE']['WIDTH']),
'HEIGHT' => intval($item['DETAIL_PICTURE']['HEIGHT'])
);
}
}
if (empty($result['SECOND_PICT']))
{
if (
'' != $propertyCode &&
isset($item['PROPERTIES'][$propertyCode]) &&
'F' == $item['PROPERTIES'][$propertyCode]['PROPERTY_TYPE']
)
{
if (
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) &&
!empty($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE'])
)
{
$fileValues = (
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']['ID']) ?
array(0 => $item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) :
$item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']
);
foreach ($fileValues as &$oneFileValue)
{
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT');
$result[$keyPict] = array(
'ID' => intval($oneFileValue['ID']),
'SRC' => $oneFileValue['SRC'],
'WIDTH' => intval($oneFileValue['WIDTH']),
'HEIGHT' => intval($oneFileValue['HEIGHT'])
);
if ('SECOND_PICT' == $keyPict)
break;
}
if (isset($oneFileValue))
unset($oneFileValue);
}
else
{
$propValues = $item['PROPERTIES'][$propertyCode]['VALUE'];
if (!is_array($propValues))
$propValues = array($propValues);
foreach ($propValues as &$oneValue)
{
$oneFileValue = CFile::GetFileArray($oneValue);
if (isset($oneFileValue['ID']))
{
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT');
$result[$keyPict] = array(
'ID' => intval($oneFileValue['ID']),
'SRC' => $oneFileValue['SRC'],
'WIDTH' => intval($oneFileValue['WIDTH']),
'HEIGHT' => intval($oneFileValue['HEIGHT'])
);
if ('SECOND_PICT' == $keyPict)
break;
}
}
if (isset($oneValue))
unset($oneValue);
}
}
}
}
return $result;
}
}
?>

@ -0,0 +1,9 @@
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var CBitrixComponentTemplate $this
* @var CatalogSectionComponent $component
*/
$component = $this->getComponent();
$arParams = $component->applyTemplateModifications();

@ -0,0 +1,359 @@
(function() {
'use strict';
if (!!window.JCCatalogSectionComponent)
return;
window.JCCatalogSectionComponent = function(params) {
this.formPosting = false;
this.siteId = params.siteId || '';
this.ajaxId = params.ajaxId || '';
this.template = params.template || '';
this.componentPath = params.componentPath || '';
this.parameters = params.parameters || '';
if (params.navParams)
{
this.navParams = {
NavNum: params.navParams.NavNum || 1,
NavPageNomer: parseInt(params.navParams.NavPageNomer) || 1,
NavPageCount: parseInt(params.navParams.NavPageCount) || 1
};
}
this.bigData = params.bigData || {enabled: false};
this.container = document.querySelector('[data-entity="' + params.container + '"]');
this.showMoreButton = null;
this.showMoreButtonMessage = null;
if (this.bigData.enabled && BX.util.object_keys(this.bigData.rows).length > 0)
{
BX.cookie_prefix = this.bigData.js.cookiePrefix || '';
BX.cookie_domain = this.bigData.js.cookieDomain || '';
BX.current_server_time = this.bigData.js.serverTime;
BX.ready(BX.delegate(this.bigDataLoad, this));
}
if (params.initiallyShowHeader)
{
BX.ready(BX.delegate(this.showHeader, this));
}
if (params.deferredLoad)
{
BX.ready(BX.delegate(this.deferredLoad, this));
}
if (params.lazyLoad)
{
this.showMoreButton = document.querySelector('[data-use="show-more-' + this.navParams.NavNum + '"]');
this.showMoreButtonMessage = this.showMoreButton.innerHTML;
BX.bind(this.showMoreButton, 'click', BX.proxy(this.showMore, this));
}
if (params.loadOnScroll)
{
BX.bind(window, 'scroll', BX.proxy(this.loadOnScroll, this));
}
};
window.JCCatalogSectionComponent.prototype =
{
checkButton: function()
{
if (this.showMoreButton)
{
if (this.navParams.NavPageNomer == this.navParams.NavPageCount)
{
BX.remove(this.showMoreButton);
}
else
{
this.container.appendChild(this.showMoreButton);
}
}
},
enableButton: function()
{
if (this.showMoreButton)
{
BX.removeClass(this.showMoreButton, 'disabled');
this.showMoreButton.innerHTML = this.showMoreButtonMessage;
}
},
disableButton: function()
{
if (this.showMoreButton)
{
BX.addClass(this.showMoreButton, 'disabled');
this.showMoreButton.innerHTML = BX.message('BTN_MESSAGE_LAZY_LOAD_WAITER');
}
},
loadOnScroll: function()
{
var scrollTop = BX.GetWindowScrollPos().scrollTop,
containerBottom = BX.pos(this.container).bottom;
if (scrollTop + window.innerHeight > containerBottom)
{
this.showMore();
}
},
showMore: function()
{
if (this.navParams.NavPageNomer < this.navParams.NavPageCount)
{
var data = {};
data['action'] = 'showMore';
data['PAGEN_' + this.navParams.NavNum] = this.navParams.NavPageNomer + 1;
if (!this.formPosting)
{
this.formPosting = true;
this.disableButton();
this.sendRequest(data);
}
}
},
bigDataLoad: function()
{
var url = 'https://analytics.bitrix.info/crecoms/v1_0/recoms.php',
data = BX.ajax.prepareData(this.bigData.params);
if (data)
{
url += (url.indexOf('?') !== -1 ? '&' : '?') + data;
}
var onReady = BX.delegate(function(result){
this.sendRequest({
action: 'deferredLoad',
bigData: 'Y',
items: result && result.items || [],
rid: result && result.id,
count: this.bigData.count,
rowsRange: this.bigData.rowsRange,
shownIds: this.bigData.shownIds
});
}, this);
BX.ajax({
method: 'GET',
dataType: 'json',
url: url,
timeout: 3,
onsuccess: onReady,
onfailure: onReady
});
},
deferredLoad: function()
{
this.sendRequest({action: 'deferredLoad'});
},
sendRequest: function(data)
{
var defaultData = {
siteId: this.siteId,
template: this.template,
parameters: this.parameters
};
if (this.ajaxId)
{
defaultData.AJAX_ID = this.ajaxId;
}
BX.ajax({
url: this.componentPath + '/ajax.php' + (document.location.href.indexOf('clear_cache=Y') !== -1 ? '?clear_cache=Y' : ''),
method: 'POST',
dataType: 'json',
timeout: 60,
data: BX.merge(defaultData, data),
onsuccess: BX.delegate(function(result){
if (!result || !result.JS)
return;
BX.ajax.processScripts(
BX.processHTML(result.JS).SCRIPT,
false,
BX.delegate(function(){this.showAction(result, data);}, this)
);
}, this)
});
},
showAction: function(result, data)
{
if (!data)
return;
switch (data.action)
{
case 'showMore':
this.processShowMoreAction(result);
break;
case 'deferredLoad':
this.processDeferredLoadAction(result, data.bigData === 'Y');
break;
}
},
processShowMoreAction: function(result)
{
this.formPosting = false;
this.enableButton();
if (result)
{
this.navParams.NavPageNomer++;
this.processItems(result.items);
this.processPagination(result.pagination);
this.processEpilogue(result.epilogue);
this.checkButton();
}
},
processDeferredLoadAction: function(result, bigData)
{
if (!result)
return;
var position = bigData ? this.bigData.rows : {};
this.processItems(result.items, BX.util.array_keys(position));
},
processItems: function(itemsHtml, position)
{
if (!itemsHtml)
return;
var processed = BX.processHTML(itemsHtml, false),
temporaryNode = BX.create('DIV');
var items, k, origRows;
temporaryNode.innerHTML = processed.HTML;
items = temporaryNode.querySelectorAll('[data-entity="items-row"]');
if (items.length)
{
this.showHeader(true);
for (k in items)
{
if (items.hasOwnProperty(k))
{
origRows = position ? this.container.querySelectorAll('[data-entity="items-row"]') : false;
items[k].style.opacity = 0;
if (origRows && BX.type.isDomNode(origRows[position[k]]))
{
origRows[position[k]].parentNode.insertBefore(items[k], origRows[position[k]]);
}
else
{
this.container.appendChild(items[k]);
}
}
}
new BX.easing({
duration: 2000,
start: {opacity: 0},
finish: {opacity: 100},
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad),
step: function(state){
for (var k in items)
{
if (items.hasOwnProperty(k))
{
items[k].style.opacity = state.opacity / 100;
}
}
},
complete: function(){
for (var k in items)
{
if (items.hasOwnProperty(k))
{
items[k].removeAttribute('style');
}
}
}
}).animate();
}
BX.ajax.processScripts(processed.SCRIPT);
},
processPagination: function(paginationHtml)
{
if (!paginationHtml)
return;
var pagination = document.querySelectorAll('[data-pagination-num="' + this.navParams.NavNum + '"]');
for (var k in pagination)
{
if (pagination.hasOwnProperty(k))
{
pagination[k].innerHTML = paginationHtml;
}
}
},
processEpilogue: function(epilogueHtml)
{
if (!epilogueHtml)
return;
var processed = BX.processHTML(epilogueHtml, false);
BX.ajax.processScripts(processed.SCRIPT);
},
showHeader: function(animate)
{
var parentNode = BX.findParent(this.container, {attr: {'data-entity': 'parent-container'}}),
header;
if (parentNode && BX.type.isDomNode(parentNode))
{
header = parentNode.querySelector('[data-entity="header"]');
if (header && header.getAttribute('data-showed') != 'true')
{
header.style.display = '';
if (animate)
{
new BX.easing({
duration: 2000,
start: {opacity: 0},
finish: {opacity: 100},
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad),
step: function(state){
header.style.opacity = state.opacity / 100;
},
complete: function(){
header.removeAttribute('style');
header.setAttribute('data-showed', 'true');
}
}).animate();
}
else
{
header.style.opacity = 100;
}
}
}
}
};
})();

@ -0,0 +1,804 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
use Bitrix\Main\Localization\Loc;
use Bitrix\Catalog\ProductTable;
/**
* @global CMain $APPLICATION
* @var array $arParams
* @var array $arResult
* @var CatalogSectionComponent $component
* @var CBitrixComponentTemplate $this
* @var string $templateName
* @var string $componentPath
*
* _________________________________________________________________________
* | Attention!
* | The following comments are for system use
* | and are required for the component to work correctly in ajax mode:
* | <!-- items-container -->
* | <!-- pagination-container -->
* | <!-- component-end -->
*/
$this->setFrameMode(true);
if (!empty($arResult['NAV_RESULT']))
{
$navParams = array(
'NavPageCount' => $arResult['NAV_RESULT']->NavPageCount,
'NavPageNomer' => $arResult['NAV_RESULT']->NavPageNomer,
'NavNum' => $arResult['NAV_RESULT']->NavNum
);
}
else
{
$navParams = array(
'NavPageCount' => 1,
'NavPageNomer' => 1,
'NavNum' => $this->randString()
);
}
$showTopPager = false;
$showBottomPager = false;
$showLazyLoad = false;
if ($arParams['PAGE_ELEMENT_COUNT'] > 0 && $navParams['NavPageCount'] > 1)
{
$showTopPager = $arParams['DISPLAY_TOP_PAGER'];
$showBottomPager = $arParams['DISPLAY_BOTTOM_PAGER'];
$showLazyLoad = $arParams['LAZY_LOAD'] === 'Y' && $navParams['NavPageNomer'] != $navParams['NavPageCount'];
}
$templateLibrary = array('popup', 'ajax', 'fx');
$currencyList = '';
if (!empty($arResult['CURRENCIES']))
{
$templateLibrary[] = 'currency';
$currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true);
}
$templateData = array(
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'TEMPLATE_LIBRARY' => $templateLibrary,
'CURRENCIES' => $currencyList,
'USE_PAGINATION_CONTAINER' => $showTopPager || $showBottomPager,
);
unset($currencyList, $templateLibrary);
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT');
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE');
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM'));
$positionClassMap = array(
'left' => 'product-item-label-left',
'center' => 'product-item-label-center',
'right' => 'product-item-label-right',
'bottom' => 'product-item-label-bottom',
'middle' => 'product-item-label-middle',
'top' => 'product-item-label-top'
);
$discountPositionClass = '';
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION']))
{
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos)
{
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$labelPositionClass = '';
if (!empty($arParams['LABEL_PROP_POSITION']))
{
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos)
{
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$arParams['~MESS_BTN_BUY'] = ($arParams['~MESS_BTN_BUY'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_BUY');
$arParams['~MESS_BTN_DETAIL'] = ($arParams['~MESS_BTN_DETAIL'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_DETAIL');
$arParams['~MESS_BTN_COMPARE'] = ($arParams['~MESS_BTN_COMPARE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_COMPARE');
$arParams['~MESS_BTN_SUBSCRIBE'] = ($arParams['~MESS_BTN_SUBSCRIBE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_SUBSCRIBE');
$arParams['~MESS_BTN_ADD_TO_BASKET'] = ($arParams['~MESS_BTN_ADD_TO_BASKET'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET');
$arParams['~MESS_NOT_AVAILABLE'] = ($arParams['~MESS_NOT_AVAILABLE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE');
$arParams['~MESS_NOT_AVAILABLE_SERVICE'] = ($arParams['~MESS_NOT_AVAILABLE_SERVICE'] ?? '') ?: Loc::getMessage('CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE');
$arParams['~MESS_SHOW_MAX_QUANTITY'] = ($arParams['~MESS_SHOW_MAX_QUANTITY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_SHOW_MAX_QUANTITY');
$arParams['~MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['~MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY');
$arParams['MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY');
$arParams['~MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['~MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW');
$arParams['MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW');
$arParams['MESS_BTN_LAZY_LOAD'] = $arParams['MESS_BTN_LAZY_LOAD'] ?: Loc::getMessage('CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD');
$obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum']));
$containerName = 'container-'.$navParams['NavNum'];
if ($showTopPager)
{
?>
<div data-pagination-num="<?=$navParams['NavNum']?>">
<!-- pagination-container -->
<?=$arResult['NAV_STRING']?>
<!-- pagination-container -->
</div>
<?
}
//if (!isset($arParams['HIDE_SECTION_DESCRIPTION']) || $arParams['HIDE_SECTION_DESCRIPTION'] !== 'Y')
//{
// ?>
<!-- <div class="bx-section-desc bx---><?php //=$arParams['TEMPLATE_THEME']?><!--">-->
<!-- <p class="bx-section-desc-post">--><?php //=$arResult['DESCRIPTION'] ?? ''?><!--</p>-->
<!-- </div>-->
<!-- --><?//
//}
//?>
<div class="catalog-page__sale sale js-display-list" data-entity="<?=$containerName?>">
<?
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS']))
{
$generalParams = [
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'],
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'],
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'],
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'],
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'],
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'],
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'],
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'],
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'],
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'],
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'],
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'],
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'],
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'],
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'],
'COMPARE_PATH' => $arParams['COMPARE_PATH'],
'COMPARE_NAME' => $arParams['COMPARE_NAME'],
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'],
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'],
'LABEL_POSITION_CLASS' => $labelPositionClass,
'DISCOUNT_POSITION_CLASS' => $discountPositionClass,
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'],
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'],
'~BASKET_URL' => $arParams['~BASKET_URL'],
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'],
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'],
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'],
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'],
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'],
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'],
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'],
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'],
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'],
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'],
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'],
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'],
];
$areaIds = [];
$itemParameters = [];
foreach ($arResult['ITEMS'] as $item)
{
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction());
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId);
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit);
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams);
$itemParameters[$item['ID']] = [
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']],
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE
? $arParams['~MESS_NOT_AVAILABLE_SERVICE']
: $arParams['~MESS_NOT_AVAILABLE']
),
];
}
?>
<?
foreach ($arResult['ITEM_ROWS'] as $rowData)
{
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']);
?>
<div class="sale__products <?=$rowData['CLASS']?>" data-entity="items-row">
<?
switch ($rowData['VARIANT'])
{
case 0:
?>
<p>case 0</p>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<div class="col-xs-12 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = reset($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
</div>
</div>
</div>
</div>
<?
break;
case 1:
?>
<p>case 1</p>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
</div>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 2:
?>
<?
foreach ($rowItems as $item)
{
?>
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?
}
?>
<?
break;
case 3:
?>
<?
foreach ($rowItems as $item)
{
?>
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?
}
?>
<?
break;
case 4:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = array_shift($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 5:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = end($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<?
break;
case 6:
?>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-6 col-sm-4 col-md-2">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 7:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = array_shift($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6 col-md-4">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 8:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6 col-md-4">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = end($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<?
break;
case 9:
?>
<div class="col-xs-12">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-12 product-item-line-card">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
}
?>
</div>
<?
}
unset($rowItems);
unset($itemParameters);
unset($areaIds);
unset($generalParams);
?>
<!-- items-container -->
<?
}
?>
<!-- </div>-->
</div>
<div class="pagination">
<?
if ($showLazyLoad)
{
?>
<button class="more__btn button button--outline"
data-use="show-more-<?=$navParams['NavNum']?>">
<?=$arParams['MESS_BTN_LAZY_LOAD']?>
</button>
<?
}
if ($showBottomPager)
{
?>
<div class="pagination-list" data-pagination-num="<?=$navParams['NavNum']?>">
<!-- pagination-container -->
<?=$arResult['NAV_STRING']?>
<!-- pagination-container -->
</div>
</div>
<?
}
$signer = new \Bitrix\Main\Security\Sign\Signer;
$signedTemplate = $signer->sign($templateName, 'catalog.section');
$signedParams = $signer->sign(base64_encode(serialize($arResult['ORIGINAL_PARAMETERS'])), 'catalog.section');
?>
<script>
BX.message({
BTN_MESSAGE_BASKET_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT')?>',
BASKET_URL: '<?=$arParams['BASKET_URL']?>',
ADD_TO_BASKET_OK: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
TITLE_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_ERROR')?>',
TITLE_BASKET_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_BASKET_PROPS')?>',
TITLE_SUCCESSFUL: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
BASKET_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR')?>',
BTN_MESSAGE_SEND_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS')?>',
BTN_MESSAGE_CLOSE: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE')?>',
BTN_MESSAGE_CLOSE_POPUP: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP')?>',
COMPARE_MESSAGE_OK: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_OK')?>',
COMPARE_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR')?>',
COMPARE_TITLE: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_TITLE')?>',
PRICE_TOTAL_PREFIX: '<?=GetMessageJS('CT_BCS_CATALOG_PRICE_TOTAL_PREFIX')?>',
RELATIVE_QUANTITY_MANY: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_MANY'])?>',
RELATIVE_QUANTITY_FEW: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_FEW'])?>',
BTN_MESSAGE_COMPARE_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT')?>',
BTN_MESSAGE_LAZY_LOAD: '<?=CUtil::JSEscape($arParams['MESS_BTN_LAZY_LOAD'])?>',
BTN_MESSAGE_LAZY_LOAD_WAITER: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER')?>',
SITE_ID: '<?=CUtil::JSEscape($component->getSiteId())?>'
});
var <?=$obName?> = new JCCatalogSectionComponent({
siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
componentPath: '<?=CUtil::JSEscape($componentPath)?>',
navParams: <?=CUtil::PhpToJSObject($navParams)?>,
deferredLoad: false,
initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
lazyLoad: !!'<?=$showLazyLoad?>',
loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
template: '<?=CUtil::JSEscape($signedTemplate)?>',
ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'] ?? '')?>',
parameters: '<?=CUtil::JSEscape($signedParams)?>',
container: '<?=$containerName?>'
});
</script>
<!-- component-end -->

@ -0,0 +1,640 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var string $componentPath
* @var string $componentName
* @var array $arCurrentValues
* @var array $arTemplateParameters
*/
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
use Bitrix\Main\Web\Json;
use Bitrix\Iblock;
if (!Loader::includeModule('iblock'))
return;
$boolCatalog = Loader::includeModule('catalog');
CBitrixComponent::includeComponentClass($componentName);
$usePropertyFeatures = Iblock\Model\PropertyFeature::isEnabledFeatures();
$iblockExists = (!empty($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID'] > 0);
$defaultValue = array('-' => GetMessage('CP_BCS_TPL_PROP_EMPTY'));
$arSKU = false;
$boolSKU = false;
$filterDataValues = array();
if ($boolCatalog && (isset($arCurrentValues['IBLOCK_ID']) && 0 < intval($arCurrentValues['IBLOCK_ID'])))
{
$arSKU = CCatalogSku::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']);
$boolSKU = !empty($arSKU) && is_array($arSKU);
$filterDataValues['iblockId'] = (int)$arCurrentValues['IBLOCK_ID'];
if ($boolSKU)
{
$filterDataValues['offersIblockId'] = $arSKU['IBLOCK_ID'];
}
}
$arThemes = array();
if (ModuleManager::isModuleInstalled('bitrix.eshop'))
{
$arThemes['site'] = GetMessage('CP_BCS_TPL_THEME_SITE');
}
$arThemesList = array(
'blue' => GetMessage('CP_BCS_TPL_THEME_BLUE'),
'green' => GetMessage('CP_BCS_TPL_THEME_GREEN'),
'red' => GetMessage('CP_BCS_TPL_THEME_RED'),
'yellow' => GetMessage('CP_BCS_TPL_THEME_YELLOW')
);
$dir = trim(preg_replace("'[\\\\/]+'", '/', __DIR__.'/themes/'));
if (is_dir($dir))
{
foreach ($arThemesList as $themeID => $themeName)
{
if (!is_file($dir.$themeID.'/style.css'))
continue;
$arThemes[$themeID] = $themeName;
}
}
$arTemplateParameters['TEMPLATE_THEME'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_TEMPLATE_THEME'),
'TYPE' => 'LIST',
'VALUES' => $arThemes,
'DEFAULT' => 'blue',
'ADDITIONAL_VALUES' => 'Y'
);
$lineElementCount = (int)($arCurrentValues['LINE_ELEMENT_COUNT'] ?? 3);
$pageElementCount = (int)($arCurrentValues['PAGE_ELEMENT_COUNT'] ?? 18);
$arTemplateParameters['PRODUCT_ROW_VARIANTS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ROW_VARIANTS'),
'TYPE' => 'CUSTOM',
'BIG_DATA' => \Bitrix\Main\Analytics\Catalog::isOn() ? 'Y' : 'N',
'COUNT_PARAM_NAME' => 'PAGE_ELEMENT_COUNT',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_add'),
'JS_EVENT' => 'initDraggableAddControl',
'JS_MESSAGES' => Json::encode(array(
'variant' => GetMessage('CP_BCS_TPL_SETTINGS_VARIANT'),
'delete' => GetMessage('CP_BCS_TPL_SETTINGS_DELETE'),
'quantity' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY'),
'quantityBigData' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA')
)),
'JS_DATA' => Json::encode(CatalogSectionComponent::getTemplateVariantsMap()),
'DEFAULT' => Json::encode(CatalogSectionComponent::predictRowVariants($lineElementCount, $pageElementCount))
);
$arTemplateParameters['ENLARGE_PRODUCT'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'Y',
'DEFAULT' => 'N',
'VALUES' => array(
'STRICT' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_STRICT'),
'PROP' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_PROP')
)
);
$arTemplateParameters['PRODUCT_BLOCKS_ORDER'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCKS_ORDER'),
'TYPE' => 'CUSTOM',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_order'),
'JS_EVENT' => 'initDraggableOrderControl',
'JS_DATA' => Json::encode(array(
'price' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PRICE'),
'quantityLimit' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT'),
'quantity' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY'),
'buttons' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS'),
'props' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PROPS'),
'sku' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_SKU')
)),
'DEFAULT' => 'price,props,sku,quantityLimit,quantity,buttons'
);
$arTemplateParameters['SHOW_SLIDER'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_SLIDER'),
'TYPE' => 'CHECKBOX',
'MULTIPLE' => 'N',
'REFRESH' => 'Y',
'DEFAULT' => 'Y'
);
if (isset($arCurrentValues['SHOW_SLIDER']) && $arCurrentValues['SHOW_SLIDER'] === 'Y')
{
$arTemplateParameters['SLIDER_INTERVAL'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_INTERVAL'),
'TYPE' => 'TEXT',
'MULTIPLE' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '3000'
);
$arTemplateParameters['SLIDER_PROGRESS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_PROGRESS'),
'TYPE' => 'CHECKBOX',
'MULTIPLE' => 'N',
'REFRESH' => 'N',
'DEFAULT' => 'N'
);
}
$arAllPropList = array();
$arFilePropList = $defaultValue;
$arListPropList = array();
if ($iblockExists)
{
$rsProps = CIBlockProperty::GetList(
array('SORT' => 'ASC', 'ID' => 'ASC'),
array('IBLOCK_ID' => $arCurrentValues['IBLOCK_ID'], 'ACTIVE' => 'Y')
);
while ($arProp = $rsProps->Fetch())
{
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME'];
if ($arProp['CODE'] == '')
{
$arProp['CODE'] = $arProp['ID'];
}
$arAllPropList[$arProp['CODE']] = $strPropName;
if ($arProp['PROPERTY_TYPE'] === 'F')
{
$arFilePropList[$arProp['CODE']] = $strPropName;
}
if ($arProp['PROPERTY_TYPE'] === 'L')
{
$arListPropList[$arProp['CODE']] = $strPropName;
}
}
$showedProperties = [];
if ($usePropertyFeatures)
{
if ($iblockExists)
{
$showedProperties = Iblock\Model\PropertyFeature::getListPageShowPropertyCodes(
$arCurrentValues['IBLOCK_ID'],
['CODE' => 'Y']
);
if ($showedProperties === null)
$showedProperties = [];
}
}
else
{
if (!empty($arCurrentValues['PROPERTY_CODE']) && is_array($arCurrentValues['PROPERTY_CODE']))
{
$showedProperties = $arCurrentValues['PROPERTY_CODE'];
}
}
if (!empty($showedProperties))
{
$selected = array();
foreach ($showedProperties as $code)
{
if (isset($arAllPropList[$code]))
{
$selected[$code] = $arAllPropList[$code];
}
}
$arTemplateParameters['PROPERTY_CODE_MOBILE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PROPERTY_CODE_MOBILE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'VALUES' => $selected
);
}
unset($showedProperties);
if (isset($arCurrentValues['ENLARGE_PRODUCT']) && $arCurrentValues['ENLARGE_PRODUCT'] === 'PROP')
{
$arTemplateParameters['ENLARGE_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $defaultValue + $arListPropList
);
}
if ($boolSKU)
{
$arTemplateParameters['PRODUCT_DISPLAY_MODE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_DISPLAY_MODE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'Y',
'DEFAULT' => 'N',
'VALUES' => array(
'N' => GetMessage('CP_BCS_TPL_DML_SIMPLE'),
'Y' => GetMessage('CP_BCS_TPL_DML_EXT')
)
);
}
$arTemplateParameters['ADD_PICT_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_ADD_PICT_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arFilePropList
);
$arTemplateParameters['LABEL_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'Y',
'VALUES' => $arListPropList
);
if (isset($arCurrentValues['LABEL_PROP']) && !empty($arCurrentValues['LABEL_PROP']))
{
if (!is_array($arCurrentValues['LABEL_PROP']))
{
$arCurrentValues['LABEL_PROP'] = array($arCurrentValues['LABEL_PROP']);
}
$selected = array();
foreach ($arCurrentValues['LABEL_PROP'] as $name)
{
if (isset($arListPropList[$name]))
{
$selected[$name] = $arListPropList[$name];
}
}
$arTemplateParameters['LABEL_PROP_MOBILE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_MOBILE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'VALUES' => $selected
);
unset($selected);
$arTemplateParameters['LABEL_PROP_POSITION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_POSITION'),
'TYPE' => 'CUSTOM',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'),
'JS_EVENT' => 'initPositionControl',
'JS_DATA' => Json::encode(
array(
'positions' => array(
'top-left', 'top-center', 'top-right',
'middle-left', 'middle-center', 'middle-right',
'bottom-left', 'bottom-center', 'bottom-right'
),
'className' => ''
)
),
'DEFAULT' => 'top-left'
);
}
if ($boolSKU && isset($arCurrentValues['PRODUCT_DISPLAY_MODE']) && 'Y' == $arCurrentValues['PRODUCT_DISPLAY_MODE'])
{
$arAllOfferPropList = array();
$arFileOfferPropList = $arTreeOfferPropList = $defaultValue;
$rsProps = CIBlockProperty::GetList(
array('SORT' => 'ASC', 'ID' => 'ASC'),
array('IBLOCK_ID' => $arSKU['IBLOCK_ID'], 'ACTIVE' => 'Y')
);
while ($arProp = $rsProps->Fetch())
{
if ($arProp['ID'] == $arSKU['SKU_PROPERTY_ID'])
continue;
$arProp['USER_TYPE'] = (string)$arProp['USER_TYPE'];
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME'];
if ('' == $arProp['CODE'])
$arProp['CODE'] = $arProp['ID'];
$arAllOfferPropList[$arProp['CODE']] = $strPropName;
if ('F' == $arProp['PROPERTY_TYPE'])
$arFileOfferPropList[$arProp['CODE']] = $strPropName;
if ('N' != $arProp['MULTIPLE'])
continue;
if (
'L' == $arProp['PROPERTY_TYPE']
|| 'E' == $arProp['PROPERTY_TYPE']
|| ('S' == $arProp['PROPERTY_TYPE'] && 'directory' == $arProp['USER_TYPE'] && CIBlockPriceTools::checkPropDirectory($arProp))
)
$arTreeOfferPropList[$arProp['CODE']] = $strPropName;
}
$arTemplateParameters['OFFER_ADD_PICT_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_OFFER_ADD_PICT_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arFileOfferPropList
);
if (!$usePropertyFeatures)
{
$arTemplateParameters['OFFER_TREE_PROPS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_OFFER_TREE_PROPS'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arTreeOfferPropList
);
}
}
}
if ($boolCatalog)
{
$arTemplateParameters['PRODUCT_SUBSCRIPTION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_SUBSCRIPTION'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y'
);
$arTemplateParameters['SHOW_DISCOUNT_PERCENT'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_DISCOUNT_PERCENT'),
'TYPE' => 'CHECKBOX',
'REFRESH' => 'Y',
'DEFAULT' => 'N'
);
if (isset($arCurrentValues['SHOW_DISCOUNT_PERCENT']) && $arCurrentValues['SHOW_DISCOUNT_PERCENT'] === 'Y')
{
$arTemplateParameters['DISCOUNT_PERCENT_POSITION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_DISCOUNT_PERCENT_POSITION'),
'TYPE' => 'CUSTOM',
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'),
'JS_EVENT' => 'initPositionControl',
'JS_DATA' => Json::encode(
array(
'positions' => array(
'top-left', 'top-center', 'top-right',
'middle-left', 'middle-center', 'middle-right',
'bottom-left', 'bottom-center', 'bottom-right'
),
'className' => 'bx-pos-parameter-block-circle'
)
),
'DEFAULT' => 'bottom-right'
);
}
$arTemplateParameters['SHOW_OLD_PRICE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_OLD_PRICE'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N'
);
$arTemplateParameters['SHOW_MAX_QUANTITY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY'),
'TYPE' => 'LIST',
'REFRESH' => 'Y',
'MULTIPLE' => 'N',
'VALUES' => array(
'N' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_N'),
'Y' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_Y'),
'M' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_M')
),
'DEFAULT' => array('N'),
);
if (isset($arCurrentValues['SHOW_MAX_QUANTITY']))
{
if ($arCurrentValues['SHOW_MAX_QUANTITY'] !== 'N')
{
$arTemplateParameters['MESS_SHOW_MAX_QUANTITY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT')
);
}
if ($arCurrentValues['SHOW_MAX_QUANTITY'] === 'M')
{
$arTemplateParameters['RELATIVE_QUANTITY_FACTOR'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR'),
'TYPE' => 'STRING',
'DEFAULT' => '5'
);
$arTemplateParameters['MESS_RELATIVE_QUANTITY_MANY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT')
);
$arTemplateParameters['MESS_RELATIVE_QUANTITY_FEW'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT')
);
}
}
$arTemplateParameters['ADD_TO_BASKET_ACTION'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BCS_TPL_ADD_TO_BASKET_ACTION'),
'TYPE' => 'LIST',
'VALUES' => array(
'ADD' => GetMessage('ADD_TO_BASKET_ACTION_ADD'),
'BUY' => GetMessage('ADD_TO_BASKET_ACTION_BUY')
),
'DEFAULT' => 'ADD',
'REFRESH' => 'N'
);
$arTemplateParameters['SHOW_CLOSE_POPUP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_CLOSE_POPUP'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
);
}
$arTemplateParameters['MESS_BTN_BUY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY_DEFAULT')
);
$arTemplateParameters['LAZY_LOAD'] = array(
'PARENT' => 'PAGER_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_LAZY_LOAD'),
'TYPE' => 'CHECKBOX',
'REFRESH' => 'Y',
'DEFAULT' => 'N'
);
$arTemplateParameters['MESS_BTN_LAZY_LOAD'] = array(
'PARENT' => 'PAGER_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD'),
'TYPE' => 'TEXT',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT'),
'HIDDEN' => (isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y' ? 'N' : 'Y')
);
$arTemplateParameters['LOAD_ON_SCROLL'] = array(
'PARENT' => 'PAGER_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_LOAD_ON_SCROLL'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'HIDDEN' => (
(isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y')
|| (isset($arCurrentValues['DISPLAY_TOP_PAGER']) && $arCurrentValues['DISPLAY_TOP_PAGER'] === 'Y')
|| (!isset($arCurrentValues['DISPLAY_BOTTOM_PAGER']) || $arCurrentValues['DISPLAY_BOTTOM_PAGER'] !== 'N')
? 'N'
: 'Y'
)
);
$arTemplateParameters['MESS_BTN_ADD_TO_BASKET'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT')
);
$arTemplateParameters['MESS_BTN_SUBSCRIBE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT')
);
if (isset($arCurrentValues['DISPLAY_COMPARE']) && $arCurrentValues['DISPLAY_COMPARE'] === 'Y')
{
$arTemplateParameters['MESS_BTN_COMPARE'] = array(
'PARENT' => 'COMPARE',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT')
);
$arTemplateParameters['COMPARE_NAME'] = array(
'PARENT' => 'COMPARE',
'NAME' => GetMessage('CP_BCS_TPL_COMPARE_NAME'),
'TYPE' => 'STRING',
'DEFAULT' => 'CATALOG_COMPARE_LIST'
);
}
$arTemplateParameters['MESS_BTN_DETAIL'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT')
);
$arTemplateParameters['MESS_NOT_AVAILABLE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT')
);
$arTemplateParameters['MESS_NOT_AVAILABLE_SERVICE'] = [
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE'),
'TYPE' => 'STRING',
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT'),
];
if (\Bitrix\Main\Analytics\Catalog::isOn())
{
$arTemplateParameters['RCM_TYPE'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_TYPE_TITLE'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'VALUES' => array(
// personal
'personal' => GetMessage('CP_BCS_TPL_PERSONAL'),
// general
'bestsell' => GetMessage('CP_BCS_TPL_BESTSELLERS'),
// item2item
'similar_sell' => GetMessage('CP_BCS_TPL_SOLD_WITH'),
'similar_view' => GetMessage('CP_BCS_TPL_VIEWED_WITH'),
'similar' => GetMessage('CP_BCS_TPL_SIMILAR'),
// randomly distributed
'any_similar' => GetMessage('CP_BCS_TPL_SIMILAR_ANY'),
'any_personal' => GetMessage('CP_BCS_TPL_PERSONAL_WBEST'),
'any' => GetMessage('CP_BCS_TPL_RAND')
),
'DEFAULT' => 'personal'
);
$arTemplateParameters['RCM_PROD_ID'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ID_PARAM'),
'TYPE' => 'STRING',
'DEFAULT' => '={$_REQUEST["PRODUCT_ID"]}'
);
$arTemplateParameters['SHOW_FROM_SECTION'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_SHOW_FROM_SECTION'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N'
);
}
$arTemplateParameters['USE_ENHANCED_ECOMMERCE'] = array(
'PARENT' => 'ANALYTICS_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_USE_ENHANCED_ECOMMERCE'),
'TYPE' => 'CHECKBOX',
'REFRESH' => 'Y',
'DEFAULT' => 'N'
);
if (isset($arCurrentValues['USE_ENHANCED_ECOMMERCE']) && $arCurrentValues['USE_ENHANCED_ECOMMERCE'] === 'Y')
{
$arTemplateParameters['DATA_LAYER_NAME'] = array(
'PARENT' => 'ANALYTICS_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_DATA_LAYER_NAME'),
'TYPE' => 'STRING',
'DEFAULT' => 'dataLayer'
);
$arTemplateParameters['BRAND_PROPERTY'] = array(
'PARENT' => 'ANALYTICS_SETTINGS',
'NAME' => GetMessage('CP_BCS_TPL_BRAND_PROPERTY'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'DEFAULT' => '',
'VALUES' => $defaultValue + $arAllPropList
);
}

@ -0,0 +1,63 @@
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var array $arParams
* @var array $templateData
* @var string $templateFolder
* @var CatalogSectionComponent $component
*/
global $APPLICATION;
if (isset($templateData['TEMPLATE_THEME']))
{
$APPLICATION->SetAdditionalCSS($templateFolder.'/themes/'.$templateData['TEMPLATE_THEME'].'/style.css');
$APPLICATION->SetAdditionalCSS('/bitrix/css/main/themes/'.$templateData['TEMPLATE_THEME'].'/style.css', true);
}
if (!empty($templateData['TEMPLATE_LIBRARY']))
{
$loadCurrency = false;
if (!empty($templateData['CURRENCIES']))
{
$loadCurrency = \Bitrix\Main\Loader::includeModule('currency');
}
CJSCore::Init($templateData['TEMPLATE_LIBRARY']);
if ($loadCurrency)
{
?>
<script>
BX.Currency.setCurrencies(<?=$templateData['CURRENCIES']?>);
</script>
<?
}
}
// lazy load and big data json answers
$request = \Bitrix\Main\Context::getCurrent()->getRequest();
if ($request->isAjaxRequest() && ($request->get('action') === 'showMore' || $request->get('action') === 'deferredLoad'))
{
$content = ob_get_contents();
ob_end_clean();
[, $itemsContainer] = explode('<!-- items-container -->', $content);
$paginationContainer = '';
if ($templateData['USE_PAGINATION_CONTAINER'])
{
[, $paginationContainer] = explode('<!-- pagination-container -->', $content);
}
[, $epilogue] = explode('<!-- component-end -->', $content);
if (isset($arParams['AJAX_MODE']) && $arParams['AJAX_MODE'] === 'Y')
{
$component->prepareLinks($paginationContainer);
}
$component::sendJsonAnswer(array(
'items' => $itemsContainer,
'pagination' => $paginationContainer,
'epilogue' => $epilogue,
));
}

@ -0,0 +1,107 @@
<?
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
if (!function_exists('getDoublePicturesForItem'))
{
function getDoublePicturesForItem(&$item, $propertyCode)
{
$result = array(
'PICT' => false,
'SECOND_PICT' => false
);
if (!empty($item) && is_array($item))
{
if (!empty($item['PREVIEW_PICTURE']))
{
if (!is_array($item['PREVIEW_PICTURE']))
$item['PREVIEW_PICTURE'] = CFile::GetFileArray($item['PREVIEW_PICTURE']);
if (isset($item['PREVIEW_PICTURE']['ID']))
{
$result['PICT'] = array(
'ID' => intval($item['PREVIEW_PICTURE']['ID']),
'SRC' => $item['PREVIEW_PICTURE']['SRC'],
'WIDTH' => intval($item['PREVIEW_PICTURE']['WIDTH']),
'HEIGHT' => intval($item['PREVIEW_PICTURE']['HEIGHT'])
);
}
}
if (!empty($item['DETAIL_PICTURE']))
{
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT');
if (!is_array($item['DETAIL_PICTURE']))
$item['DETAIL_PICTURE'] = CFile::GetFileArray($item['DETAIL_PICTURE']);
if (isset($item['DETAIL_PICTURE']['ID']))
{
$result[$keyPict] = array(
'ID' => intval($item['DETAIL_PICTURE']['ID']),
'SRC' => $item['DETAIL_PICTURE']['SRC'],
'WIDTH' => intval($item['DETAIL_PICTURE']['WIDTH']),
'HEIGHT' => intval($item['DETAIL_PICTURE']['HEIGHT'])
);
}
}
if (empty($result['SECOND_PICT']))
{
if (
'' != $propertyCode &&
isset($item['PROPERTIES'][$propertyCode]) &&
'F' == $item['PROPERTIES'][$propertyCode]['PROPERTY_TYPE']
)
{
if (
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) &&
!empty($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE'])
)
{
$fileValues = (
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']['ID']) ?
array(0 => $item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) :
$item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']
);
foreach ($fileValues as &$oneFileValue)
{
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT');
$result[$keyPict] = array(
'ID' => intval($oneFileValue['ID']),
'SRC' => $oneFileValue['SRC'],
'WIDTH' => intval($oneFileValue['WIDTH']),
'HEIGHT' => intval($oneFileValue['HEIGHT'])
);
if ('SECOND_PICT' == $keyPict)
break;
}
if (isset($oneFileValue))
unset($oneFileValue);
}
else
{
$propValues = $item['PROPERTIES'][$propertyCode]['VALUE'];
if (!is_array($propValues))
$propValues = array($propValues);
foreach ($propValues as &$oneValue)
{
$oneFileValue = CFile::GetFileArray($oneValue);
if (isset($oneFileValue['ID']))
{
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT');
$result[$keyPict] = array(
'ID' => intval($oneFileValue['ID']),
'SRC' => $oneFileValue['SRC'],
'WIDTH' => intval($oneFileValue['WIDTH']),
'HEIGHT' => intval($oneFileValue['HEIGHT'])
);
if ('SECOND_PICT' == $keyPict)
break;
}
}
if (isset($oneValue))
unset($oneValue);
}
}
}
}
return $result;
}
}
?>

@ -0,0 +1,109 @@
<?php
$MESS["ADD_PICT_PROP_TIP"] = "Eigenschaft der zusätzlichen Bilder für Produkt";
$MESS["ADD_TO_BASKET_ACTION_ADD"] = "Zum Warenkorb hinzufügen";
$MESS["ADD_TO_BASKET_ACTION_BUY"] = "Kaufen";
$MESS["CP_BCS_TPL_ADD_PICT_PROP"] = "Zusätzliches Bild des Hauptproduktes";
$MESS["CP_BCS_TPL_ADD_TO_BASKET_ACTION"] = "Schaltfläche \"Zum Warenkorb hinzufügen\" oder \"Kaufen\" anzeigen";
$MESS["CP_BCS_TPL_BESTSELLERS"] = "Meistverkaufte Produkte";
$MESS["CP_BCS_TPL_BRAND_PROPERTY"] = "Eigenschaft der Handelsmarken";
$MESS["CP_BCS_TPL_COMPARE_NAME"] = "Einmaliger Name für Vergleichstabelle";
$MESS["CP_BCS_TPL_DATA_LAYER_NAME"] = "Name des Datencontainers";
$MESS["CP_BCS_TPL_DISCOUNT_PERCENT_POSITION"] = "Position des Rabattprozents";
$MESS["CP_BCS_TPL_DML_EXT"] = "Erweitert";
$MESS["CP_BCS_TPL_DML_SIMPLE"] = "Einfacher Modus";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT"] = "Produkte in der Liste hervorheben";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_PROP"] = "nach Eigenschaft mit Rücksicht auf Vorlageneinstellungen (Sortierung der Element kann sich dabei ändern)";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_STRICT"] = "mithilfe der gewählten Vorlage (streng)";
$MESS["CP_BCS_TPL_ENLARGE_PROP"] = "Hervorhebung mithilfe der gewählten Eigenschaft";
$MESS["CP_BCS_TPL_LABEL_PROP"] = "Eigenschaft des Produktetiketts";
$MESS["CP_BCS_TPL_LABEL_PROP_MOBILE"] = "Eigenschaften der Produktlabels für mobile Geräte";
$MESS["CP_BCS_TPL_LABEL_PROP_POSITION"] = "Position der Produktlabels";
$MESS["CP_BCS_TPL_LAZY_LOAD"] = "Schaltfläche zum Lazy Load Modus anzeigen";
$MESS["CP_BCS_TPL_LOAD_ON_SCROLL"] = "Beim Scrollen weitere Produkte anzeigen";
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "Text der Schaltfläche \"Zum Warenkorb hinzufügen\"";
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT"] = "Zum Warenkorb hinzufügen";
$MESS["CP_BCS_TPL_MESS_BTN_BUY"] = "Text der Schaltfläche \"Kaufen\"";
$MESS["CP_BCS_TPL_MESS_BTN_BUY_DEFAULT"] = "Kaufen";
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE"] = "Text der Schaltfläche \"Vergleichen\"";
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT"] = "Vergleichen";
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL"] = "Text der Schalfläche \"Details\"";
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT"] = "Details";
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD"] = "Text der Schaltfläche \"Mehr anzeigen\"";
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT"] = "Mehr anzeigen";
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Text der Schaltfläche \"Benachrichtigen wenn wieder auf Lager\"";
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT"] = "Benachrichtigen wenn wieder auf Lager";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE"] = "Nachricht über nicht verfügbares Produkt";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT"] = "Produkt nicht verfügbar";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE"] = "Nachricht über die Nichtverfügbarkeit der Dienstleistung";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT"] = "Nicht verfügbar";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW"] = "Text für Werte, die kleiner sind als berechnet wurde";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT"] = "nur noch wenige";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY"] = "Text für Werte, die größer sind als berechnet wurde";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT"] = "am Lager";
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY"] = "Guthabentext";
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT"] = "Am Lager";
$MESS["CP_BCS_TPL_OFFER_ADD_PICT_PROP"] = "Zusätzliches Bild der Produktvariante";
$MESS["CP_BCS_TPL_OFFER_TREE_PROPS"] = "Eigenschaften für die Gruppierung der Produktvarianten";
$MESS["CP_BCS_TPL_PERSONAL"] = "Persönliche Empfehlungen";
$MESS["CP_BCS_TPL_PERSONAL_WBEST"] = "Meistverkaufte/Persänliche";
$MESS["CP_BCS_TPL_PRODUCT_BLOCKS_ORDER"] = "Reihenfolge der Ansicht der Produktblöcke";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS"] = "Aktionen";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_COMPARE"] = "Vergleichen";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PRICE"] = "Preis";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PROPS"] = "Eigenschaften";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY"] = "Menge";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT"] = "Guthaben";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_SKU"] = "Produktvariante";
$MESS["CP_BCS_TPL_PRODUCT_DISPLAY_MODE"] = "Ansichtsmodus";
$MESS["CP_BCS_TPL_PRODUCT_ID_PARAM"] = "Parameter der Produkt-ID (für Empfehlungen)";
$MESS["CP_BCS_TPL_PRODUCT_ROW_VARIANTS"] = "Option der Produktansicht";
$MESS["CP_BCS_TPL_PRODUCT_SUBSCRIPTION"] = "Benachrichtigungen über wieder-auf-Lager aktivieren";
$MESS["CP_BCS_TPL_PROPERTY_CODE_MOBILE"] = "Produkteigenschaften für mobile Geräte";
$MESS["CP_BCS_TPL_PROP_EMPTY"] = "Nicht ausgewählt";
$MESS["CP_BCS_TPL_RAND"] = "Beliebige Empfehlung";
$MESS["CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR"] = "Wert zum Ersetzen, wenn überschritten";
$MESS["CP_BCS_TPL_SETTINGS_DELETE"] = "Löschen";
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY"] = "Produkte pro Seite";
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA"] = "BigData Produkte pro Seite";
$MESS["CP_BCS_TPL_SETTINGS_VARIANT"] = "Option";
$MESS["CP_BCS_TPL_SHOW_CLOSE_POPUP"] = "Schaltfläche \"Weiter einkaufen\" in Popup-Fenstern anzeigen";
$MESS["CP_BCS_TPL_SHOW_DISCOUNT_PERCENT"] = "Rabattwert anzeigen";
$MESS["CP_BCS_TPL_SHOW_FROM_SECTION"] = "Produkte im Bereich anzeigen";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY"] = "Produktguthaben anzeigen";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_M"] = "Guthaben durch Text ersetzen";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_N"] = "nicht anzeigen";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_Y"] = "wirkliches Guthaben anzeigen";
$MESS["CP_BCS_TPL_SHOW_OLD_PRICE"] = "Vorherigen Preis anzeigen";
$MESS["CP_BCS_TPL_SHOW_SLIDER"] = "Laufleiste der Produkte anzeigen";
$MESS["CP_BCS_TPL_SIMILAR"] = "Ähnliche Produkte";
$MESS["CP_BCS_TPL_SIMILAR_ANY"] = "Auch gekauft/Auch angezeigt/Ähnliche Produkte";
$MESS["CP_BCS_TPL_SLIDER_INTERVAL"] = "Zeitabstand beim Bildwechsel, ms";
$MESS["CP_BCS_TPL_SLIDER_PROGRESS"] = "Fortschrittsbalken anzeigen";
$MESS["CP_BCS_TPL_SOLD_WITH"] = "Mit diesem Produkt kauft man auch";
$MESS["CP_BCS_TPL_TEMPLATE_THEME"] = "Farbschema";
$MESS["CP_BCS_TPL_THEME_BLUE"] = "Blau (standardmäßig)";
$MESS["CP_BCS_TPL_THEME_GREEN"] = "Grün";
$MESS["CP_BCS_TPL_THEME_RED"] = "rot";
$MESS["CP_BCS_TPL_THEME_SITE"] = "Farbschema der Website benutzen (für bitrix.eshop)";
$MESS["CP_BCS_TPL_THEME_YELLOW"] = "Gelb";
$MESS["CP_BCS_TPL_TYPE_TITLE"] = "Empfehlungstyp";
$MESS["CP_BCS_TPL_USE_ENHANCED_ECOMMERCE"] = "E-commerce Daten an Google senden";
$MESS["CP_BCS_TPL_VIEWED_WITH"] = "Mit diesem Produkt zeigt man auch an";
$MESS["LABEL_PROP_TIP"] = "Eigenschaft des Produktetiketts";
$MESS["MESS_BTN_ADD_TO_BASKET_TIP"] = "Text zum Anzeigen auf der Schaltfläche";
$MESS["MESS_BTN_BUY_TIP"] = "Text zum Anzeigen auf der Schaltfläche";
$MESS["MESS_BTN_COMPARE_TIP"] = "Text zum Anzeigen auf der Schaltfläche";
$MESS["MESS_BTN_DETAIL_TIP"] = "Text zum Anzeigen auf der Schaltfläche";
$MESS["MESS_BTN_SUBSCRIBE_TIP"] = "Text zum Anzeigen auf der Schaltfläche";
$MESS["MESS_NOT_AVAILABLE_TIP"] = "Nachricht über nicht verfügbares Produkt";
$MESS["OFFER_ADD_PICT_PROP_TIP"] = "Eigenschaft der zusätzlichen Bilder der Produktvarianten (wenn vorhanden)";
$MESS["OFFER_TREE_PROPS_TIP"] = "Liste der Eigenschaften, nach denen Produktvarianten gruppiert und angezeigt werden";
$MESS["PRODUCT_BLOCKS_ORDER_TIP"] = "Einige Blöcke können wegen der Vorlagenlogik die Reihenfolge nicht berücksichtigen. Ein Block kann nicht sichtbar sein, wenn er deaktiviert wurde oder nicht verfügbar ist.";
$MESS["PRODUCT_DISPLAY_MODE_TIP"] = "Modus der Produktansicht (mit oder ohne Produktvariante, etc.)";
$MESS["PRODUCT_SUBSCRIPTION_TIP"] = "Benachrichtigungen für Kunden darüber aktivieren, dass die Produkte, für die sich Kunden interessieren, wieder verfügbar sind";
$MESS["RELATIVE_QUANTITY_FACTOR_TIP"] = "Dieser Wert wird mit dem Ergebnis von \"Menge am Lager\" / \"Maßeinheitsverhältnis\" verglichen";
$MESS["SHOW_CLOSE_POPUP_TIP"] = "Wenn diese Option aktiviert ist, werden die Popup-Fenster die Schaltfläche \"Weiter einkaufen\" anzeigen";
$MESS["SHOW_DISCOUNT_PERCENT_TIP"] = "Wenn der Rabatt aktiv ist, zeigt den Rabatt in Prozentangabe an";
$MESS["SHOW_OLD_PRICE_TIP"] = "Wenn der Rabatt aktiv ist, zeigt den vorherigen Preis an";
$MESS["TEMPLATE_THEME_TIP"] = "Bestimmt die Farben der Website-Ansicht. Standardmäßig wird Blau verwendet.";
$MESS["USE_ENHANCED_ECOMMERCE_TIP"] = "Die Optionen von Google Analytics Enhanced Ecommerce müssen dafür konfiguriert werden";

@ -0,0 +1,27 @@
<?php
$MESS["ADD_TO_BASKET_OK"] = "Produkt wurde zum Warenkorb hinzugefügt";
$MESS["CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE"] = "Nicht verfügbar";
$MESS["CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR"] = "Unbekannter Fehler beim Hinzufügen eines Elementes zum Warenkorb";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Zum Warenkorb";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE"] = "Schließen";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP"] = "Weiter einkaufen";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT"] = "Produkte vergleichen";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER"] = "Wird geladen";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS"] = "Auswählen";
$MESS["CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD"] = "Mehr anzeigen";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_OK"] = "Produkt wurde zur Vergleichsliste hinzugefügt";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_TITLE"] = "Produktvergleich";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR"] = "Fehler beim Hinzufügen des Produktes zur Vergleichsliste";
$MESS["CT_BCS_CATALOG_PRICE_TOTAL_PREFIX"] = "Gesamt";
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW"] = "nur noch wenige";
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY"] = "Am Lager verfügbar";
$MESS["CT_BCS_CATALOG_SHOW_MAX_QUANTITY"] = "Am Lager";
$MESS["CT_BCS_CATALOG_TITLE_BASKET_PROPS"] = "Elementeigenschaften, die zum Warenkorb hinzugefügt werden sollen";
$MESS["CT_BCS_CATALOG_TITLE_ERROR"] = "Fehler";
$MESS["CT_BCS_TPL_ELEMENT_DELETE_CONFIRM"] = "Alle mit diesem Eintrag verbundenen Informationen gehen verloren. Wollen Sie Fortfahren?";
$MESS["CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "In Warenkorb";
$MESS["CT_BCS_TPL_MESS_BTN_BUY"] = "Kaufen";
$MESS["CT_BCS_TPL_MESS_BTN_COMPARE"] = "Vergleichen";
$MESS["CT_BCS_TPL_MESS_BTN_DETAIL"] = "Mehr";
$MESS["CT_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Benachrichtigen wenn wieder auf Lager";
$MESS["CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE"] = "nicht auf Lager";

@ -0,0 +1,109 @@
<?php
$MESS["ADD_PICT_PROP_TIP"] = "Additional images property for product";
$MESS["ADD_TO_BASKET_ACTION_ADD"] = "Add to Cart";
$MESS["ADD_TO_BASKET_ACTION_BUY"] = "Buy Now";
$MESS["CP_BCS_TPL_ADD_PICT_PROP"] = "Additional image of main item";
$MESS["CP_BCS_TPL_ADD_TO_BASKET_ACTION"] = "Show \"Add to Cart\" or \"Buy Now\" button";
$MESS["CP_BCS_TPL_BESTSELLERS"] = "Top Selling";
$MESS["CP_BCS_TPL_BRAND_PROPERTY"] = "Brand property";
$MESS["CP_BCS_TPL_COMPARE_NAME"] = "Unique name for comparison chart";
$MESS["CP_BCS_TPL_DATA_LAYER_NAME"] = "Data container name";
$MESS["CP_BCS_TPL_DISCOUNT_PERCENT_POSITION"] = "Discount percent position";
$MESS["CP_BCS_TPL_DML_EXT"] = "extended";
$MESS["CP_BCS_TPL_DML_SIMPLE"] = "simple mode";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT"] = "Highlight products in list";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_PROP"] = "by property with respect to template preferences (item sort mode may change)";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_STRICT"] = "using selected template (strict)";
$MESS["CP_BCS_TPL_ENLARGE_PROP"] = "Highlight using selected property";
$MESS["CP_BCS_TPL_LABEL_PROP"] = "Product tag property";
$MESS["CP_BCS_TPL_LABEL_PROP_MOBILE"] = "Product label properties for mobile devices";
$MESS["CP_BCS_TPL_LABEL_PROP_POSITION"] = "Product label position";
$MESS["CP_BCS_TPL_LAZY_LOAD"] = "Show Lazy Load button";
$MESS["CP_BCS_TPL_LOAD_ON_SCROLL"] = "Load more products on scroll";
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "\"Add to cart\" button text";
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT"] = "Add to cart";
$MESS["CP_BCS_TPL_MESS_BTN_BUY"] = "\"Buy\" button text";
$MESS["CP_BCS_TPL_MESS_BTN_BUY_DEFAULT"] = "Buy";
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE"] = "\"Compare\" button text";
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT"] = "Compare";
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL"] = "\"Details\" button text";
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT"] = "Details";
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD"] = "\"Show More\" button text";
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT"] = "Show More";
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "\"Notify when back in stock\" button text";
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT"] = "Notify when back in stock";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE"] = "Item not available message";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT"] = "Item not available";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE"] = "Service unavailable message";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT"] = "Unavailable";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW"] = "Text for values less than calculated";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT"] = "only a few left";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY"] = "Text for values greater than calculated";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT"] = "in stock";
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY"] = "Balance text";
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT"] = "Stock";
$MESS["CP_BCS_TPL_OFFER_ADD_PICT_PROP"] = "Additional image property of SKU";
$MESS["CP_BCS_TPL_OFFER_TREE_PROPS"] = "Properties for grouping of SKUs";
$MESS["CP_BCS_TPL_PERSONAL"] = "Personal recommendations";
$MESS["CP_BCS_TPL_PERSONAL_WBEST"] = "Top selling/Personal";
$MESS["CP_BCS_TPL_PRODUCT_BLOCKS_ORDER"] = "Product block display order";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS"] = "Actions";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_COMPARE"] = "Compare";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PRICE"] = "Price";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PROPS"] = "Properties";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY"] = "Quantity";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT"] = "Balance";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_SKU"] = "SKU";
$MESS["CP_BCS_TPL_PRODUCT_DISPLAY_MODE"] = "View mode";
$MESS["CP_BCS_TPL_PRODUCT_ID_PARAM"] = "Product ID parameter (for recommendations)";
$MESS["CP_BCS_TPL_PRODUCT_ROW_VARIANTS"] = "Product display option";
$MESS["CP_BCS_TPL_PRODUCT_SUBSCRIPTION"] = "Enable back-in-stock notifications";
$MESS["CP_BCS_TPL_PROPERTY_CODE_MOBILE"] = "Product properties for mobile devices";
$MESS["CP_BCS_TPL_PROP_EMPTY"] = "not selected";
$MESS["CP_BCS_TPL_RAND"] = "Any recommendation";
$MESS["CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR"] = "Replace stock value if it exceeds";
$MESS["CP_BCS_TPL_SETTINGS_DELETE"] = "Delete";
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY"] = "Products per page";
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA"] = "BigData products per page";
$MESS["CP_BCS_TPL_SETTINGS_VARIANT"] = "Option";
$MESS["CP_BCS_TPL_SHOW_CLOSE_POPUP"] = "Show \"Continue Shopping\" button in popup windows";
$MESS["CP_BCS_TPL_SHOW_DISCOUNT_PERCENT"] = "Show discount value";
$MESS["CP_BCS_TPL_SHOW_FROM_SECTION"] = "Show products in section";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY"] = "Show product balance";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_M"] = "replace balance with text";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_N"] = "don't show";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_Y"] = "show real balance";
$MESS["CP_BCS_TPL_SHOW_OLD_PRICE"] = "Show previous price";
$MESS["CP_BCS_TPL_SHOW_SLIDER"] = "Show product slider";
$MESS["CP_BCS_TPL_SIMILAR"] = "Similar products";
$MESS["CP_BCS_TPL_SIMILAR_ANY"] = "Also purchased/Also viewed/Similar products";
$MESS["CP_BCS_TPL_SLIDER_INTERVAL"] = "Slider update timeout, ms";
$MESS["CP_BCS_TPL_SLIDER_PROGRESS"] = "Show progress bar";
$MESS["CP_BCS_TPL_SOLD_WITH"] = "Also bought";
$MESS["CP_BCS_TPL_TEMPLATE_THEME"] = "Color theme";
$MESS["CP_BCS_TPL_THEME_BLUE"] = "blue (default theme)";
$MESS["CP_BCS_TPL_THEME_GREEN"] = "green";
$MESS["CP_BCS_TPL_THEME_RED"] = "red";
$MESS["CP_BCS_TPL_THEME_SITE"] = "Use site theme (for bitrix.eshop)";
$MESS["CP_BCS_TPL_THEME_YELLOW"] = "yellow";
$MESS["CP_BCS_TPL_TYPE_TITLE"] = "Recommendation type";
$MESS["CP_BCS_TPL_USE_ENHANCED_ECOMMERCE"] = "Submit e-commerce data to Google";
$MESS["CP_BCS_TPL_VIEWED_WITH"] = "Also viewed";
$MESS["LABEL_PROP_TIP"] = "Product tag property";
$MESS["MESS_BTN_ADD_TO_BASKET_TIP"] = "Text to display on button";
$MESS["MESS_BTN_BUY_TIP"] = "Text to display on button";
$MESS["MESS_BTN_COMPARE_TIP"] = "Text to display on button";
$MESS["MESS_BTN_DETAIL_TIP"] = "Text to display on button";
$MESS["MESS_BTN_SUBSCRIBE_TIP"] = "Text to display on button";
$MESS["MESS_NOT_AVAILABLE_TIP"] = "Item not available message";
$MESS["OFFER_ADD_PICT_PROP_TIP"] = "Property containing extra images for SKU (if exists)";
$MESS["OFFER_TREE_PROPS_TIP"] = "List of properties by which SKUs will be grouped and displayed";
$MESS["PRODUCT_BLOCKS_ORDER_TIP"] = "Some blocks may not respect the order due to template logic. A block may be invisible if it is disabled or unavailable.";
$MESS["PRODUCT_DISPLAY_MODE_TIP"] = "Item display mode (with or without SKU, etc.)";
$MESS["PRODUCT_SUBSCRIPTION_TIP"] = "Enables the system to notify a customer of the new arrival of a previously out-of-stock item he or she took a particular interest in";
$MESS["RELATIVE_QUANTITY_FACTOR_TIP"] = "This value is compared to the result of \"Quantity in stock\" / \"Unit ratio\"";
$MESS["SHOW_CLOSE_POPUP_TIP"] = "If checked, popup windows will show the \"Continue Shopping\" button";
$MESS["SHOW_DISCOUNT_PERCENT_TIP"] = "If the discount is active, shows the discount percent value";
$MESS["SHOW_OLD_PRICE_TIP"] = "If the discount is active, shows the previous price";
$MESS["TEMPLATE_THEME_TIP"] = "Defines colors for rendering the website text and graphics. Blue theme is the default option.";
$MESS["USE_ENHANCED_ECOMMERCE_TIP"] = "This requires Google Analytics Enhanced Ecommerce options to be configured";

@ -0,0 +1,27 @@
<?php
$MESS["ADD_TO_BASKET_OK"] = "Item added to cart";
$MESS["CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE"] = "Unavailable";
$MESS["CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR"] = "Unknown error adding an item to shopping cart";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Go to shopping cart";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE"] = "Close";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP"] = "Continue shopping";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT"] = "Compare products";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER"] = "Loading";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS"] = "Select";
$MESS["CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD"] = "Show more";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_OK"] = "Product has been added to comparison chart";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_TITLE"] = "Product comparison";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR"] = "Error adding the product to comparison chart";
$MESS["CT_BCS_CATALOG_PRICE_TOTAL_PREFIX"] = "total";
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW"] = "only a few left";
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY"] = "in stock";
$MESS["CT_BCS_CATALOG_SHOW_MAX_QUANTITY"] = "Stock";
$MESS["CT_BCS_CATALOG_TITLE_BASKET_PROPS"] = "Item properties to pass to shopping cart";
$MESS["CT_BCS_CATALOG_TITLE_ERROR"] = "Error";
$MESS["CT_BCS_TPL_ELEMENT_DELETE_CONFIRM"] = "All the information linked to this record will be deleted. Continue anyway?";
$MESS["CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "Add to cart";
$MESS["CT_BCS_TPL_MESS_BTN_BUY"] = "Buy";
$MESS["CT_BCS_TPL_MESS_BTN_COMPARE"] = "Compare";
$MESS["CT_BCS_TPL_MESS_BTN_DETAIL"] = "More";
$MESS["CT_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Notify when back in stock";
$MESS["CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE"] = "not available from stock";

@ -0,0 +1,110 @@
<?php
$MESS["CP_BCS_TPL_THEME_SITE"] = "Брать тему из настроек сайта (для решения bitrix.eshop)";
$MESS["CP_BCS_TPL_THEME_BLUE"] = "синяя (тема по умолчанию)";
$MESS["CP_BCS_TPL_THEME_GREEN"] = "зеленая";
$MESS["CP_BCS_TPL_THEME_RED"] = "красная";
$MESS["CP_BCS_TPL_THEME_YELLOW"] = "желтая";
$MESS["CP_BCS_TPL_DML_SIMPLE"] = "простой режим";
$MESS["CP_BCS_TPL_DML_EXT"] = "расширенный";
$MESS["CP_BCS_TPL_PROP_EMPTY"] = "не выбрано";
$MESS["CP_BCS_TPL_TEMPLATE_THEME"] = "Цветовая тема";
$MESS["CP_BCS_TPL_PRODUCT_BLOCKS_ORDER"] = "Порядок отображения блоков товара";
$MESS["PRODUCT_BLOCKS_ORDER_TIP"] = "Для некоторых блоков порядок может не соблюдаться в связи с особенностями шаблона. Также, блок товара может не отображаться, так как его функционал выключен или недоступен.";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PRICE"] = "Цена";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT"] = "Остаток";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY"] = "Количество";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS"] = "Действия";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PROPS"] = "Свойства";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_SKU"] = "Торговое предложение";
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_COMPARE"] = "Сравнение";
$MESS["CP_BCS_TPL_PRODUCT_DISPLAY_MODE"] = "Схема отображения";
$MESS["CP_BCS_TPL_SHOW_SLIDER"] = "Показывать слайдер для товаров";
$MESS["CP_BCS_TPL_SLIDER_INTERVAL"] = "Интервал смены слайдов, мс";
$MESS["CP_BCS_TPL_SLIDER_PROGRESS"] = "Показывать полосу прогресса";
$MESS["CP_BCS_TPL_PRODUCT_ROW_VARIANTS"] = "Вариант отображения товаров";
$MESS["CP_BCS_TPL_SETTINGS_VARIANT"] = "Вариант";
$MESS["CP_BCS_TPL_SETTINGS_DELETE"] = "Удалить";
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY"] = "Количество товаров на странице";
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA"] = "Количество товаров BigData на странице";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT"] = "Выделять товары в списке";
$MESS["CP_BCS_TPL_ENLARGE_PROP"] = "Выделять по выбранному свойству";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_STRICT"] = "по выбранному шаблону (строго)";
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_PROP"] = "по свойству, подгонять по шаблону (возможно изменение сортировки элементов)";
$MESS["CP_BCS_TPL_ADD_PICT_PROP"] = "Дополнительная картинка основного товара";
$MESS["CP_BCS_TPL_LABEL_PROP"] = "Свойства меток товара";
$MESS["CP_BCS_TPL_LABEL_PROP_MOBILE"] = "Свойства меток товара, отображаемые на мобильных устройствах";
$MESS["CP_BCS_TPL_LABEL_PROP_POSITION"] = "Расположение меток товара";
$MESS["CP_BCS_TPL_OFFER_ADD_PICT_PROP"] = "Дополнительные картинки предложения";
$MESS["CP_BCS_TPL_OFFER_TREE_PROPS"] = "Свойства для отбора предложений";
$MESS["CP_BCS_TPL_PRODUCT_SUBSCRIPTION"] = "Разрешить оповещения для отсутствующих товаров";
$MESS["CP_BCS_TPL_SHOW_DISCOUNT_PERCENT"] = "Показывать процент скидки";
$MESS["CP_BCS_TPL_DISCOUNT_PERCENT_POSITION"] = "Расположение процента скидки";
$MESS["CP_BCS_TPL_SHOW_OLD_PRICE"] = "Показывать старую цену";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY"] = "Показывать остаток товара";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_Y"] = "с отображением реального остатка";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_M"] = "с подменой остатка текстом";
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_N"] = "не показывать";
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY"] = "Текст для остатка";
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT"] = "Наличие";
$MESS["CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR"] = "Значение, от которого происходит подмена";
$MESS["RELATIVE_QUANTITY_FACTOR_TIP"] = "Сравнение происходит со значением, рассчитанным по формуле \"Доступное количество\"/\"Коэффициент единицы измерения\"";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY"] = "Текст для значения больше";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT"] = "много";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW"] = "Текст для значения меньше";
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT"] = "мало";
$MESS["CP_BCS_TPL_ADD_TO_BASKET_ACTION"] = "Показывать кнопку добавления в корзину или покупки";
$MESS["CP_BCS_TPL_SHOW_CLOSE_POPUP"] = "Показывать кнопку продолжения покупок во всплывающих окнах";
$MESS["CP_BCS_TPL_MESS_BTN_BUY"] = "Текст кнопки \"Купить\"";
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "Текст кнопки \"Добавить в корзину\"";
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL"] = "Текст кнопки \"Подробнее\"";
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Текст кнопки \"Уведомить о поступлении\"";
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE"] = "Текст кнопки \"Сравнить\"";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE"] = "Сообщение об отсутствии товара";
$MESS['CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE'] = "Сообщение о недоступности услуги";
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD"] = "Текст кнопки \"Показать ещё\"";
$MESS["CP_BCS_TPL_MESS_BTN_BUY_DEFAULT"] = "Купить";
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT"] = "В корзину";
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT"] = "Подробнее";
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT"] = "Подписаться";
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT"] = "Сравнить";
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT"] = "Нет в наличии";
$MESS['CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT'] = "Недоступно";
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT"] = "Показать ещё";
$MESS["CP_BCS_TPL_LAZY_LOAD"] = "Показать кнопку ленивой загрузки Lazy Load";
$MESS["CP_BCS_TPL_LOAD_ON_SCROLL"] = "Подгружать товары при прокрутке до конца";
$MESS["ADD_TO_BASKET_ACTION_BUY"] = "покупки";
$MESS["ADD_TO_BASKET_ACTION_ADD"] = "добавления в корзину";
$MESS["TEMPLATE_THEME_TIP"] = "Цветовая тема для отображения. По умолчанию берется синяя тема.";
$MESS["PRODUCT_DISPLAY_MODE_TIP"] = "Схема отображения товаров (с SKU или без и т.д.)";
$MESS["ADD_PICT_PROP_TIP"] = "Свойство дополнительных картинок товара";
$MESS["LABEL_PROP_TIP"] = "Свойство меток товара";
$MESS["OFFER_ADD_PICT_PROP_TIP"] = "Свойство дополнительных картинок предложений (если есть)";
$MESS["OFFER_TREE_PROPS_TIP"] = "Свойства, по значениям которых будут группироваться торговые предложения";
$MESS["PRODUCT_SUBSCRIPTION_TIP"] = "Разрешить оповещать клиента, что интересующий его товар стал доступен к покупке";
$MESS["SHOW_DISCOUNT_PERCENT_TIP"] = "Вывод процентного значения скидки, если скидка есть";
$MESS["SHOW_OLD_PRICE_TIP"] = "Показывать старую цену, если есть скидка";
$MESS["SHOW_CLOSE_POPUP_TIP"] = "Если опция отмечена, во всплывающих окнах будет показана кнопка \"Продолжить покупки\"";
$MESS["MESS_BTN_BUY_TIP"] = "Какой текст выводить на кнопке";
$MESS["MESS_BTN_ADD_TO_BASKET_TIP"] = "Какой текст выводить на кнопке";
$MESS["MESS_BTN_DETAIL_TIP"] = "Какой текст выводить на кнопке";
$MESS["MESS_BTN_SUBSCRIBE_TIP"] = "Какой текст выводить на кнопке";
$MESS["MESS_NOT_AVAILABLE_TIP"] = "Сообщение об отсутствии товара и невозможности его купить";
$MESS["MESS_BTN_COMPARE_TIP"] = "Какой текст выводить на кнопке";
$MESS["CP_BCS_TPL_BESTSELLERS"] = "Самые продаваемые";
$MESS["CP_BCS_TPL_PERSONAL"] = "Персональные рекомендации";
$MESS["CP_BCS_TPL_SOLD_WITH"] = "Продаваемые с этим товаром";
$MESS["CP_BCS_TPL_VIEWED_WITH"] = "Просматриваемые с этим товаром";
$MESS["CP_BCS_TPL_SIMILAR"] = "Похожие товары";
$MESS["CP_BCS_TPL_SIMILAR_ANY"] = "Продаваемые/Просматриваемые/Похожие товары";
$MESS["CP_BCS_TPL_PERSONAL_WBEST"] = "Самые продаваемые/Персональные";
$MESS["CP_BCS_TPL_RAND"] = "Любая рекомендация";
$MESS["CP_BCS_TPL_TYPE_TITLE"] = "Тип рекомендации";
$MESS["CP_BCS_TPL_PRODUCT_ID_PARAM"] = "Параметр ID продукта (для товарных рекомендаций)";
$MESS["CP_BCS_TPL_SHOW_FROM_SECTION"] = "Показывать товары из раздела";
$MESS["CP_BCS_TPL_PROPERTY_CODE_MOBILE"] = "Свойства товаров, отображаемые на мобильных устройствах";
$MESS["CP_BCS_TPL_COMPARE_NAME"] = "Уникальное имя для списка сравнения";
$MESS["CP_BCS_TPL_USE_ENHANCED_ECOMMERCE"] = "Отправлять данные электронной торговли в Google и Яндекс";
$MESS["USE_ENHANCED_ECOMMERCE_TIP"] = "Требуется дополнительная настройка в Google Analytics Enhanced
Ecommerce и/или Яндекс.Метрике";
$MESS["CP_BCS_TPL_DATA_LAYER_NAME"] = "Имя контейнера данных";
$MESS["CP_BCS_TPL_BRAND_PROPERTY"] = "Свойство брендов";

@ -0,0 +1,28 @@
<?php
$MESS["CT_BCS_TPL_ELEMENT_DELETE_CONFIRM"] = "Будет удалена вся информация, связанная с этой записью. Продолжить?";
$MESS["CT_BCS_TPL_MESS_BTN_BUY"] = "Купить";
$MESS["CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "В корзину";
$MESS["CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE"] = "Нет в наличии";
$MESS['CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE'] = "Недоступно";
$MESS["CT_BCS_TPL_MESS_BTN_DETAIL"] = "Подробнее";
$MESS["CT_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Подписаться";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Перейти в корзину";
$MESS["ADD_TO_BASKET_OK"] = "Товар добавлен в корзину";
$MESS["CT_BCS_TPL_MESS_BTN_COMPARE"] = "Сравнить";
$MESS["CT_BCS_CATALOG_TITLE_ERROR"] = "Ошибка";
$MESS["CT_BCS_CATALOG_TITLE_BASKET_PROPS"] = "Свойства товара, добавляемые в корзину";
$MESS["CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR"] = "Неизвестная ошибка при добавлении товара в корзину";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS"] = "Выбрать";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE"] = "Закрыть";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP"] = "Продолжить покупки";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Перейти в корзину";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_OK"] = "Товар добавлен в список сравнения";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_TITLE"] = "Сравнение товаров";
$MESS["CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR"] = "При добавлении товара в список сравнения произошла ошибка";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT"] = "Перейти в список сравнения";
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER"] = "Загрузка";
$MESS["CT_BCS_CATALOG_PRICE_TOTAL_PREFIX"] = "на сумму";
$MESS["CT_BCS_CATALOG_SHOW_MAX_QUANTITY"] = "Наличие";
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY"] = "много";
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW"] = "мало";
$MESS["CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD"] = "Показать ещё";

@ -0,0 +1,90 @@
@media (min-width: 1200px){
/*lg*/
/*6*/
.product-item-list-col-6 > .col-xs-12 > .row > .col-md-2:nth-child(6n+1),
.product-item-list-col-1-6 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-6-1 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1),
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1),
/*4*/
.product-item-list-col-4 > .col-xs-12 > .row > .col-md-3:nth-child(4n+1),
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
/*3*/
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1),
/*2*/
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
/*1*/
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both}
}
@media (min-width: 992px) and (max-width:1199px){
/*md*/
/*6*/
.product-item-list-col-6 > .col-xs-12 > .row > .col-md-2:nth-child(6n+1),
.product-item-list-col-1-6 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-6-1 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1),
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1),
/*4*/
.product-item-list-col-4 > .col-xs-12 > .row > .col-md-3:nth-child(4n+1),
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
/*3*/
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1),
/*2*/
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
/*1*/
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both}
}
@media (min-width: 768px) and (max-width: 991px){
/*sm*/
/*6*/
.product-item-list-col-6 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1),
.product-item-list-col-1-6 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-6-1 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
/*4*/
.product-item-list-col-4 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-1-4 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-4-1 > .col-sm-6:nth-child(2n+1),
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
/*3*/
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1),
/*2*/
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
/*1*/
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both}
}
@media (max-width: 767px){
/*xs*/
/*6*/
.product-item-list-col-6 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
/*4*/
.product-item-list-col-4 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1),
/*3*/
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1),
/*2*/
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1),
/*1*/
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both}
}
.catalog-section-header{
font-size:14px;
font-weight: bold;
text-align: left;
margin:5px 0;
padding:5px 15px;
border-bottom: 2px solid #d9dee6;
color: #000;
}
.row::before {
display: initial;
}

@ -0,0 +1 @@
@media(min-width:1200px){.product-item-list-col-6>.col-xs-12>.row>.col-md-2:nth-child(6n+1),.product-item-list-col-1-6>.col-sm-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-4>.col-xs-12>.row>.col-md-3:nth-child(4n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}@media(min-width:992px) and (max-width:1199px){.product-item-list-col-6>.col-xs-12>.row>.col-md-2:nth-child(6n+1),.product-item-list-col-1-6>.col-sm-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-4>.col-xs-12>.row>.col-md-3:nth-child(4n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}@media(min-width:768px) and (max-width:991px){.product-item-list-col-6>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-1-6>.col-sm-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1-4>.col-sm-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}@media(max-width:767px){.product-item-list-col-6>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}.catalog-section-header{font-size:14px;font-weight:bold;text-align:left;margin:5px 0;padding:5px 15px;border-bottom:2px solid #d9dee6;color:#000}.row::before{display:initial}

@ -0,0 +1,9 @@
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var CBitrixComponentTemplate $this
* @var CatalogSectionComponent $component
*/
$component = $this->getComponent();
$arParams = $component->applyTemplateModifications();

@ -0,0 +1,359 @@
(function() {
'use strict';
if (!!window.JCCatalogSectionComponent)
return;
window.JCCatalogSectionComponent = function(params) {
this.formPosting = false;
this.siteId = params.siteId || '';
this.ajaxId = params.ajaxId || '';
this.template = params.template || '';
this.componentPath = params.componentPath || '';
this.parameters = params.parameters || '';
if (params.navParams)
{
this.navParams = {
NavNum: params.navParams.NavNum || 1,
NavPageNomer: parseInt(params.navParams.NavPageNomer) || 1,
NavPageCount: parseInt(params.navParams.NavPageCount) || 1
};
}
this.bigData = params.bigData || {enabled: false};
this.container = document.querySelector('[data-entity="' + params.container + '"]');
this.showMoreButton = null;
this.showMoreButtonMessage = null;
if (this.bigData.enabled && BX.util.object_keys(this.bigData.rows).length > 0)
{
BX.cookie_prefix = this.bigData.js.cookiePrefix || '';
BX.cookie_domain = this.bigData.js.cookieDomain || '';
BX.current_server_time = this.bigData.js.serverTime;
BX.ready(BX.delegate(this.bigDataLoad, this));
}
if (params.initiallyShowHeader)
{
BX.ready(BX.delegate(this.showHeader, this));
}
if (params.deferredLoad)
{
BX.ready(BX.delegate(this.deferredLoad, this));
}
if (params.lazyLoad)
{
this.showMoreButton = document.querySelector('[data-use="show-more-' + this.navParams.NavNum + '"]');
this.showMoreButtonMessage = this.showMoreButton.innerHTML;
BX.bind(this.showMoreButton, 'click', BX.proxy(this.showMore, this));
}
if (params.loadOnScroll)
{
BX.bind(window, 'scroll', BX.proxy(this.loadOnScroll, this));
}
};
window.JCCatalogSectionComponent.prototype =
{
checkButton: function()
{
if (this.showMoreButton)
{
if (this.navParams.NavPageNomer == this.navParams.NavPageCount)
{
BX.remove(this.showMoreButton);
}
else
{
this.container.appendChild(this.showMoreButton);
}
}
},
enableButton: function()
{
if (this.showMoreButton)
{
BX.removeClass(this.showMoreButton, 'disabled');
this.showMoreButton.innerHTML = this.showMoreButtonMessage;
}
},
disableButton: function()
{
if (this.showMoreButton)
{
BX.addClass(this.showMoreButton, 'disabled');
this.showMoreButton.innerHTML = BX.message('BTN_MESSAGE_LAZY_LOAD_WAITER');
}
},
loadOnScroll: function()
{
var scrollTop = BX.GetWindowScrollPos().scrollTop,
containerBottom = BX.pos(this.container).bottom;
if (scrollTop + window.innerHeight > containerBottom)
{
this.showMore();
}
},
showMore: function()
{
if (this.navParams.NavPageNomer < this.navParams.NavPageCount)
{
var data = {};
data['action'] = 'showMore';
data['PAGEN_' + this.navParams.NavNum] = this.navParams.NavPageNomer + 1;
if (!this.formPosting)
{
this.formPosting = true;
this.disableButton();
this.sendRequest(data);
}
}
},
bigDataLoad: function()
{
var url = 'https://analytics.bitrix.info/crecoms/v1_0/recoms.php',
data = BX.ajax.prepareData(this.bigData.params);
if (data)
{
url += (url.indexOf('?') !== -1 ? '&' : '?') + data;
}
var onReady = BX.delegate(function(result){
this.sendRequest({
action: 'deferredLoad',
bigData: 'Y',
items: result && result.items || [],
rid: result && result.id,
count: this.bigData.count,
rowsRange: this.bigData.rowsRange,
shownIds: this.bigData.shownIds
});
}, this);
BX.ajax({
method: 'GET',
dataType: 'json',
url: url,
timeout: 3,
onsuccess: onReady,
onfailure: onReady
});
},
deferredLoad: function()
{
this.sendRequest({action: 'deferredLoad'});
},
sendRequest: function(data)
{
var defaultData = {
siteId: this.siteId,
template: this.template,
parameters: this.parameters
};
if (this.ajaxId)
{
defaultData.AJAX_ID = this.ajaxId;
}
BX.ajax({
url: this.componentPath + '/ajax.php' + (document.location.href.indexOf('clear_cache=Y') !== -1 ? '?clear_cache=Y' : ''),
method: 'POST',
dataType: 'json',
timeout: 60,
data: BX.merge(defaultData, data),
onsuccess: BX.delegate(function(result){
if (!result || !result.JS)
return;
BX.ajax.processScripts(
BX.processHTML(result.JS).SCRIPT,
false,
BX.delegate(function(){this.showAction(result, data);}, this)
);
}, this)
});
},
showAction: function(result, data)
{
if (!data)
return;
switch (data.action)
{
case 'showMore':
this.processShowMoreAction(result);
break;
case 'deferredLoad':
this.processDeferredLoadAction(result, data.bigData === 'Y');
break;
}
},
processShowMoreAction: function(result)
{
this.formPosting = false;
this.enableButton();
if (result)
{
this.navParams.NavPageNomer++;
this.processItems(result.items);
this.processPagination(result.pagination);
this.processEpilogue(result.epilogue);
this.checkButton();
}
},
processDeferredLoadAction: function(result, bigData)
{
if (!result)
return;
var position = bigData ? this.bigData.rows : {};
this.processItems(result.items, BX.util.array_keys(position));
},
processItems: function(itemsHtml, position)
{
if (!itemsHtml)
return;
var processed = BX.processHTML(itemsHtml, false),
temporaryNode = BX.create('DIV');
var items, k, origRows;
temporaryNode.innerHTML = processed.HTML;
items = temporaryNode.querySelectorAll('[data-entity="items-row"]');
if (items.length)
{
this.showHeader(true);
for (k in items)
{
if (items.hasOwnProperty(k))
{
origRows = position ? this.container.querySelectorAll('[data-entity="items-row"]') : false;
items[k].style.opacity = 0;
if (origRows && BX.type.isDomNode(origRows[position[k]]))
{
origRows[position[k]].parentNode.insertBefore(items[k], origRows[position[k]]);
}
else
{
this.container.appendChild(items[k]);
}
}
}
new BX.easing({
duration: 2000,
start: {opacity: 0},
finish: {opacity: 100},
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad),
step: function(state){
for (var k in items)
{
if (items.hasOwnProperty(k))
{
items[k].style.opacity = state.opacity / 100;
}
}
},
complete: function(){
for (var k in items)
{
if (items.hasOwnProperty(k))
{
items[k].removeAttribute('style');
}
}
}
}).animate();
}
BX.ajax.processScripts(processed.SCRIPT);
},
processPagination: function(paginationHtml)
{
if (!paginationHtml)
return;
var pagination = document.querySelectorAll('[data-pagination-num="' + this.navParams.NavNum + '"]');
for (var k in pagination)
{
if (pagination.hasOwnProperty(k))
{
pagination[k].innerHTML = paginationHtml;
}
}
},
processEpilogue: function(epilogueHtml)
{
if (!epilogueHtml)
return;
var processed = BX.processHTML(epilogueHtml, false);
BX.ajax.processScripts(processed.SCRIPT);
},
showHeader: function(animate)
{
var parentNode = BX.findParent(this.container, {attr: {'data-entity': 'parent-container'}}),
header;
if (parentNode && BX.type.isDomNode(parentNode))
{
header = parentNode.querySelector('[data-entity="header"]');
if (header && header.getAttribute('data-showed') != 'true')
{
header.style.display = '';
if (animate)
{
new BX.easing({
duration: 2000,
start: {opacity: 0},
finish: {opacity: 100},
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad),
step: function(state){
header.style.opacity = state.opacity / 100;
},
complete: function(){
header.removeAttribute('style');
header.setAttribute('data-showed', 'true');
}
}).animate();
}
else
{
header.style.opacity = 100;
}
}
}
}
};
})();

@ -0,0 +1,829 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
use Bitrix\Main\Localization\Loc;
use Bitrix\Catalog\ProductTable;
/**
* @global CMain $APPLICATION
* @var array $arParams
* @var array $arResult
* @var CatalogSectionComponent $component
* @var CBitrixComponentTemplate $this
* @var string $templateName
* @var string $componentPath
*
* _________________________________________________________________________
* | Attention!
* | The following comments are for system use
* | and are required for the component to work correctly in ajax mode:
* | <!-- items-container -->
* | <!-- pagination-container -->
* | <!-- component-end -->
*/
$this->setFrameMode(true);
if (!empty($arResult['NAV_RESULT']))
{
$navParams = array(
'NavPageCount' => $arResult['NAV_RESULT']->NavPageCount,
'NavPageNomer' => $arResult['NAV_RESULT']->NavPageNomer,
'NavNum' => $arResult['NAV_RESULT']->NavNum
);
}
else
{
$navParams = array(
'NavPageCount' => 1,
'NavPageNomer' => 1,
'NavNum' => $this->randString()
);
}
$showTopPager = false;
$showBottomPager = false;
$showLazyLoad = false;
if ($arParams['PAGE_ELEMENT_COUNT'] > 0 && $navParams['NavPageCount'] > 1)
{
$showTopPager = $arParams['DISPLAY_TOP_PAGER'];
$showBottomPager = $arParams['DISPLAY_BOTTOM_PAGER'];
$showLazyLoad = $arParams['LAZY_LOAD'] === 'Y' && $navParams['NavPageNomer'] != $navParams['NavPageCount'];
}
$templateLibrary = array('popup', 'ajax', 'fx');
$currencyList = '';
if (!empty($arResult['CURRENCIES']))
{
$templateLibrary[] = 'currency';
$currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true);
}
$templateData = array(
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'TEMPLATE_LIBRARY' => $templateLibrary,
'CURRENCIES' => $currencyList,
'USE_PAGINATION_CONTAINER' => $showTopPager || $showBottomPager,
);
unset($currencyList, $templateLibrary);
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT');
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE');
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM'));
$positionClassMap = array(
'left' => 'product-item-label-left',
'center' => 'product-item-label-center',
'right' => 'product-item-label-right',
'bottom' => 'product-item-label-bottom',
'middle' => 'product-item-label-middle',
'top' => 'product-item-label-top'
);
$discountPositionClass = '';
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION']))
{
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos)
{
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$labelPositionClass = '';
if (!empty($arParams['LABEL_PROP_POSITION']))
{
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos)
{
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$arParams['~MESS_BTN_BUY'] = ($arParams['~MESS_BTN_BUY'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_BUY');
$arParams['~MESS_BTN_DETAIL'] = ($arParams['~MESS_BTN_DETAIL'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_DETAIL');
$arParams['~MESS_BTN_COMPARE'] = ($arParams['~MESS_BTN_COMPARE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_COMPARE');
$arParams['~MESS_BTN_SUBSCRIBE'] = ($arParams['~MESS_BTN_SUBSCRIBE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_SUBSCRIBE');
$arParams['~MESS_BTN_ADD_TO_BASKET'] = ($arParams['~MESS_BTN_ADD_TO_BASKET'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET');
$arParams['~MESS_NOT_AVAILABLE'] = ($arParams['~MESS_NOT_AVAILABLE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE');
$arParams['~MESS_NOT_AVAILABLE_SERVICE'] = ($arParams['~MESS_NOT_AVAILABLE_SERVICE'] ?? '') ?: Loc::getMessage('CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE');
$arParams['~MESS_SHOW_MAX_QUANTITY'] = ($arParams['~MESS_SHOW_MAX_QUANTITY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_SHOW_MAX_QUANTITY');
$arParams['~MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['~MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY');
$arParams['MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY');
$arParams['~MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['~MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW');
$arParams['MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW');
$arParams['MESS_BTN_LAZY_LOAD'] = $arParams['MESS_BTN_LAZY_LOAD'] ?: Loc::getMessage('CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD');
$obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum']));
$containerName = 'container-'.$navParams['NavNum'];
if ($showTopPager)
{
?>
<div data-pagination-num="<?=$navParams['NavNum']?>">
<!-- pagination-container -->
<?=$arResult['NAV_STRING']?>
<!-- pagination-container -->
</div>
<?
}
//if (!isset($arParams['HIDE_SECTION_DESCRIPTION']) || $arParams['HIDE_SECTION_DESCRIPTION'] !== 'Y')
//{
// ?>
<!-- <div class="bx-section-desc bx---><?php //=$arParams['TEMPLATE_THEME']?><!--">-->
<!-- <p class="bx-section-desc-post">--><?php //=$arResult['DESCRIPTION'] ?? ''?><!--</p>-->
<!-- </div>-->
<!-- --><?//
//}
//?>
<div class="catalog-page__sale sale js-display-list" data-entity="<?=$containerName?>">
<?
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS']))
{
$generalParams = [
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'],
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'],
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'],
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'],
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'],
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'],
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'],
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'],
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'],
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'],
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'],
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'],
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'],
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'],
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'],
'COMPARE_PATH' => $arParams['COMPARE_PATH'],
'COMPARE_NAME' => $arParams['COMPARE_NAME'],
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'],
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'],
'LABEL_POSITION_CLASS' => $labelPositionClass,
'DISCOUNT_POSITION_CLASS' => $discountPositionClass,
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'],
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'],
'~BASKET_URL' => $arParams['~BASKET_URL'],
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'],
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'],
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'],
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'],
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'],
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'],
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'],
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'],
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'],
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'],
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'],
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'],
];
$areaIds = [];
$itemParameters = [];
foreach ($arResult['ITEMS'] as $item)
{
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction());
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId);
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit);
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams);
$itemParameters[$item['ID']] = [
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']],
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE
? $arParams['~MESS_NOT_AVAILABLE_SERVICE']
: $arParams['~MESS_NOT_AVAILABLE']
),
];
}
?>
<div class="catalog-page__top">
<div class="select">
<div class="select__name">Сортировать</div>
<select name="sorting" id="sorting">
<option value="default">По популярности</option>
<option value="price_up">По возрастанию цены</option>
<option value="price_down">По убыванию цены</option>
</select>
<svg width="12" height="13" viewbox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2803 4.46967C10.5732 4.76256 10.5732 5.23744 10.2803 5.53033L6.53033 9.28033C6.23744 9.57322 5.76256 9.57322 5.46967 9.28033L1.71967 5.53033C1.42678 5.23744 1.42678 4.76256 1.71967 4.46967C2.01256 4.17678 2.48744 4.17678 2.78033 4.46967L6 7.68934L9.21967 4.46967C9.51256 4.17678 9.98744 4.17678 10.2803 4.46967Z" fill="#939393"></path>
</svg>
</div>
<button class="catalog-page__filters-btn js-show-filter" type="button">
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.875 16.125H3.75M20.25 16.125h-2.625M15.75 18a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75ZM7.875 7.875H3.75M20.25 7.875h-8.625M9.75 9.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" stroke="#3D3D3D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
</button>
<div class="display-method">
<button class="display-method__item is-active js-tile" type="button">
<svg width="12" height="12" viewbox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect></svg>
</button>
<button class="display-method__item js-list" type="button">
<svg width="14" height="12" viewbox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="4.667" width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="9.333" width="14" height="2.667" rx="1" fill="currentColor"></rect></svg>
</button>
</div>
</div>
<?
foreach ($arResult['ITEM_ROWS'] as $rowData)
{
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']);
?>
<div class="sale__products <?=$rowData['CLASS']?>" data-entity="items-row">
<?
switch ($rowData['VARIANT'])
{
case 0:
?>
<p>case 0</p>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<div class="col-xs-12 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = reset($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
</div>
</div>
</div>
</div>
<?
break;
case 1:
?>
<p>case 1</p>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
</div>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 2:
?>
<?
foreach ($rowItems as $item)
{
?>
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?
}
?>
<?
break;
case 3:
?>
<?
foreach ($rowItems as $item)
{
?>
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?
}
?>
<?
break;
case 4:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = array_shift($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 5:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = end($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<?
break;
case 6:
?>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-6 col-sm-4 col-md-2">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 7:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = array_shift($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6 col-md-4">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 8:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6 col-md-4">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = end($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<?
break;
case 9:
?>
<div class="col-xs-12">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-12 product-item-line-card">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
}
?>
</div>
<?
}
unset($rowItems);
unset($itemParameters);
unset($areaIds);
unset($generalParams);
?>
<!-- items-container -->
<?
}
?>
<!-- </div>-->
</div>
<div class="pagination">
<?
if ($showLazyLoad)
{
?>
<button class="more__btn button button--outline"
data-use="show-more-<?=$navParams['NavNum']?>">
<?=$arParams['MESS_BTN_LAZY_LOAD']?>
</button>
<?
}
if ($showBottomPager)
{
?>
<div class="pagination-list" data-pagination-num="<?=$navParams['NavNum']?>">
<!-- pagination-container -->
<?=$arResult['NAV_STRING']?>
<!-- pagination-container -->
</div>
</div>
<?
}
$signer = new \Bitrix\Main\Security\Sign\Signer;
$signedTemplate = $signer->sign($templateName, 'catalog.section');
$signedParams = $signer->sign(base64_encode(serialize($arResult['ORIGINAL_PARAMETERS'])), 'catalog.section');
?>
<script>
BX.message({
BTN_MESSAGE_BASKET_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT')?>',
BASKET_URL: '<?=$arParams['BASKET_URL']?>',
ADD_TO_BASKET_OK: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
TITLE_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_ERROR')?>',
TITLE_BASKET_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_BASKET_PROPS')?>',
TITLE_SUCCESSFUL: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
BASKET_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR')?>',
BTN_MESSAGE_SEND_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS')?>',
BTN_MESSAGE_CLOSE: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE')?>',
BTN_MESSAGE_CLOSE_POPUP: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP')?>',
COMPARE_MESSAGE_OK: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_OK')?>',
COMPARE_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR')?>',
COMPARE_TITLE: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_TITLE')?>',
PRICE_TOTAL_PREFIX: '<?=GetMessageJS('CT_BCS_CATALOG_PRICE_TOTAL_PREFIX')?>',
RELATIVE_QUANTITY_MANY: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_MANY'])?>',
RELATIVE_QUANTITY_FEW: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_FEW'])?>',
BTN_MESSAGE_COMPARE_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT')?>',
BTN_MESSAGE_LAZY_LOAD: '<?=CUtil::JSEscape($arParams['MESS_BTN_LAZY_LOAD'])?>',
BTN_MESSAGE_LAZY_LOAD_WAITER: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER')?>',
SITE_ID: '<?=CUtil::JSEscape($component->getSiteId())?>'
});
var <?=$obName?> = new JCCatalogSectionComponent({
siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
componentPath: '<?=CUtil::JSEscape($componentPath)?>',
navParams: <?=CUtil::PhpToJSObject($navParams)?>,
deferredLoad: false,
initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
lazyLoad: !!'<?=$showLazyLoad?>',
loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
template: '<?=CUtil::JSEscape($signedTemplate)?>',
ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'] ?? '')?>',
parameters: '<?=CUtil::JSEscape($signedParams)?>',
container: '<?=$containerName?>'
});
</script>
<!-- component-end -->

@ -0,0 +1,829 @@
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
use Bitrix\Main\Localization\Loc;
use Bitrix\Catalog\ProductTable;
/**
* @global CMain $APPLICATION
* @var array $arParams
* @var array $arResult
* @var CatalogSectionComponent $component
* @var CBitrixComponentTemplate $this
* @var string $templateName
* @var string $componentPath
*
* _________________________________________________________________________
* | Attention!
* | The following comments are for system use
* | and are required for the component to work correctly in ajax mode:
* | <!-- items-container -->
* | <!-- pagination-container -->
* | <!-- component-end -->
*/
$this->setFrameMode(true);
if (!empty($arResult['NAV_RESULT']))
{
$navParams = array(
'NavPageCount' => $arResult['NAV_RESULT']->NavPageCount,
'NavPageNomer' => $arResult['NAV_RESULT']->NavPageNomer,
'NavNum' => $arResult['NAV_RESULT']->NavNum
);
}
else
{
$navParams = array(
'NavPageCount' => 1,
'NavPageNomer' => 1,
'NavNum' => $this->randString()
);
}
$showTopPager = false;
$showBottomPager = false;
$showLazyLoad = false;
if ($arParams['PAGE_ELEMENT_COUNT'] > 0 && $navParams['NavPageCount'] > 1)
{
$showTopPager = $arParams['DISPLAY_TOP_PAGER'];
$showBottomPager = $arParams['DISPLAY_BOTTOM_PAGER'];
$showLazyLoad = $arParams['LAZY_LOAD'] === 'Y' && $navParams['NavPageNomer'] != $navParams['NavPageCount'];
}
$templateLibrary = array('popup', 'ajax', 'fx');
$currencyList = '';
if (!empty($arResult['CURRENCIES']))
{
$templateLibrary[] = 'currency';
$currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true);
}
$templateData = array(
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'TEMPLATE_LIBRARY' => $templateLibrary,
'CURRENCIES' => $currencyList,
'USE_PAGINATION_CONTAINER' => $showTopPager || $showBottomPager,
);
unset($currencyList, $templateLibrary);
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT');
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE');
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM'));
$positionClassMap = array(
'left' => 'product-item-label-left',
'center' => 'product-item-label-center',
'right' => 'product-item-label-right',
'bottom' => 'product-item-label-bottom',
'middle' => 'product-item-label-middle',
'top' => 'product-item-label-top'
);
$discountPositionClass = '';
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION']))
{
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos)
{
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$labelPositionClass = '';
if (!empty($arParams['LABEL_PROP_POSITION']))
{
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos)
{
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$arParams['~MESS_BTN_BUY'] = ($arParams['~MESS_BTN_BUY'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_BUY');
$arParams['~MESS_BTN_DETAIL'] = ($arParams['~MESS_BTN_DETAIL'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_DETAIL');
$arParams['~MESS_BTN_COMPARE'] = ($arParams['~MESS_BTN_COMPARE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_COMPARE');
$arParams['~MESS_BTN_SUBSCRIBE'] = ($arParams['~MESS_BTN_SUBSCRIBE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_SUBSCRIBE');
$arParams['~MESS_BTN_ADD_TO_BASKET'] = ($arParams['~MESS_BTN_ADD_TO_BASKET'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET');
$arParams['~MESS_NOT_AVAILABLE'] = ($arParams['~MESS_NOT_AVAILABLE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE');
$arParams['~MESS_NOT_AVAILABLE_SERVICE'] = ($arParams['~MESS_NOT_AVAILABLE_SERVICE'] ?? '') ?: Loc::getMessage('CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE');
$arParams['~MESS_SHOW_MAX_QUANTITY'] = ($arParams['~MESS_SHOW_MAX_QUANTITY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_SHOW_MAX_QUANTITY');
$arParams['~MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['~MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY');
$arParams['MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY');
$arParams['~MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['~MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW');
$arParams['MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW');
$arParams['MESS_BTN_LAZY_LOAD'] = $arParams['MESS_BTN_LAZY_LOAD'] ?: Loc::getMessage('CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD');
$obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum']));
$containerName = 'container-'.$navParams['NavNum'];
if ($showTopPager)
{
?>
<div data-pagination-num="<?=$navParams['NavNum']?>">
<!-- pagination-container -->
<?=$arResult['NAV_STRING']?>
<!-- pagination-container -->
</div>
<?
}
//if (!isset($arParams['HIDE_SECTION_DESCRIPTION']) || $arParams['HIDE_SECTION_DESCRIPTION'] !== 'Y')
//{
// ?>
<!-- <div class="bx-section-desc bx---><?php //=$arParams['TEMPLATE_THEME']?><!--">-->
<!-- <p class="bx-section-desc-post">--><?php //=$arResult['DESCRIPTION'] ?? ''?><!--</p>-->
<!-- </div>-->
<!-- --><?//
//}
//?>
<div class="catalog-page__sale sale js-display-list" data-entity="<?=$containerName?>">
<?
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS']))
{
$generalParams = [
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'],
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'],
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'],
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'],
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'],
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'],
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'],
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'],
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'],
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'],
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'],
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'],
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'],
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'],
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'],
'COMPARE_PATH' => $arParams['COMPARE_PATH'],
'COMPARE_NAME' => $arParams['COMPARE_NAME'],
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'],
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'],
'LABEL_POSITION_CLASS' => $labelPositionClass,
'DISCOUNT_POSITION_CLASS' => $discountPositionClass,
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'],
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'],
'~BASKET_URL' => $arParams['~BASKET_URL'],
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'],
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'],
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'],
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'],
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'],
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'],
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'],
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'],
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'],
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'],
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'],
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'],
];
$areaIds = [];
$itemParameters = [];
foreach ($arResult['ITEMS'] as $item)
{
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction());
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId);
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit);
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams);
$itemParameters[$item['ID']] = [
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']],
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE
? $arParams['~MESS_NOT_AVAILABLE_SERVICE']
: $arParams['~MESS_NOT_AVAILABLE']
),
];
}
?>
<div class="catalog-page__top">
<div class="select">
<div class="select__name">Сортировать</div>
<select name="sorting" id="sorting">
<option value="default">По популярности</option>
<option value="price_up">По возрастанию цены</option>
<option value="price_down">По убыванию цены</option>
</select>
<svg width="12" height="13" viewbox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2803 4.46967C10.5732 4.76256 10.5732 5.23744 10.2803 5.53033L6.53033 9.28033C6.23744 9.57322 5.76256 9.57322 5.46967 9.28033L1.71967 5.53033C1.42678 5.23744 1.42678 4.76256 1.71967 4.46967C2.01256 4.17678 2.48744 4.17678 2.78033 4.46967L6 7.68934L9.21967 4.46967C9.51256 4.17678 9.98744 4.17678 10.2803 4.46967Z" fill="#939393"></path>
</svg>
</div>
<button class="catalog-page__filters-btn js-show-filter" type="button">
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.875 16.125H3.75M20.25 16.125h-2.625M15.75 18a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75ZM7.875 7.875H3.75M20.25 7.875h-8.625M9.75 9.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" stroke="#3D3D3D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
</button>
<div class="display-method">
<button class="display-method__item is-active js-tile" type="button">
<svg width="12" height="12" viewbox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect></svg>
</button>
<button class="display-method__item js-list" type="button">
<svg width="14" height="12" viewbox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="4.667" width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="9.333" width="14" height="2.667" rx="1" fill="currentColor"></rect></svg>
</button>
</div>
</div>
<?
foreach ($arResult['ITEM_ROWS'] as $rowData)
{
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']);
?>
<div class="sale__products <?=$rowData['CLASS']?>" data-entity="items-row">
<?
switch ($rowData['VARIANT'])
{
case 0:
?>
<p>case 0</p>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<div class="col-xs-12 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = reset($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
</div>
</div>
</div>
</div>
<?
break;
case 1:
?>
<p>case 1</p>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
</div>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 2:
?>
<?
foreach ($rowItems as $item)
{
?>
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?
}
?>
<?
break;
case 3:
?>
<?
foreach ($rowItems as $item)
{
?>
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<?
}
?>
<?
break;
case 4:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = array_shift($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 5:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = end($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<?
break;
case 6:
?>
<div class="col-xs-12 product-item-small-card">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-6 col-sm-4 col-md-2">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 7:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = array_shift($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6 col-md-4">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
case 8:
$rowItemsCount = count($rowItems);
?>
<div class="col-sm-6 product-item-small-card">
<div class="row">
<?
for ($i = 0; $i < $rowItemsCount - 1; $i++)
{
?>
<div class="col-xs-6 col-md-4">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $rowItems[$i],
'AREA_ID' => $areaIds[$rowItems[$i]['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<div class="col-sm-6 product-item-big-card">
<div class="row">
<div class="col-md-12">
<?
$item = end($rowItems);
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'Y'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
unset($item);
?>
</div>
</div>
</div>
<?
break;
case 9:
?>
<div class="col-xs-12">
<div class="row">
<?
foreach ($rowItems as $item)
{
?>
<div class="col-xs-12 product-item-line-card">
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
</div>
<?
}
?>
</div>
</div>
<?
break;
}
?>
</div>
<?
}
unset($rowItems);
unset($itemParameters);
unset($areaIds);
unset($generalParams);
?>
<!-- items-container -->
<?
}
?>
<!-- </div>-->
</div>
<div class="pagination">
<?
if ($showLazyLoad)
{
?>
<button class="more__btn button button--outline"
data-use="show-more-<?=$navParams['NavNum']?>">
<?=$arParams['MESS_BTN_LAZY_LOAD']?>
</button>
<?
}
if ($showBottomPager)
{
?>
<div class="pagination-list" data-pagination-num="<?=$navParams['NavNum']?>">
<!-- pagination-container -->
<?=$arResult['NAV_STRING']?>
<!-- pagination-container -->
</div>
</div>
<?
}
$signer = new \Bitrix\Main\Security\Sign\Signer;
$signedTemplate = $signer->sign($templateName, 'catalog.section');
$signedParams = $signer->sign(base64_encode(serialize($arResult['ORIGINAL_PARAMETERS'])), 'catalog.section');
?>
<script>
BX.message({
BTN_MESSAGE_BASKET_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT')?>',
BASKET_URL: '<?=$arParams['BASKET_URL']?>',
ADD_TO_BASKET_OK: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
TITLE_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_ERROR')?>',
TITLE_BASKET_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_BASKET_PROPS')?>',
TITLE_SUCCESSFUL: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
BASKET_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR')?>',
BTN_MESSAGE_SEND_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS')?>',
BTN_MESSAGE_CLOSE: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE')?>',
BTN_MESSAGE_CLOSE_POPUP: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP')?>',
COMPARE_MESSAGE_OK: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_OK')?>',
COMPARE_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR')?>',
COMPARE_TITLE: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_TITLE')?>',
PRICE_TOTAL_PREFIX: '<?=GetMessageJS('CT_BCS_CATALOG_PRICE_TOTAL_PREFIX')?>',
RELATIVE_QUANTITY_MANY: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_MANY'])?>',
RELATIVE_QUANTITY_FEW: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_FEW'])?>',
BTN_MESSAGE_COMPARE_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT')?>',
BTN_MESSAGE_LAZY_LOAD: '<?=CUtil::JSEscape($arParams['MESS_BTN_LAZY_LOAD'])?>',
BTN_MESSAGE_LAZY_LOAD_WAITER: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER')?>',
SITE_ID: '<?=CUtil::JSEscape($component->getSiteId())?>'
});
var <?=$obName?> = new JCCatalogSectionComponent({
siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
componentPath: '<?=CUtil::JSEscape($componentPath)?>',
navParams: <?=CUtil::PhpToJSObject($navParams)?>,
deferredLoad: false,
initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
lazyLoad: !!'<?=$showLazyLoad?>',
loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
template: '<?=CUtil::JSEscape($signedTemplate)?>',
ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'] ?? '')?>',
parameters: '<?=CUtil::JSEscape($signedParams)?>',
container: '<?=$containerName?>'
});
</script>
<!-- component-end -->

@ -0,0 +1,267 @@
<div class="catalog-page__sale sale js-display-list">
<div class="catalog-page__top">
<div class="select">
<div class="select__name">Сортировать</div>
<select name="sorting" id="sorting">
<option value="default">По популярности</option>
<option value="price_up">По возрастанию цены</option>
<option value="price_down">По убыванию цены</option>
</select>
<svg width="12" height="13" viewbox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2803 4.46967C10.5732 4.76256 10.5732 5.23744 10.2803 5.53033L6.53033 9.28033C6.23744 9.57322 5.76256 9.57322 5.46967 9.28033L1.71967 5.53033C1.42678 5.23744 1.42678 4.76256 1.71967 4.46967C2.01256 4.17678 2.48744 4.17678 2.78033 4.46967L6 7.68934L9.21967 4.46967C9.51256 4.17678 9.98744 4.17678 10.2803 4.46967Z" fill="#939393"></path>
</svg>
</div>
<button class="catalog-page__filters-btn js-show-filter" type="button">
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.875 16.125H3.75M20.25 16.125h-2.625M15.75 18a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75ZM7.875 7.875H3.75M20.25 7.875h-8.625M9.75 9.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" stroke="#3D3D3D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
</button>
<div class="display-method">
<button class="display-method__item is-active js-tile" type="button">
<svg width="12" height="12" viewbox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect></svg>
</button>
<button class="display-method__item js-list" type="button">
<svg width="14" height="12" viewbox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="4.667" width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="9.333" width="14" height="2.667" rx="1" fill="currentColor"></rect></svg>
</button>
</div>
</div>
<div class="sale__products">
<?php
use Bitrix\Main\Localization\Loc;
use Bitrix\Catalog\ProductTable;
/**
* @global CMain $APPLICATION
* @var array $arParams
* @var array $arResult
* @var CatalogSectionComponent $component
* @var CBitrixComponentTemplate $this
* @var string $templateName
* @var string $componentPath
*
* _________________________________________________________________________
* | Attention!
* | The following comments are for system use
* | and are required for the component to work correctly in ajax mode:
* | <!-- items-container -->
* | <!-- pagination-container -->
* | <!-- component-end -->
*/
$discountPositionClass = '';
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION']))
{
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos)
{
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
$labelPositionClass = '';
if (!empty($arParams['LABEL_PROP_POSITION']))
{
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos)
{
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : '';
}
}
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS']))
{
$generalParams = [
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'],
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'],
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'],
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'],
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'],
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'],
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'],
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'],
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'],
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'],
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'],
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'],
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'],
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'],
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'],
'COMPARE_PATH' => $arParams['COMPARE_PATH'],
'COMPARE_NAME' => $arParams['COMPARE_NAME'],
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'],
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'],
'LABEL_POSITION_CLASS' => $labelPositionClass,
'DISCOUNT_POSITION_CLASS' => $discountPositionClass,
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'],
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'],
'~BASKET_URL' => $arParams['~BASKET_URL'],
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'],
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'],
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'],
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'],
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'],
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'],
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'],
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'],
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'],
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'],
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'],
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'],
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'],
];
}
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT');
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE');
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM'));
$areaIds = [];
$itemParameters = [];
foreach ($arResult['ITEMS'] as $item)
{
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction());
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId);
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit);
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams);
$itemParameters[$item['ID']] = [
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']],
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE
? $arParams['~MESS_NOT_AVAILABLE_SERVICE']
: $arParams['~MESS_NOT_AVAILABLE']
),
];
}
?>
<!-- items-container -->
<?php foreach ($arResult['ITEM_ROWS'] as $rowData):
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']);
foreach ($rowItems as $item):
?>
<!-- <pre>-->
<!-- --><?// print_r($item['NAME'];); ?>
<!-- </pre>-->
<?
$APPLICATION->IncludeComponent(
'bitrix:catalog.item',
'cat_item',
array(
'RESULT' => array(
'ITEM' => $item,
'AREA_ID' => $areaIds[$item['ID']],
'TYPE' => $rowData['TYPE'],
'BIG_LABEL' => 'N',
'BIG_DISCOUNT_PERCENT' => 'N',
'BIG_BUTTONS' => 'Y',
'SCALABLE' => 'N'
),
'PARAMS' => $generalParams + $itemParameters[$item['ID']],
),
$component,
array('HIDE_ICONS' => 'Y')
);
?>
<!-- <div class="product">-->
<!-- <a class="product__image" href="product.html">-->
<!-- <img src="png/product.png" width="336" height="340" alt="product">-->
<!-- </a>-->
<!-- <div class="product__data-list">-->
<!-- <p class="product__text">1Решение для небольших дачных домов</p>-->
<!-- <div class="product__info">-->
<!-- <p class="product__text">2Пользователей: <span>1-3 чел</span></p>-->
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>-->
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>-->
<!-- <p class="product__text">Питание: <span>не нужно</span></p>-->
<!-- </div>-->
<!-- <div class="product__rating rating rating--4">4/5</div>-->
<!-- </div>-->
<!-- <div class="product__data">-->
<!-- <div class="product__rating rating rating--4">4/5</div>-->
<!-- <div class="product__info">-->
<!-- <a class="product__title" href="product.html">--><?php //=$item['NAME'];?><!--</a>-->
<!-- <p class="product__text">1Решение для небольших дачных домов</p>-->
<!-- </div>-->
<!-- <div class="product__info">-->
<!-- <p class="product__text">2Пользователей: <span>1-3 чел</span></p>-->
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>-->
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>-->
<!-- <p class="product__text">Питание: <span>не нужно</span></p>-->
<!-- </div>-->
<!-- <div class="product__price">77 000 ₽</div>-->
<!-- <div class="product__btns">-->
<!-- <button class="button button--orange">Купить</button>-->
<!-- <button class="button button--outline">Купить с установкой</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<?php
endforeach;
endforeach; ?>
<!-- <div class="product product--sold">-->
<!-- <a class="product__image" href="product.html">-->
<!-- <img src="png/product.png" width="336" height="340" alt="product">-->
<!-- </a>-->
<!-- <div class="product__data-list">-->
<!-- <p class="product__text">Решение для небольших дачных домов</p>-->
<!-- <div class="product__info">-->
<!-- <p class="product__text">Пользователей: <span>1-3 чел</span></p>-->
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>-->
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>-->
<!-- <p class="product__text">Питание: <span>не нужно</span></p>-->
<!-- </div>-->
<!-- <div class="product__rating rating rating--4">4/5</div>-->
<!-- </div>-->
<!-- <div class="product__data">-->
<!-- <div class="product__rating rating rating--4">4/5</div>-->
<!-- <div class="product__info">-->
<!-- <a class="product__title" href="product.html">Септик ЭРА 4 прин</a>-->
<!-- <p class="product__text">Решение для небольших дачных домов</p>-->
<!-- </div>-->
<!-- <div class="product__info">-->
<!-- <p class="product__text">Пользователей: <span>1-3 чел</span></p>-->
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>-->
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>-->
<!-- <p class="product__text">Питание: <span>не нужно</span></p>-->
<!-- </div>-->
<!-- <div class="product__price">77 000 ₽</div>-->
<!-- <div class="product__btns">-->
<!-- Нет в наличии-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<div class="pagination">
<button class="more__btn button button--outline">Показать еще</button>
<div class="pagination-list">
<button class="pagination-item button button--outline">
<img src="svg/arrow-left.svg" alt="Предыдущая страница">
</button>
<button class="pagination-item is-active button button--outline">1</button>
<button class="pagination-item button button--outline">2</button>
<button class="pagination-item button button--outline">3</button>
<button class="pagination-item button button--outline">4</button>
<button class="pagination-item button button--outline">5</button>
<button class="pagination-item is-middle button button--outline">
...
</button>
<button class="pagination-item button button--outline">10</button>
<button class="pagination-item button button--outline">
<img src="svg/arrow-right.svg" alt="Предыдущая страница">
</button>
</div>
</div>
</div>
</div>
</section>

@ -0,0 +1,61 @@
/* catalog.section */
.bx_black.bx-section-desc{
border-left-color:#0083d1;
}
.bx_catalog_list_home.bx_black .bx_bt_button {
background:#00a2df;
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb));
background:-webkit-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: -moz-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: -ms-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: -o-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: linear-gradient(to bottom,#00a2df 0%,#006fcb 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0);
color:#fff;
text-shadow: 0 1px 0 #165c99;
display:inline-block;
border-radius:3px;
text-align:center;
text-decoration:none;
font-size:14px;
cursor:pointer;
}
.bx_catalog_list_home.bx_black .bx_bt_button:hover {
background:#26b0e4;
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3));
background:-webkit-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: -moz-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: -ms-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: -o-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: linear-gradient(to bottom,#26b0e4 0%,#2684d3 100%);
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0 );
}
.bx_catalog_list_home.bx_black .bx_bt_button:active {
background:#0052bf;
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3));
background:-webkit-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background: -moz-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background: -ms-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background: -o-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background:linear-gradient(to bottom,#0052bf 0%,#0085d3 100%);
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0 );
}
/* scu_detail_size */
.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_size ul li.bx_active .cnt{
-webkit-border-image: url(images/x2border_active.png) 2 stretch;
-moz-border-image: url(images/x2border_active.png) 2 stretch;
-o-border-image: url(images/x2border_active.png) 2 stretch;
border-image: url(images/x2border_active.png) 2 fill stretch;
}
/* scu_detail_scu */
.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{
-webkit-border-image: url(images/x2border_active.png) 2 stretch;
-moz-border-image: url(images/x2border_active.png) 2 stretch;
-o-border-image: url(images/x2border_active.png) 2 stretch;
border-image: url(images/x2border_active.png) 2 fill stretch;
}

@ -0,0 +1 @@
.bx_black.bx-section-desc{border-left-color:#0083d1}.bx_catalog_list_home.bx_black .bx_bt_button{background:#00a2df;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb));background:-webkit-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-moz-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-ms-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-o-linear-gradient(top,#00a2df 0,#006fcb 100%);background:linear-gradient(to bottom,#00a2df 0,#006fcb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0);color:#fff;text-shadow:0 1px 0 #165c99;display:inline-block;border-radius:3px;text-align:center;text-decoration:none;font-size:14px;cursor:pointer}.bx_catalog_list_home.bx_black .bx_bt_button:hover{background:#26b0e4;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3));background:-webkit-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-moz-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-ms-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-o-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:linear-gradient(to bottom,#26b0e4 0,#2684d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0)}.bx_catalog_list_home.bx_black .bx_bt_button:active{background:#0052bf;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3));background:-webkit-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-moz-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-ms-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-o-linear-gradient(top,#0052bf 0,#0085d3 100%);background:linear-gradient(to bottom,#0052bf 0,#0085d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0)}.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_size ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch}.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch}

@ -0,0 +1,25 @@
/* catalog.section */
/*
#3052bf
#26b0e4
#00a2df
*/
/* Slider */
.bx-blue .product-item-image-slider-progress-bar { background-color: #0083d1;}
.bx-blue .product-item-image-slider-control:hover{ background-color: rgba(0,131,209,.8);}
.bx-blue .product-item-image-slider-control.active,
.bx-blue .product-item-image-slider-control:hover{ background-color: #0083d1;}
/* SCU */
.bx-blue .product-item-scu-item-text-block:hover,
.bx-blue .product-item-scu-item-color-block:hover,
.bx-blue .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,
.bx-blue .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #006cc0;}
/* Amount */
.bx-blue .product-item-amount-field:focus{border-color: #006cc0;}
.bx-blue .catalog-section-header{border-color:#006cc0;}

@ -0,0 +1 @@
.bx-blue .product-item-image-slider-progress-bar{background-color:#0083d1}.bx-blue .product-item-image-slider-control:hover{background-color:rgba(0,131,209,.8)}.bx-blue .product-item-image-slider-control.active,.bx-blue .product-item-image-slider-control:hover{background-color:#0083d1}.bx-blue .product-item-scu-item-text-block:hover,.bx-blue .product-item-scu-item-color-block:hover,.bx-blue .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-blue .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#006cc0}.bx-blue .product-item-amount-field:focus{border-color:#006cc0}.bx-blue .catalog-section-header{border-color:#006cc0}

@ -0,0 +1,26 @@
/* catalog.section */
/*
#63aa28
#6fb32d
#7ab748
#a8d95b
*/
/* Slider */
.bx-green .product-item-image-slider-progress-bar { background-color: #5b9f0b;}
.bx-green .product-item-image-slider-control:hover{ background-color: rgba(91,159,11,.8);}
.bx-green .product-item-image-slider-control.active,
.bx-green .product-item-image-slider-control:hover{ background-color: #5b9f0b;}
/* SCU */
.bx-green .product-item-scu-item-text-block:hover,
.bx-green .product-item-scu-item-color-block:hover,
.bx-green .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,
.bx-green .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #63aa28;}
/* Amount */
.bx-green .product-item-amount-field:focus{border-color: #63aa28;}
.bx-green .catalog-section-header{border-color:#63aa28;}

@ -0,0 +1 @@
.bx-green .product-item-image-slider-progress-bar{background-color:#5b9f0b}.bx-green .product-item-image-slider-control:hover{background-color:rgba(91,159,11,.8)}.bx-green .product-item-image-slider-control.active,.bx-green .product-item-image-slider-control:hover{background-color:#5b9f0b}.bx-green .product-item-scu-item-text-block:hover,.bx-green .product-item-scu-item-color-block:hover,.bx-green .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-green .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#63aa28}.bx-green .product-item-amount-field:focus{border-color:#63aa28}.bx-green .catalog-section-header{border-color:#63aa28}

@ -0,0 +1,26 @@
/* catalog.section */
/*
#651c0d
#a9331c
#772c1c
#bd4b35
*/
/* Slider */
.bx-red .product-item-image-slider-progress-bar { background-color: #F42C2C;}
.bx-red .product-item-image-slider-control:hover{ background-color: rgba(244,44,44,.8);}
.bx-red .product-item-image-slider-control.active,
.bx-red .product-item-image-slider-control:hover{ background-color: #F42C2C;}
/* SCU */
.bx-red .product-item-scu-item-text-block:hover,
.bx-red .product-item-scu-item-color-block:hover,
.bx-red .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,
.bx-red .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #da3737;}
/* Amount */
.bx-red .product-item-amount-field:focus{border-color: #da3737;}
.bx-red .catalog-section-header{border-color:#da3737;}

@ -0,0 +1 @@
.bx-red .product-item-image-slider-progress-bar{background-color:#f42c2c}.bx-red .product-item-image-slider-control:hover{background-color:rgba(244,44,44,.8)}.bx-red .product-item-image-slider-control.active,.bx-red .product-item-image-slider-control:hover{background-color:#f42c2c}.bx-red .product-item-scu-item-text-block:hover,.bx-red .product-item-scu-item-color-block:hover,.bx-red .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-red .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#da3737}.bx-red .product-item-amount-field:focus{border-color:#da3737}.bx-red .catalog-section-header{border-color:#da3737}

@ -0,0 +1,62 @@
/* catalog.section */
.bx_wood.bx-section-desc{
border-left-color:#0083d1;
}
.bx_catalog_list_home.bx_wood .bx_bt_button {
background:#00a2df;
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb));
background:-webkit-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: -moz-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: -ms-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: -o-linear-gradient(top,#00a2df 0%,#006fcb 100%);
background: linear-gradient(to bottom,#00a2df 0%,#006fcb 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0);
color:#fff;
text-shadow: 0 1px 0 #165c99;
display:inline-block;
border-radius:3px;
text-align:center;
text-decoration:none;
font-size:14px;
cursor:pointer;
}
.bx_catalog_list_home.bx_wood .bx_bt_button:hover {
background:#26b0e4;
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3));
background:-webkit-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: -moz-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: -ms-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: -o-linear-gradient(top,#26b0e4 0%,#2684d3 100%);
background: linear-gradient(to bottom,#26b0e4 0%,#2684d3 100%);
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0 );
}
.bx_catalog_list_home.bx_wood .bx_bt_button:active {
background:#0052bf;
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3));
background:-webkit-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background: -moz-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background: -ms-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background: -o-linear-gradient(top,#0052bf 0%,#0085d3 100%);
background:linear-gradient(to bottom,#0052bf 0%,#0085d3 100%);
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0 );
}
/* scu_detail_size */
.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_size ul li.bx_active .cnt{
-webkit-border-image: url(images/x2border_active.png) 2 stretch;
-moz-border-image: url(images/x2border_active.png) 2 stretch;
-o-border-image: url(images/x2border_active.png) 2 stretch;
border-image: url(images/x2border_active.png) 2 fill stretch;
}
/* scu_detail_scu */
.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{
-webkit-border-image: url(images/x2border_active.png) 2 stretch;
-moz-border-image: url(images/x2border_active.png) 2 stretch;
-o-border-image: url(images/x2border_active.png) 2 stretch;
border-image: url(images/x2border_active.png) 2 fill stretch;
}

@ -0,0 +1 @@
.bx_wood.bx-section-desc{border-left-color:#0083d1}.bx_catalog_list_home.bx_wood .bx_bt_button{background:#00a2df;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb));background:-webkit-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-moz-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-ms-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-o-linear-gradient(top,#00a2df 0,#006fcb 100%);background:linear-gradient(to bottom,#00a2df 0,#006fcb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0);color:#fff;text-shadow:0 1px 0 #165c99;display:inline-block;border-radius:3px;text-align:center;text-decoration:none;font-size:14px;cursor:pointer}.bx_catalog_list_home.bx_wood .bx_bt_button:hover{background:#26b0e4;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3));background:-webkit-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-moz-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-ms-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-o-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:linear-gradient(to bottom,#26b0e4 0,#2684d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0)}.bx_catalog_list_home.bx_wood .bx_bt_button:active{background:#0052bf;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3));background:-webkit-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-moz-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-ms-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-o-linear-gradient(top,#0052bf 0,#0085d3 100%);background:linear-gradient(to bottom,#0052bf 0,#0085d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0)}.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_size ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch}.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch}

@ -0,0 +1,26 @@
/* catalog.section */
/*
#f4b236
#f6c042
#f7c95e
#f9d857
*/
/* Slider */
.bx-yellow .product-item-image-slider-progress-bar { background-color: #f9a91d;}
.bx-yellow .product-item-image-slider-control:hover{ background-color: rgba(249,169,29,.8);}
.bx-yellow .product-item-image-slider-control.active,
.bx-yellow .product-item-image-slider-control:hover{ background-color: #f9a91d;}
/* SCU */
.bx-yellow .product-item-scu-item-text-block:hover,
.bx-yellow .product-item-scu-item-color-block:hover,
.bx-yellow .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,
.bx-yellow .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #f4b236;}
/* Amount */
.bx-yellow .product-item-amount-field:focus{border-color: #f4b236;}
.bx-yellow .catalog-section-header{border-color:#f4b236;}

@ -0,0 +1 @@
.bx-yellow .product-item-image-slider-progress-bar{background-color:#f9a91d}.bx-yellow .product-item-image-slider-control:hover{background-color:rgba(249,169,29,.8)}.bx-yellow .product-item-image-slider-control.active,.bx-yellow .product-item-image-slider-control:hover{background-color:#f9a91d}.bx-yellow .product-item-scu-item-text-block:hover,.bx-yellow .product-item-scu-item-color-block:hover,.bx-yellow .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-yellow .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#f4b236}.bx-yellow .product-item-amount-field:focus{border-color:#f4b236}.bx-yellow .catalog-section-header{border-color:#f4b236}

@ -0,0 +1,80 @@
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/** @var array $arParams */
/** @var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** @var CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var CBitrixComponent $component */
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
$this->setFrameMode(true);
if (!isset($arParams['FILTER_VIEW_MODE']) || (string)$arParams['FILTER_VIEW_MODE'] == '')
$arParams['FILTER_VIEW_MODE'] = 'VERTICAL';
$arParams['USE_FILTER'] = (isset($arParams['USE_FILTER']) && $arParams['USE_FILTER'] == 'Y' ? 'Y' : 'N');
$isVerticalFilter = ('Y' == $arParams['USE_FILTER'] && $arParams["FILTER_VIEW_MODE"] == "VERTICAL");
$isSidebar = ($arParams["SIDEBAR_SECTION_SHOW"] == "Y" && isset($arParams["SIDEBAR_PATH"]) && !empty($arParams["SIDEBAR_PATH"]));
$isFilter = ($arParams['USE_FILTER'] == 'Y');
if ($isFilter)
{
$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE" => "Y",
"GLOBAL_ACTIVE" => "Y",
);
if (0 < intval($arResult["VARIABLES"]["SECTION_ID"]))
$arFilter["ID"] = $arResult["VARIABLES"]["SECTION_ID"];
elseif ('' != $arResult["VARIABLES"]["SECTION_CODE"])
$arFilter["=CODE"] = $arResult["VARIABLES"]["SECTION_CODE"];
$obCache = new CPHPCache();
if ($obCache->InitCache(36000, serialize($arFilter), "/iblock/catalog"))
{
$arCurSection = $obCache->GetVars();
}
elseif ($obCache->StartDataCache())
{
$arCurSection = array();
if (Loader::includeModule("iblock"))
{
$dbRes = CIBlockSection::GetList(array(), $arFilter, false, array("ID"));
if(defined("BX_COMP_MANAGED_CACHE"))
{
global $CACHE_MANAGER;
$CACHE_MANAGER->StartTagCache("/iblock/catalog");
if ($arCurSection = $dbRes->Fetch())
$CACHE_MANAGER->RegisterTag("iblock_id_".$arParams["IBLOCK_ID"]);
$CACHE_MANAGER->EndTagCache();
}
else
{
if(!$arCurSection = $dbRes->Fetch())
$arCurSection = array();
}
}
$obCache->EndDataCache($arCurSection);
}
if (!isset($arCurSection))
$arCurSection = array();
}
// Добавляем номер страницы в заголовок
if (isset($arResult["VARIABLES"]["PAGE"]) && intval($arResult["VARIABLES"]["PAGE"]) > 1) {
$APPLICATION->SetPageProperty("title", $APPLICATION->GetTitle() . " - страница " . $arResult["VARIABLES"]["PAGE"]);
$APPLICATION->SetTitle($APPLICATION->GetTitle() . " - страница " . $arResult["VARIABLES"]["PAGE"]);
}
?>
<?
include($_SERVER["DOCUMENT_ROOT"] . "/" . $this->GetFolder() . "/section_vertical.php");
?>

@ -0,0 +1,33 @@
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$arThemes = array();
$arThemes["site"] = GetMessage("F_THEME_SITE");
$arThemesMessages = array(
"blue" => GetMessage("F_THEME_BLUE"),
"wood" => GetMessage("F_THEME_WOOD"),
"yellow" => GetMessage("F_THEME_YELLOW"),
"green" => GetMessage("F_THEME_GREEN"),
"red" => GetMessage("F_THEME_RED"),
"black" => GetMessage("F_THEME_BLACK")
);
$dir = trim(preg_replace("'[\\\\/]+'", "/", __DIR__."/themes/"));
if (is_dir($dir) && $directory = opendir($dir))
{
while (($file = readdir($directory)) !== false)
{
if ($file != "." && $file != ".." && is_dir($dir.$file))
$arThemes[$file] = (!empty($arThemesMessages[$file]) ? $arThemesMessages[$file] : mb_strtoupper(mb_substr($file, 0, 1)).mb_strtolower(mb_substr($file, 1)));
}
closedir($directory);
}
$arTemplateParameters = array(
"MENU_THEME"=>array(
"NAME" => GetMessage("MENU_THEME"),
"TYPE" => "LIST",
"VALUES" => $arThemes,
"PARENT" => "BASE",
)
);
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,10 @@
<?
$MESS["MENU_THEME"] = "Menü-Farbschema";
$MESS["F_THEME_SITE"] = "Use site theme (for bitrix.eshop)";
$MESS["F_THEME_BLUE"] = "Blau";
$MESS["F_THEME_WOOD"] = "Holz";
$MESS["F_THEME_YELLOW"] = "Gelb";
$MESS["F_THEME_GREEN"] = "Grün";
$MESS["F_THEME_RED"] = "Rot";
$MESS["F_THEME_BLACK"] = "Dunkel";
?>

@ -0,0 +1,10 @@
<?
$MESS["MENU_THEME"] = "Menu theme";
$MESS["F_THEME_SITE"] = "Use site theme (for bitrix.eshop)";
$MESS["F_THEME_BLUE"] = "Blue";
$MESS["F_THEME_WOOD"] = "Bark";
$MESS["F_THEME_YELLOW"] = "Yellow";
$MESS["F_THEME_GREEN"] = "Green";
$MESS["F_THEME_RED"] = "Red";
$MESS["F_THEME_BLACK"] = "Dark";
?>

@ -0,0 +1,10 @@
<?
$MESS["MENU_THEME"] = "Тема меню";
$MESS["F_THEME_SITE"] = "Брать тему из настроек сайта (для решения bitrix.eshop)";
$MESS["F_THEME_BLUE"] = "Синяя";
$MESS["F_THEME_WOOD"] = "Дерево";
$MESS["F_THEME_YELLOW"] = "Желтая";
$MESS["F_THEME_GREEN"] = "Зеленая";
$MESS["F_THEME_RED"] = "Красная";
$MESS["F_THEME_BLACK"] = "Темная";
?>

@ -0,0 +1,254 @@
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (empty($arResult))
return;
if (isset($arParams["MENU_THEME"]) && !empty($arParams["MENU_THEME"]))
{
$arAvailableThemes = array();
$dir = trim(preg_replace("'[\\\\/]+'", "/", __DIR__."/themes/"));
if (is_dir($dir) && $directory = opendir($dir))
{
while (($file = readdir($directory)) !== false)
{
if ($file != "." && $file != ".." && is_dir($dir.$file))
$arAvailableThemes[] = $file;
}
closedir($directory);
}
if ($arParams["MENU_THEME"] == "site")
{
$solution = COption::GetOptionString("main", "wizard_solution", "", SITE_ID);
if ($solution == "eshop")
{
$theme = COption::GetOptionString("main", "wizard_eshop_adapt_theme_id", "blue", SITE_ID);
$arParams["MENU_THEME"] = (in_array($theme, $arAvailableThemes)) ? $theme : "blue";
}
}
else
{
$arParams["MENU_THEME"] = (in_array($arParams["MENU_THEME"], $arAvailableThemes)) ? $arParams["MENU_THEME"] : "blue";
}
}
else
{
$arParams["MENU_THEME"] = "blue";
}
if(!function_exists("FillAllPicturesAndDescriptionsVertical"))
{
function FillAllPicturesAndDescriptionsVertical(&$arAllItems, $arMenuItemsIDs)
{
//find picture or description for the first level, if it hasn't
foreach ($arMenuItemsIDs as $itemIdLevel_1=>$arLevels2)
{
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] || !$arAllItems[$itemIdLevel_1]["PARAMS"]["description"])
{
foreach($arLevels2 as $itemIdLevel_2=>$arLevels3)
{
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_2]["PARAMS"]["picture_src"])
{
$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] = $arAllItems[$itemIdLevel_2]["PARAMS"]["picture_src"];
}
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] && $arAllItems[$itemIdLevel_2]["PARAMS"]["description"])
{
$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] = $arAllItems[$itemIdLevel_2]["PARAMS"]["description"];
}
if ($arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_1]["PARAMS"]["description"])
break;
}
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] || !$arAllItems[$itemIdLevel_1]["PARAMS"]["description"])
{
foreach($arLevels2 as $itemIdLevel_2=>$arLevels3)
{
foreach($arLevels3 as $itemIdLevel_3)
{
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_3]["PARAMS"]["picture_src"])
{
$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] = $arAllItems[$itemIdLevel_3]["PARAMS"]["picture_src"];
}
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] && $arAllItems[$itemIdLevel_3]["PARAMS"]["description"])
{
$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] = $arAllItems[$itemIdLevel_3]["PARAMS"]["description"];
}
if ($arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_1]["PARAMS"]["description"])
{
break 2;
}
}
}
}
}
}
$pictureLevel_1 = "";
$descriptionLevel_1 = "";
$pictureLevel_2 = "";
$descriptionLevel_2 = "";
foreach($arAllItems as $itemID=>$arItem)
{
if ($arItem["DEPTH_LEVEL"] == "1")
{
if ($arItem["IS_PARENT"])
{
$pictureLevel_1 = $arItem["PARAMS"]["picture_src"];
$descriptionLevel_1 = $arItem["PARAMS"]["description"];
}
$arAllItems[$itemID] = $arItem;
}
elseif($arItem["DEPTH_LEVEL"] == "2")
{
if (!$arItem["PARAMS"]["picture_src"])
$arItem["PARAMS"]["picture_src"] = $pictureLevel_1;
if (!$arItem["PARAMS"]["description"])
$arItem["PARAMS"]["description"] = $descriptionLevel_1;
if ($arItem["IS_PARENT"])
{
$pictureLevel_2 = $arItem["PARAMS"]["picture_src"];
$descriptionLevel_2 = $arItem["PARAMS"]["description"];
}
$arAllItems[$itemID] = $arItem;
}
elseif($arItem["DEPTH_LEVEL"] == "3")
{
if (!$arItem["PARAMS"]["picture_src"])
$arItem["PARAMS"]["picture_src"] = $pictureLevel_2;
if (!$arItem["PARAMS"]["description"])
$arItem["PARAMS"]["description"] = $descriptionLevel_2;
$arAllItems[$itemID] = $arItem;
}
}
}
}
$arSectionsInfo = array();
if (CModule::IncludeModule("iblock"))
{
$arFilter = array(
"TYPE"=>"catalog",
"SITE_ID"=>SITE_ID,
"ACTIVE" => "Y"
);
$obCache = new CPHPCache();
if ($obCache->InitCache(36000, serialize($arFilter), "/iblock/menu"))
{
$arSectionsInfo = $obCache->GetVars();
}
elseif ($obCache->StartDataCache())
{
$dbIBlock = CIBlock::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), $arFilter);
$dbIBlock = new CIBlockResult($dbIBlock);
$curIblockID = 0;
if ($arIBlock = $dbIBlock->GetNext())
{
$dbSections = CIBlockSection::GetList(array(), array("IBLOCK_ID" => $arIBlock["ID"]), false, array("ID", "SECTION_PAGE_URL", "PICTURE", "DESCRIPTION"));
while($arSections = $dbSections->GetNext())
{
$pictureSrc = CFile::GetFileArray($arSections["PICTURE"]);
if ($pictureSrc)
$arResizePicture = CFile::ResizeImageGet(
$arSections["PICTURE"],
array("width" => 240, 'height'=>700),
BX_RESIZE_IMAGE_PROPORTIONAL,
true
);
$arSectionsInfo[crc32($arSections["SECTION_PAGE_URL"])]["PICTURE"] = $pictureSrc ? $arResizePicture["src"] : false;
$arSectionsInfo[crc32($arSections["SECTION_PAGE_URL"])]["DESCRIPTION"] = $arSections["DESCRIPTION"];
}
if(defined("BX_COMP_MANAGED_CACHE"))
{
global $CACHE_MANAGER;
$CACHE_MANAGER->StartTagCache("/iblock/menu");
$CACHE_MANAGER->RegisterTag("iblock_id_".$arIBlock["ID"]);
$CACHE_MANAGER->EndTagCache();
}
}
$obCache->EndDataCache($arSectionsInfo);
}
}
$arMenuItemsIDs = array();
$arAllItems = array();
foreach($arResult as $key=>$arItem)
{
if($arItem["DEPTH_LEVEL"] > $arParams["MAX_LEVEL"])
{
unset($arResult[$key]);
continue;
}
$arItem["PARAMS"]["item_id"] = crc32($arItem["LINK"]);
$arItem["PARAMS"]["picture_src"] = $arSectionsInfo[$arItem["PARAMS"]["item_id"]]["PICTURE"];
$arItem["PARAMS"]["description"] = $arSectionsInfo[$arItem["PARAMS"]["item_id"]]["DESCRIPTION"];
if ($arItem["DEPTH_LEVEL"] == "1")
{
$arMenuItemsIDs[$arItem["PARAMS"]["item_id"]] = array();
if ($arItem["IS_PARENT"])
{
$curItemLevel_1 = $arItem["PARAMS"]["item_id"];
}
$arAllItems[$arItem["PARAMS"]["item_id"]] = $arItem;
}
elseif($arItem["DEPTH_LEVEL"] == "2")
{
$arMenuItemsIDs[$curItemLevel_1][$arItem["PARAMS"]["item_id"]] = array();
if ($arItem["IS_PARENT"])
{
$curItemLevel_2 = $arItem["PARAMS"]["item_id"];
}
$arAllItems[$arItem["PARAMS"]["item_id"]] = $arItem;
}
elseif($arItem["DEPTH_LEVEL"] == "3")
{
$arMenuItemsIDs[$curItemLevel_1][$curItemLevel_2][] = $arItem["PARAMS"]["item_id"];
$arAllItems[$arItem["PARAMS"]["item_id"]] = $arItem;
}
}
FillAllPicturesAndDescriptionsVertical($arAllItems, $arMenuItemsIDs);
$arMenuStructure = array();
foreach ($arMenuItemsIDs as $itemIdLevel_1=>$arLevels2)
{
$countItemsInRow = 18;
$arMenuStructure[$itemIdLevel_1] = array();
$countLevels2 = count($arLevels2);
if ($countLevels2 > 0)
{
for ($i=1; $i<=3; $i++)
{
$sumElementsInRow = 0;
foreach($arLevels2 as $itemIdLevel_2=>$arLevels3)
{
$sumElementsInRow+= count($arLevels3) + 1;
$arMenuStructure[$itemIdLevel_1][$i][$itemIdLevel_2] = $arLevels3;
if ($sumElementsInRow > $countItemsInRow)
$countItemsInRow = $sumElementsInRow;
unset($arLevels2[$itemIdLevel_2]);
$tmpCount = 0;
foreach($arLevels2 as $tmpItemIdLevel_2=>$arTmpLevels3)
{
$tmpCount+= 1 + count($arTmpLevels3);
}
if ($tmpCount <= $countItemsInRow*(3-$i) && $countItemsInRow<=$sumElementsInRow)
break;
}
}
}
}
$arResult = array();
$arResult["ALL_ITEMS"] = $arAllItems;
$arResult["ALL_ITEMS_ID"] = $arMenuItemsIDs;
$arResult["MENU_STRUCTURE"] = $arMenuStructure;
?>

@ -0,0 +1,124 @@
(function(window) {
if (!window.BX || BX.CatalogVertMenu)
return;
BX.CatalogVertMenu = {
items : {},
idCnt : 1,
currentItem : null,
overItem : null,
outItem : null,
timeoutOver : null,
timeoutOut : null,
getItem : function(item)
{
if (!BX.type.isDomNode(item))
return null;
var id = !item.id || !BX.type.isNotEmptyString(item.id) ? (item.id = "menu-item-vert-" + this.idCnt++) : item.id;
if (!this.items[id])
this.items[id] = new CatalogVertMenuItem(item);
return this.items[id];
},
itemOver : function(item)
{
var menuItem = this.getItem(item);
if (!menuItem)
return;
if (this.outItem == menuItem)
{
clearTimeout(menuItem.timeoutOut);
}
this.overItem = menuItem;
if (menuItem.timeoutOver)
{
clearTimeout(menuItem.timeoutOver);
}
menuItem.timeoutOver = setTimeout(function() {
if (BX.CatalogVertMenu.overItem == menuItem)
{
menuItem.itemOver();
}
}, 100);
},
itemOut : function(item)
{
var menuItem = this.getItem(item);
if (!menuItem)
return;
this.outItem = menuItem;
if (menuItem.timeoutOut)
{
clearTimeout(menuItem.timeoutOut);
}
menuItem.timeoutOut = setTimeout(function() {
if (menuItem != BX.CatalogVertMenu.overItem)
{
menuItem.itemOut();
}
if (menuItem == BX.CatalogVertMenu.outItem)
{
menuItem.itemOut();
}
}, 100);
},
changeSectionPicture : function(element)
{
var descrSpan = BX.nextSibling(element);
var curDescr = descrSpan.innerHTML || '';
if (descrSpan)
{
var curImgWrapObj = BX.nextSibling(descrSpan);
var curImgObj = BX.clone(BX.firstChild(curImgWrapObj));
}
var parentObj = BX.hasClass(element, 'bx_hma_one_lvl') ? element : BX.findParent(element, {className:'bx_hma_one_lvl'});
var sectionImgObj = BX.findChild(parentObj, {className:'bx_section_picture'}, true, false);
sectionImgObj.innerHTML = "";
if (curImgObj)
{
sectionImgObj.appendChild(curImgObj);
}
var sectionDescrObj = BX.findChild(parentObj, {className:'bx_section_description'}, true, false);
sectionDescrObj.innerHTML = curDescr;
BX.previousSibling(sectionDescrObj).innerHTML = element.innerHTML;
sectionImgObj.parentNode.href = element.href;
}
};
var CatalogVertMenuItem = function(item)
{
this.element = item;
this.popup = BX.findChild(item, { className: "bx_children_container" }, false, false);
};
CatalogVertMenuItem.prototype.itemOver = function()
{
if (!BX.hasClass(this.element, "hover"))
{
BX.addClass(this.element, "hover");
}
};
CatalogVertMenuItem.prototype.itemOut = function()
{
BX.removeClass(this.element, "hover");
};
})(window);

@ -0,0 +1 @@
{"version":3,"file":"script.min.js","sources":["script.js"],"names":["window","BX","CatalogVertMenu","items","idCnt","currentItem","overItem","outItem","timeoutOver","timeoutOut","getItem","item","type","isDomNode","id","isNotEmptyString","this","CatalogVertMenuItem","itemOver","menuItem","clearTimeout","setTimeout","itemOut","changeSectionPicture","element","descrSpan","nextSibling","curDescr","innerHTML","curImgWrapObj","curImgObj","clone","firstChild","parentObj","hasClass","findParent","className","sectionImgObj","findChild","appendChild","sectionDescrObj","previousSibling","parentNode","href","popup","prototype","addClass","removeClass"],"mappings":"CAAA,SAAUA,GAET,IAAKA,EAAOC,IAAMA,GAAGC,gBACpB,MAEDD,IAAGC,iBACFC,SACAC,MAAQ,EACRC,YAAc,KACdC,SAAW,KACXC,QAAU,KACVC,YAAc,KACdC,WAAa,KAEbC,QAAU,SAASC,GAElB,IAAKV,GAAGW,KAAKC,UAAUF,GACtB,MAAO,KAER,IAAIG,IAAMH,EAAKG,KAAOb,GAAGW,KAAKG,iBAAiBJ,EAAKG,IAAOH,EAAKG,GAAK,kBAAoBE,KAAKZ,QAAWO,EAAKG,EAE9G,KAAKE,KAAKb,MAAMW,GACfE,KAAKb,MAAMW,GAAM,GAAIG,GAAoBN,EAE1C,OAAOK,MAAKb,MAAMW,IAGnBI,SAAW,SAASP,GAEnB,GAAIQ,GAAWH,KAAKN,QAAQC,EAC5B,KAAKQ,EACJ,MAED,IAAIH,KAAKT,SAAWY,EACpB,CACCC,aAAaD,EAASV,YAGvBO,KAAKV,SAAWa,CAEhB,IAAIA,EAASX,YACb,CACCY,aAAaD,EAASX,aAGvBW,EAASX,YAAca,WAAW,WACjC,GAAIpB,GAAGC,gBAAgBI,UAAYa,EACnC,CACCA,EAASD,aAER,MAGJI,QAAU,SAASX,GAElB,GAAIQ,GAAWH,KAAKN,QAAQC,EAC5B,KAAKQ,EACJ,MAEDH,MAAKT,QAAUY,CAEf,IAAIA,EAASV,WACb,CACCW,aAAaD,EAASV,YAGvBU,EAASV,WAAaY,WAAW,WAEhC,GAAIF,GAAYlB,GAAGC,gBAAgBI,SACnC,CACCa,EAASG,UAEV,GAAIH,GAAYlB,GAAGC,gBAAgBK,QACnC,CACCY,EAASG,YAGR,MAGJC,qBAAuB,SAASC,GAE/B,GAAIC,GAAYxB,GAAGyB,YAAYF,EAC/B,IAAIG,GAAWF,EAAUG,WAAa,EACtC,IAAIH,EACJ,CACC,GAAII,GAAgB5B,GAAGyB,YAAYD,EACnC,IAAIK,GAAY7B,GAAG8B,MAAM9B,GAAG+B,WAAWH,IAExC,GAAII,GAAYhC,GAAGiC,SAASV,EAAS,kBAAoBA,EAAUvB,GAAGkC,WAAWX,GAAUY,UAAU,kBACrG,IAAIC,GAAgBpC,GAAGqC,UAAUL,GAAYG,UAAU,sBAAuB,KAAM,MACpFC,GAAcT,UAAY,EAC1B,IAAIE,EACJ,CACCO,EAAcE,YAAYT,GAE3B,GAAIU,GAAkBvC,GAAGqC,UAAUL,GAAYG,UAAU,0BAA2B,KAAM,MAC1FI,GAAgBZ,UAAYD,CAC5B1B,IAAGwC,gBAAgBD,GAAiBZ,UAAYJ,EAAQI,SACxDS,GAAcK,WAAWC,KAAOnB,EAAQmB,MAI1C,IAAI1B,GAAsB,SAASN,GAElCK,KAAKQ,QAAUb,CACfK,MAAK4B,MAAQ3C,GAAGqC,UAAU3B,GAAQyB,UAAW,yBAA2B,MAAO,OAGhFnB,GAAoB4B,UAAU3B,SAAW,WAExC,IAAKjB,GAAGiC,SAASlB,KAAKQ,QAAS,SAC/B,CACCvB,GAAG6C,SAAS9B,KAAKQ,QAAS,UAI5BP,GAAoB4B,UAAUvB,QAAU,WAEvCrB,GAAG8C,YAAY/B,KAAKQ,QAAS,YAG5BxB"}

@ -0,0 +1,2 @@
(function(t){if(!t.BX||BX.CatalogVertMenu)return;BX.CatalogVertMenu={items:{},idCnt:1,currentItem:null,overItem:null,outItem:null,timeoutOver:null,timeoutOut:null,getItem:function(t){if(!BX.type.isDomNode(t))return null;var i=!t.id||!BX.type.isNotEmptyString(t.id)?t.id="menu-item-vert-"+this.idCnt++:t.id;if(!this.items[i])this.items[i]=new e(t);return this.items[i]},itemOver:function(t){var e=this.getItem(t);if(!e)return;if(this.outItem==e){clearTimeout(e.timeoutOut)}this.overItem=e;if(e.timeoutOver){clearTimeout(e.timeoutOver)}e.timeoutOver=setTimeout(function(){if(BX.CatalogVertMenu.overItem==e){e.itemOver()}},100)},itemOut:function(t){var e=this.getItem(t);if(!e)return;this.outItem=e;if(e.timeoutOut){clearTimeout(e.timeoutOut)}e.timeoutOut=setTimeout(function(){if(e!=BX.CatalogVertMenu.overItem){e.itemOut()}if(e==BX.CatalogVertMenu.outItem){e.itemOut()}},100)},changeSectionPicture:function(t){var e=BX.nextSibling(t);var i=e.innerHTML||"";if(e){var n=BX.nextSibling(e);var r=BX.clone(BX.firstChild(n))}var u=BX.hasClass(t,"bx_hma_one_lvl")?t:BX.findParent(t,{className:"bx_hma_one_lvl"});var o=BX.findChild(u,{className:"bx_section_picture"},true,false);o.innerHTML="";if(r){o.appendChild(r)}var m=BX.findChild(u,{className:"bx_section_description"},true,false);m.innerHTML=i;BX.previousSibling(m).innerHTML=t.innerHTML;o.parentNode.href=t.href}};var e=function(t){this.element=t;this.popup=BX.findChild(t,{className:"bx_children_container"},false,false)};e.prototype.itemOver=function(){if(!BX.hasClass(this.element,"hover")){BX.addClass(this.element,"hover")}};e.prototype.itemOut=function(){BX.removeClass(this.element,"hover")}})(window);
//# sourceMappingURL=script.map.js

@ -0,0 +1,222 @@
.bx_vertical_menu_advanced{
border-left:7px solid #e3eaef;
background:#f1f4f7;
border-radius:4px;
position:relative;
box-shadow:0 0 1px 1px #dcdcdc;
}
.bx_vertical_menu_advanced>ul{
display:block;
margin:0 0 10px 0;
padding:0;
width:100%;
border-radius:5px;
background:#fff;
list-style:none;
}
/* 1 уровень */
.bx_vertical_menu_advanced .bx_hma_one_lvl{
display:block;
padding:0;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl>a{
position:relative;
z-index:105;
display:block;
padding:10px 0 10px 12px;
border-bottom: 1px solid #e3eaef;
color:#000;
vertical-align:middle;
text-align:left;
text-decoration:none;
text-shadow:0 1px 1px rgba(255,255,255,.8);
font-size:14px;
line-height:16px;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl:first-child,
.bx_vertical_menu_advanced .bx_hma_one_lvl:first-child>a{border-radius:0 4px 0 0}
.bx_vertical_menu_advanced .bx_hma_one_lvl:last-child,
.bx_vertical_menu_advanced .bx_hma_one_lvl:last-child>a {border-radius:0 0 4px 0}
.bx_vertical_menu_advanced ul:last-child .bx_hma_one_lvl:last-child>a{border-bottom:none}
.bx_vertical_menu_advanced .bx_hma_one_lvl>a{
-webkit-transition: border-color 0s ease;
-moz-transition: border-color 0s ease;
-o-transition: border-color 0s ease;
-ms-transition: border-color 0s ease;
transition: border-color 0s ease;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl.hover{
padding:1px 0 0;
border:none;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl.hover>a{
margin-left:-11px;
padding:10px 0 10px 12px;
width:100%;
border:none;
border-right:2px;
background:#fff;
box-shadow:-1px 2px 3px 0px rgba(1,1,1,.22);
font-weight:bold;
line-height:16px;
box-sizing:content-box;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl.dropdown.hover{}
.bx_vertical_menu_advanced .bx_hma_one_lvl.dropdown.hover>a{z-index:1500}
.bx_vertical_menu_advanced .bx_hma_one_lvl>a:active,
.bx_vertical_menu_advanced .bx_hma_one_lvl.current>a{}
/* // 1й уровень */
/* Контейнер*/
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container{
position:absolute;
top:-1px;
left:100%;
z-index:1300;
display:none;
overflow:hidden;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
border-top:1px solid rgba(1,1,1,.1);
border-radius:2px;
background:#fff;
box-shadow:0 5px 10px 0 rgba(1,1,1,.29);
}
.bx_vertical_menu_advanced .bx_hma_one_lvl.hover .bx_children_container{display:block}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block{
float:left;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
margin-bottom:-20000px;
padding:10px 12px;
padding-bottom:20000px;
min-width:130px;
max-width:280px;
border-left:1px solid #f2f2f2;
background:#fff;
}
.bx_shadow_fix{display:none}
.bx_vertical_menu_advanced .dropdown:hover .bx_shadow_fix,
.bx_vertical_menu_advanced .dropdown.hover .bx_shadow_fix{
position: absolute;
top: -1px;
right: -2px;
bottom: 0;
z-index: 1500;
display: block;
width: 5px;
background: #fff;
opacity: 1;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b1{min-width:180px}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b2{min-width:360px}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b3{min-width:540px}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b4{min-width:720px}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block:first-child{border-left:none}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b1 .bx_children_block{width:100%}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b2 .bx_children_block{width:50%}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b3 .bx_children_block{width:33.3%}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b4 .bx_children_block{width:25%}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block.advanced{
border-left:none;
background:#f7fafb;
box-shadow:inset 5px 0 7px -5px rgba(0,0,0,.12);
}
/*// Контейнер*/
/* 2й уровень*/
.bx_vertical_menu_advanced .bx_hma_one_lvl ul{
display:block;
margin:0;
padding:0 0 14px 0;
list-style:none;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_advanced_panel {
display: none;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
text-align: center;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{
display:block;
padding:5px 10px;
}
/*.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{
color: #366181;
}*/
/* //2й уровень*/
/* 3й уровень */
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul{border-bottom:1px solid #f2f2f2}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent:last-child ul{border-bottom:none}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul li{line-height:24px}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a{
display:block;
padding:5px 10px;
}
/*.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background:#f0f6f8;
box-shadow:inset 0 1px 1px 0 #e3e9eb;
}*/
/* // 3й уровень */
/* Панель */
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_advanced_panel{
display:none;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
text-align:center;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_block.advanced .bx_children_advanced_panel{display:block !important}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_advanced_panel img{
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
max-width:100%;
max-height:220px;
border:1px solid #e7e9ea;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_advanced_panel .bx_item_description{
max-width:100%;
max-height:220px;
color:#000;
text-align:left;
white-space:normal;
font-weight:normal;
font-size:12px;
line-height:18px;
}
/* // Панель*/
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block>ul>li{
display:block;
background:#fff;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block>ul>li>a{
display:block;
color:#20394c;
text-decoration:none;
font-weight:bold;
font-size:15px;
line-height:23px;
}
.bx_vertical_menu_advanced .bx_hma_one_lvl ul li ul li a{
color:#000;
text-decoration:none;
font-size:13px;
line-height:16px;
}
@media (max-width:569px) {
.bx_vertical_menu_advanced{display:none}
.header_inner_bottom_line{
overflow:hidden;
height:auto;
}
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,48 @@
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (empty($arResult["ALL_ITEMS"]))
return;
if (file_exists($_SERVER["DOCUMENT_ROOT"].$this->GetFolder().'/themes/'.$arParams["MENU_THEME"].'/colors.css'))
$APPLICATION->SetAdditionalCSS($this->GetFolder().'/themes/'.$arParams["MENU_THEME"].'/colors.css');
CJSCore::Init();
$menuBlockId = "catalog_menu_".$this->randString();
//debug($arResult);
?>
<div class="filter__item filter__item--list">
<?foreach($arResult["MENU_STRUCTURE"] as $itemID => $arColumns):?> <!-- first level-->
<a class="filter__category is-active filter__category--base" href="<?=$arResult["ALL_ITEMS"][$itemID]["LINK"]?>" >
<?=$arResult["ALL_ITEMS"][$itemID]["TEXT"]?>
<!-- <span>48</span>-->
</a>
<?foreach($arColumns as $key=>$arRow):?>
<?foreach($arRow as $itemIdLevel_2=>$arLevel_3):?> <!-- second level-->
<a class="filter__category" href="<?=$arResult["ALL_ITEMS"][$itemIdLevel_2]["LINK"]?>">
<?=$arResult["ALL_ITEMS"][$itemIdLevel_2]["TEXT"]?>
<!-- <span>10</span>-->
</a>
<?endforeach;?>
<?endforeach;?>
<?endforeach;?>
</div>

@ -0,0 +1,27 @@
/* 1st level */
.bx_vertical_menu_advanced.bx_black{
border-left:7px solid #e3eaef;
background:#f1f4f7;
}
/* // 1st level */
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl>a{
border-bottom: 1px solid #e3eaef;
}
/* The Container */
/*// Container */
/* 2nd level*/
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #20394C}
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #366181}
/* // 2nd level*/
/* 3rd level */
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background: #F0F6F8;
box-shadow: inset 0 1px 1px 0 #E3E9EB;
}
/* // 3rd level */
/* Panel */
/* // The Panel*/

@ -0,0 +1 @@
.bx_vertical_menu_advanced.bx_black{border-left:7px solid #e3eaef;background:#f1f4f7}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl>a{border-bottom:1px solid #e3eaef}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#20394c}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#366181}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f0f6f8;box-shadow:inset 0 1px 1px 0 #e3e9eb}

@ -0,0 +1,25 @@
/* 1st level */
.bx_vertical_menu_advanced.bx_blue{
border-left:7px solid #e4f0f7;
background:#f6f9fb;
}
/* // 1st level */
/* The Container */
/*// Container */
/* 2nd level*/
.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #20394C}
.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #366181}
/* // 2nd level*/
/* 3rd level */
.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background: #F0F6F8;
box-shadow: inset 0 1px 1px 0 #E3E9EB;
}
/* // 3rd level */
/* Panel */
/* // The Panel*/

@ -0,0 +1 @@
.bx_vertical_menu_advanced.bx_blue{border-left:7px solid #e4f0f7;background:#f6f9fb}.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#20394c}.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#366181}.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f0f6f8;box-shadow:inset 0 1px 1px 0 #e3e9eb}

@ -0,0 +1,25 @@
/* 1st level */
.bx_vertical_menu_advanced.bx_green{
border-left:7px solid #a7d380;
background:#bdeb94;
}
/* // 1st level */
/* The Container */
/*// Container */
/* 2nd level*/
.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #746b21}
.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #564f17}
/* // 2nd level*/
/* 3rd level */
.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background:#f7f3e0;
box-shadow:inset 0 1px 1px 0 #ebe9e3
}
/* // 3rd level */
/* Panel */
/* // The Panel*/

@ -0,0 +1 @@
.bx_vertical_menu_advanced.bx_green{border-left:7px solid #a7d380;background:#bdeb94}.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#746b21}.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#564f17}.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f7f3e0;box-shadow:inset 0 1px 1px 0 #ebe9e3}

@ -0,0 +1,26 @@
/* 1st level */
.bx_vertical_menu_advanced.bx_red{
border-left:7px solid #f0bdb5;
background:#fbf1f0;
}
/* // 1st level */
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl>a{
border-bottom: 1px solid #f9e6e3;
}
/* The Container */
/*// Container */
/* 2nd level*/
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #742B21}
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #742121}
/* // 2nd level*/
/* 3rd level */
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background:#f7f3e0;
box-shadow:inset 0 1px 1px 0 #ebe9e3
}
/* // 3rd level */
/* Panel */
/* // The Panel*/

@ -0,0 +1 @@
.bx_vertical_menu_advanced.bx_red{border-left:7px solid #f0bdb5;background:#fbf1f0}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl>a{border-bottom:1px solid #f9e6e3}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#742b21}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#742121}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f7f3e0;box-shadow:inset 0 1px 1px 0 #ebe9e3}

@ -0,0 +1,25 @@
/* 1st level */
.bx_vertical_menu_advanced.bx_wood{
border-left:7px solid #e4f0f7;
background:#f6f9fb;
}
/* // 1st level */
/* The Container */
/*// Container */
/* 2nd level*/
.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #20394C}
.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #366181}
/* // 2nd level*/
/* 3rd level */
.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background: #F0F6F8;
box-shadow: inset 0 1px 1px 0 #E3E9EB;
}
/* // 3rd level */
/* Panel */
/* // The Panel*/

@ -0,0 +1 @@
.bx_vertical_menu_advanced.bx_wood{border-left:7px solid #e4f0f7;background:#f6f9fb}.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#20394c}.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#366181}.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f0f6f8;box-shadow:inset 0 1px 1px 0 #e3e9eb}

@ -0,0 +1,25 @@
/* 1st level */
.bx_vertical_menu_advanced.bx_yellow{
border-left:7px solid #F2E9B2;
background:#FEFAD5;
}
/* // 1st level */
/* The Container */
/*// Container */
/* 2nd level*/
.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #746b21}
.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #564f17}
/* // 2nd level*/
/* 3rd level */
.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{
background:#f7f3e0;
box-shadow:inset 0 1px 1px 0 #ebe9e3
}
/* // 3rd level */
/* Panel */
/* // The Panel*/

@ -0,0 +1 @@
.bx_vertical_menu_advanced.bx_yellow{border-left:7px solid #f2e9b2;background:#fefad5}.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#746b21}.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#564f17}.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f7f3e0;box-shadow:inset 0 1px 1px 0 #ebe9e3}

@ -0,0 +1,5 @@
<?
return array(
"NAME" => "Услуги (кастомный шаблон)",
"DESCRIPTION" => "Шаблон для компонента bitrix:news (услуги)",
);

@ -0,0 +1,43 @@
.services-list {
display: flex;
flex-wrap: wrap;
gap: 24px;
}
.service-item {
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 16px;
width: 300px;
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
background: #fff;
display: flex;
flex-direction: column;
align-items: flex-start;
}
.service-item h2 {
font-size: 1.2em;
margin: 0 0 8px 0;
}
.service-item img {
max-width: 100%;
border-radius: 4px;
margin-bottom: 8px;
}
.service-desc {
margin-bottom: 8px;
color: #444;
}
.service-price {
font-weight: bold;
color: #1a7f37;
margin-bottom: 8px;
}
.service-item a {
margin-top: auto;
color: #1976d2;
text-decoration: none;
font-weight: 500;
}
.service-item a:hover {
text-decoration: underline;
}

@ -0,0 +1,21 @@
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="services-list">
<?foreach(
$arResult["ITEMS"] as $arItem):?>
<div class="service-item">
<h2><?=$arItem["NAME"]?></h2>
<?if($arItem["PREVIEW_PICTURE"]):?>
<img src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" alt="<?=$arItem["NAME"]?>">
<?endif;?>
<div class="service-desc">
<?=$arItem["PREVIEW_TEXT"]?>
</div>
<?if($arItem["PROPERTIES"]["PRICE"]["VALUE"]):?>
<div class="service-price">
Цена: <?=$arItem["PROPERTIES"]["PRICE"]["VALUE"]?>
</div>
<?endif;?>
<a href="<?=$arItem["DETAIL_PAGE_URL"]?>">Подробнее</a>
</div>
<?endforeach;?>
</div>

@ -9,10 +9,194 @@
display: none; display: none;
} }
.success-order__content{
display: flex
;
flex-direction: column;
align-items: center;
gap: 30px;
}
.product__btns{
flex-wrap: nowrap;
}
.cart-page--empty .cart-empty{ .cart-page--empty .cart-empty{
display: flex !important; display: flex !important;
} }
.footer-widget-icons{
position: fixed;
right: 28px;
bottom: 68px;
display: flex;
gap: 15px;
flex-direction: column;
}
.footer-widget-icons img{
margin: 0;
cursor: pointer;
}
.footer-popup {
position: fixed;
z-index: 1100;
left: 0; top: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.45);
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.2s;
}
.footer-popup__content {
background: #fff;
border-radius: 16px;
padding: 40px;
max-width: 480px;
width: 100%;
box-shadow: 0 8px 32px rgba(0,0,0,0.18);
position: relative;
display: flex;
flex-direction: column;
align-items: stretch;
}
.footer-popup__close {
position: absolute;
top: 12px;
right: 12px;
background: none;
border: none;
font-size: 28px;
color: #888;
cursor: pointer;
line-height: 1;
}
.footer-popup__title {
font-size: 40Px;
font-weight: 900;
margin: 0 auto 40px;
width:70%;
text-align: center;
}
.footer-popup__form .input {
margin-bottom: 20px;
padding: 10px 12px;
border: 1px solid #e0e0e0;
border-radius: 12px;
font-size: 1rem;
width: 100%;
background: #fff;
box-sizing: border-box;
}
.footer-popup__form .button--orange {
margin-top: 40px;
height: 48px;
width: 100%;
}
.footer-popup__personal {
font-size: 0.85rem;
color: #888;
margin-top: 10px;
}
.footer-popup__personal a{
color: #FF7F23;
}
@media (max-width: 600px) {
.footer-popup__content {
max-width: 95vw;
padding: 18px 6vw 18px 6vw;
}
.footer-widget-icons {
right: 10px;
bottom: 10px;
}
}
.cookie-banner {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background: #13795b;
color: #fff;
padding: 12px 0 12px 0;
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
font-size: 15px;
z-index: 1200;
box-shadow: 0 -2px 12px rgba(0,0,0,0.10);
}
.cookie-banner a {
color: #fff;
text-decoration: underline;
}
.cookie-banner .button--orange {
margin-left: 12px;
padding: 6px 18px;
font-size: 15px;
}
.search-result-img{
width: 50px;
}
.search-result-item{
gap: 16px;
display: flex
;
align-items: center;
border-bottom: 1px solid #E2E2E2;
padding: 16px 0;
}
.header__search-block {
display: none;
}
.header__search-block.active {
display: block;
}
.search-result-item span{
font-weight: 400;
font-size: 16px;
line-height: 130%;
flex: 1;
letter-spacing: 0%;
}
.search-result-price{
font-weight: 400;
font-size: 16px;
line-height: 130%;
letter-spacing: 0%;
color: #939393;
}
.calc__actions {
margin-top: 20px;
text-align: center;
}
.calc__actions .button {
min-width: 200px;
}
/* Изначально скрываем контейнер с результатами */
#calculator-container {
display: none;
}
.cart-page__item-quantity { .cart-page__item-quantity {
padding: 0; padding: 0;
width: 79px; width: 79px;
@ -182,10 +366,268 @@
max-width: 100%; max-width: 100%;
} }
} }
@media (max-width: 980px) {
.reviews__list .iframe-box{
width: 100% !important;
}
}
.success-order__content{
display: flex; .completed-objects__list {
flex-direction: column; grid-template-columns: repeat(2, minmax(0, 1fr));
align-items: center; gap: 52px 60px;
gap: 16px; display: grid;
}
@media (width <= 1024px) {
.completed-objects__list {
gap: 44px 32px;
}
}
@media (width <= 744px) {
.completed-objects__list {
grid-template-columns: auto;
grid-auto-flow: row;
row-gap: 65px;
}
}
@media (width <= 540px) {
.completed-objects__list {
row-gap: 40px;
}
}
.completed-objects__item {
box-sizing: border-box;
}
.completed-objects__item:hover .completed-objects__image:before, .completed-objects__item:hover .completed-objects__image .completed-objects__image-details {
opacity: 1;
}
.completed-objects__item:hover .completed-objects__title {
color: #ff7f23;
}
.completed-objects__item--green {
color: #fff;
background-color: #097359;
border-radius: 24px;
flex-direction: column;
justify-content: space-between;
height: max-content;
min-height: 280px;
padding: 28px;
display: flex;
position: relative;
overflow: hidden;
}
@media (width <= 540px) {
.completed-objects__item--green {
min-height: 192px;
padding: 24px;
}
}
.completed-objects__item--green:hover:after {
transform: rotate(0)translate(0);
}
.completed-objects__item--green:hover .completed-objects__title {
color: inherit;
}
.completed-objects__item--green:after {
content: "";
pointer-events: none;
background-image: url("/local/templates/EraSeptik/build/svg/blocknote.svg");
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: contain;
width: 227px;
height: 185px;
transition: transform .5s ease-in-out;
position: absolute;
bottom: 0;
right: 0;
transform: rotate(15deg)translate(70px, 50px);
}
@media (width <= 540px) {
.completed-objects__item--green:after {
content: none;
}
}
.completed-objects__item--green .completed-objects__link {
z-index: 1;
font-size: 20px;
position: relative;
}
@media (width <= 1024px) {
.completed-objects__item--green .completed-objects__link {
font-size: 16px;
}
}
@media (width <= 540px) {
.completed-objects__item--green .completed-objects__link {
display: block;
}
}
.completed-objects__item--green .completed-objects__link:after {
height: 20px;
top: 5px;
}
@media (width <= 1024px) {
.completed-objects__item--green .completed-objects__link:after {
height: 14px;
top: 2px;
}
}
.completed-objects__image {
box-sizing: border-box;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
border-radius: 24px;
align-items: flex-end;
min-height: 280px;
margin-bottom: 20px;
padding: 32px;
display: flex;
position: relative;
}
@media (width <= 540px) {
.completed-objects__image {
border-radius: 20px;
margin-bottom: 12px;
padding: 20px;
}
}
.completed-objects__image:before {
content: "";
border-radius: inherit;
opacity: 0;
background-image: linear-gradient(#0000 0%, #000c 100%);
transition: opacity .2s ease-out;
position: absolute;
inset: 0;
}
@media (width <= 540px) {
.completed-objects__image:before {
opacity: 1;
background-image: linear-gradient(#0000 0%, #0006 100%);
}
}
.completed-objects__image-details {
color: #fff;
opacity: 0;
justify-content: space-between;
align-items: center;
width: 100%;
transition: opacity .2s ease-out;
display: flex;
position: relative;
}
@media (width <= 540px) {
.completed-objects__image-details {
opacity: 1;
}
}
.completed-objects__link {
font-weight: 700;
}
@media (width <= 540px) {
.completed-objects__link {
display: none;
}
}
.completed-objects__link:after {
content: "";
background-image: url("/local/templates/EraSeptik/build/svg/arrow-category.svg");
background-repeat: no-repeat;
background-size: contain;
width: 20px;
height: 14px;
margin-left: 8px;
display: inline-block;
position: relative;
top: 2px;
}
@media (width <= 1024px) {
.completed-objects__link:after {
width: 14px;
height: 16px;
}
}
.completed-objects__title {
margin-bottom: 8px;
font-size: 24px;
transition: color .2s ease-out;
}
@media (width <= 540px) {
.completed-objects__title {
font-size: 20px;
}
}
.completed-objects__info {
margin-bottom: 16px;
line-height: 1.3em;
}
.completed-objects__sub {
color: #939393;
margin-bottom: 8px;
line-height: 1.3em;
}
@media (width <= 540px) {
.completed-objects__sub {
margin-bottom: 10px;
}
}
.completed-objects__data {
color: #939393;
max-height: 2.6em;
margin: 0;
padding: 0;
list-style: none;
overflow: hidden;
}
.completed-objects__data-item {
line-height: 1.3;
}
.completed-objects__data-item:before {
content: "-";
margin-right: 3px;
display: inline-block;
}
@media (width <= 540px) {
.completed-objects__date {
display: block;
}
} }

@ -259,7 +259,7 @@ function showSearchResults(results, blockId) {
`<a href="${item.url}" class="search-result-item"><img src="${item.img}" alt="${item.title}" class="search-result-img"><span>${item.title}</span>${item.price ? `<div class='search-result-price'>${item.price}</div>` : ''}</a>` `<a href="${item.url}" class="search-result-item"><img src="${item.img}" alt="${item.title}" class="search-result-img"><span>${item.title}</span>${item.price ? `<div class='search-result-price'>${item.price}</div>` : ''}</a>`
).join('') + '</div>'; ).join('') + '</div>';
} else { } else {
html = '<div class="search-results-empty">Ничего не найдено</div>'; html = '<div class="search-results-empty">По вашему запросу ничего не найдено</div>';
} }
block.insertAdjacentHTML('beforeend', html); block.insertAdjacentHTML('beforeend', html);
} }

@ -140,35 +140,25 @@ parcelRegister("6aHKA", function(module, exports) {
const cartContent = document.querySelector(".js-cart__page"); const cartContent = document.querySelector(".js-cart__page");
const cartOrderSuccess = document.querySelector(".js-cart__success-order"); const cartOrderSuccess = document.querySelector(".js-cart__success-order");
const cartBreadcrumbs = document.querySelector(".js-cart__breadcrumbs"); const cartBreadcrumbs = document.querySelector(".js-cart__breadcrumbs");
if (orderBtn){ orderBtn.addEventListener("click", ()=>{
orderBtn.addEventListener("click", ()=>{ cartPopup.classList.remove("cart-popup__wrapper--hidden");
cartPopup.classList.remove("cart-popup__wrapper--hidden"); });
});
}
if (closeBtn){
closeBtn.addEventListener("click", ()=>{ closeBtn.addEventListener("click", ()=>{
cartPopup.classList.add("cart-popup__wrapper--hidden"); cartPopup.classList.add("cart-popup__wrapper--hidden");
}); });
} submitBtn.addEventListener("click", (e)=>{
if (submitBtn){
submitBtn.addEventListener("click", (e)=>{
e.preventDefault(); e.preventDefault();
cartPopup.classList.add("cart-popup__wrapper--hidden"); cartPopup.classList.add("cart-popup__wrapper--hidden");
cartContent.classList.add("cart-page--hidden"); cartContent.classList.add("cart-page--hidden");
cartOrderSuccess.classList.add("success-order--visible"); cartOrderSuccess.classList.add("success-order--visible");
cartBreadcrumbs.remove(); cartBreadcrumbs.remove();
}); });
} cartPopup.addEventListener("click", (e)=>{
if (cartPopup){
cartPopup.addEventListener("click", (e)=>{
if (!document.querySelector(".cart-popup").contains(e.target)) cartPopup.classList.add("cart-popup__wrapper--hidden"); if (!document.querySelector(".cart-popup").contains(e.target)) cartPopup.classList.add("cart-popup__wrapper--hidden");
}); });
}
const cartSelect = document.querySelector(".js-cart__order-select"); const cartSelect = document.querySelector(".js-cart__order-select");
const cartSelfDelivery = document.querySelector(".js-cart__self-delivery"); const cartSelfDelivery = document.querySelector(".js-cart__self-delivery");
const cartServiceDelivery = document.querySelectorAll(".js-cart__service-delivery"); const cartServiceDelivery = document.querySelectorAll(".js-cart__service-delivery");
if (cartSelect){
cartSelect.addEventListener("change", ()=>{ cartSelect.addEventListener("change", ()=>{
const selectedValue = cartSelect.value; const selectedValue = cartSelect.value;
if (selectedValue === "self-delivery") { if (selectedValue === "self-delivery") {
@ -183,8 +173,6 @@ parcelRegister("6aHKA", function(module, exports) {
}); });
} }
}); });
}
}); });

@ -1,20 +1,46 @@
<?php <?php
use Bitrix\Main\Page\Asset;
use Bitrix\Main\Page\Asset;
?> ?>
</main> </main>
<?php if (!preg_match('#^/services(/|$)#', $_SERVER['REQUEST_URI'])): ?>
<section class="consultation container"> <section class="consultation container">
<h2 class="consultation__title">Нужна консультация?</h2> <h2 class="consultation__title">Нужна консультация?</h2>
<form action="#" class="consultation__form"> <form action="#" class="consultation__form" onsubmit="handleConsultationForm(this); return false;"> <input type="hidden" name="consultation_form" value="Y">
<input type="text" class="input" placeholder="Ваше имя"> <input type="text" class="input" name="name" placeholder="Ваше имя" required>
<input type="tel" class="input" placeholder="Номер телефона"> <input type="tel" class="input" name="phone" placeholder="Номер телефона" required>
<button class="button button--orange">Получить консультацию</button> <button class="button button--orange">Получить консультацию</button>
</form> </form>
<div class="consultation__info"> <div class="consultation__info">
Нажимая кнопку «Получить консультацию», вы соглашаетесь с <a href="#" class="consultation__info--link"><u>условиями Нажимая кнопку «Получить консультацию», вы соглашаетесь с <a href="#" class="consultation__info--link"><u>условиями
конфиденциальности</u></a> конфиденциальности</u></a>
</div>
</section>
<?php endif; ?>
<?php if (preg_match('#^/services(/|$)#', $_SERVER['REQUEST_URI'])): ?>
<section class="order-call container section">
<div class="order-call__wrap" style="background-image: url('<?=SITE_TEMPLATE_PATH?>/images/png/house.png')">
<form class="order-call__data" action="#" onsubmit="handleConsultationForm(this); return false;">
<input type="hidden" name="order_call_form" value="Y">
<h2 class="section-title">
Рассчитать септик <span class="orange-text">за 5 минут!</span>
</h2>
<p class="order-call__info">Наш менеджер свяжется с вами в ближайшее время</p>
<input type="text" class="input" name="name" placeholder="Ваше имя" required>
<input type="tel" class="input" name="phone" placeholder="Номер телефона" required>
<button class="button button--orange">Заказать звонок</button>
<p class="order-call__personal">
Нажимая кнопку «Заказать звонок», вы подтверждаете свое согласие на
обработку <a href="#">персональных данных</a>
</p>
</form>
</div> </div>
</section> </section>
<?php endif; ?>
<section class="tap-bar"> <section class="tap-bar">
<div class="tap-bar__item"> <div class="tap-bar__item">
<a class="tap-bar__link" href="/"> <a class="tap-bar__link" href="/">
@ -257,12 +283,76 @@
);?> );?>
</div> </div>
</div> </div>
<div class="footer-widget-icons">
<button class="footer-widget-icon" id="footer-mail-btn" type="button" title="Почта">
<picture>
<source srcset="<?=SITE_TEMPLATE_PATH?>/images/svg/email_footer.svg" type="image/webp">
<img class="choose__content-icon" src="<?=SITE_TEMPLATE_PATH?>/images/svg/email_footer.svg" alt="Smile-icon">
</picture>
</button>
<a class="footer-widget-icon" href="tel:+79260084132" title="Позвонить">
<picture>
<source srcset="<?=SITE_TEMPLATE_PATH?>/images/svg/phone_footer.svg" type="image/webp">
<img class="choose__content-icon" src="<?=SITE_TEMPLATE_PATH?>/images/svg/phone_footer.svg" alt="Smile-icon">
</picture>
</a>
</div>
<div class="footer-popup" id="footer-popup" style="display:none;">
<div class="footer-popup__content">
<button class="footer-popup__close" id="footer-popup-close" type="button">×</button>
<h2 class="footer-popup__title">Получить консультацию</h2>
<form class="footer-popup__form" action="#" onsubmit="handleConsultationForm(this); return false;">
<input type="hidden" name="footer_popup_form" value="Y">
<input type="text" class="input" name="name" placeholder="Имя" required>
<input type="tel" class="input" name="phone" placeholder="Номер телефона*" required>
<input type="email" class="input" name="email" placeholder="Почта">
<button class="button button--orange" type="submit">Отправить заявку</button>
<p class="footer-popup__personal">
Нажимая на кнопку «Оформить заказ», вы соглашаетесь с <a href="#" target="_blank">условиями конфиденциальности</a>
</p>
</form>
</div>
</div>
</footer> </footer>
<div class="cookie-banner" id="cookie-banner">
<span>Продолжая просматривать страницы веб-сайта или нажав кнопку Принять, вы соглашаетесь с <a href="#" target="_blank">политикой конфиденциальности</a></span>
<button class="button button--orange" id="cookie-accept">Принять</button>
</div>
<script type="module" src="<?= DEFAULT_TEMPLATE_PATH . '/js/main.js' ?>"></script> <script type="module" src="<?= DEFAULT_TEMPLATE_PATH . '/js/main.js' ?>"></script>
<?php <?php
Asset::getInstance()->addJs(DEFAULT_TEMPLATE_PATH . '/js/libs/fancybox.umd.js'); Asset::getInstance()->addJs(DEFAULT_TEMPLATE_PATH . '/js/libs/fancybox.umd.js');
Asset::getInstance()->addJs(DEFAULT_TEMPLATE_PATH . '/js/custom.js'); Asset::getInstance()->addJs(DEFAULT_TEMPLATE_PATH . '/js/custom.js');
?> ?>
<script>
// Открытие попапа
const mailBtn = document.getElementById('footer-mail-btn');
const popup = document.getElementById('footer-popup');
const popupClose = document.getElementById('footer-popup-close');
if (mailBtn && popup && popupClose) {
mailBtn.addEventListener('click', () => popup.style.display = 'flex');
popupClose.addEventListener('click', () => popup.style.display = 'none');
popup.addEventListener('click', (e) => { if (e.target === popup) popup.style.display = 'none'; });
}
const cookieBanner = document.getElementById('cookie-banner');
const cookieAccept = document.getElementById('cookie-accept');
if (cookieBanner && cookieAccept) {
if (localStorage.getItem('cookieAccepted')) {
cookieBanner.style.display = 'none';
}
cookieAccept.addEventListener('click', function() {
localStorage.setItem('cookieAccepted', '1');
cookieBanner.style.display = 'none';
});
}
document.querySelectorAll('[data-product]').forEach(function(button) {
button.addEventListener('click', function() {
document.querySelector('.cart-popup__wrapper').classList.remove('cart-popup__wrapper--hidden');
document.getElementById('fast_product').value = button.getAttribute('data-product');
});
});
</script>
<div class="cart-popup__wrapper cart-popup__wrapper--hidden"> <div class="cart-popup__wrapper cart-popup__wrapper--hidden">
@ -336,5 +426,6 @@
</div> </div>
</div> </div>
</body> </body>
</html> </html>

@ -5,6 +5,7 @@
$curPage = $APPLICATION->GetCurPage(false); $curPage = $APPLICATION->GetCurPage(false);
$assets = Asset::getInstance(); $assets = Asset::getInstance();
$body_class = []; $body_class = [];
global $serv;
if ($curPage == '/') { if ($curPage == '/') {
$body_class[] = 'page-index'; $body_class[] = 'page-index';
@ -12,6 +13,9 @@
if ($curPage == '/cart/') { if ($curPage == '/cart/') {
$body_class[] = 'cart'; $body_class[] = 'cart';
} }
if ($serv){
$body_class[] = 'services-page';
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@ -36,13 +40,14 @@
Asset::getInstance()->addCss(DEFAULT_TEMPLATE_PATH . '/css/custom.css'); Asset::getInstance()->addCss(DEFAULT_TEMPLATE_PATH . '/css/custom.css');
$APPLICATION->ShowHead(); $APPLICATION->ShowHead();
?> ?>
</head> </head>
<div class="cart-toast-container"></div> <div class="cart-toast-container"></div>
<body class="<?= implode(' ', $body_class) ?>"> <body class="<?= implode(' ', $body_class) ?>">
<div id="panel"> <div id="panel">
<?php $APPLICATION->ShowPanel(); ?> <?php $APPLICATION->ShowPanel(); ?>
</div> </div>
<?php if ($curPage === '/'): ?> <?php if ($curPage === '/' || $serv): ?>
<div class="index-lead" style="background-image: linear-gradient(79.3deg, #557b3080 38.69%, #c9d6ba80 89.73%), url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/background-header.png');"> <div class="index-lead" style="background-image: linear-gradient(79.3deg, #557b3080 38.69%, #c9d6ba80 89.73%), url('<?= DEFAULT_TEMPLATE_PATH ?>/img/png/background-header.png');">
<?php endif; ?> <?php endif; ?>
<div class="overflow js-overflow"></div> <div class="overflow js-overflow"></div>
@ -99,29 +104,21 @@
></path> ></path>
</svg> </svg>
</button> </button>
<button class="button button--green button--outline">Расчет септика</button> <button class="button button--green button--outline" onclick="window.location.href='/raschet-septika/'">Расчет септика</button>
<?$APPLICATION->IncludeComponent("bitrix:search.title", "main", Array( <form id="header-search-form" action="#" autocomplete="off">
"CATEGORY_0" => array( // Ограничение области поиска <div class="header__search">
0 => "iblock_catalog", <input type="text" class="input" id="header-search-input" placeholder="Поиск" />
), <div class="header__search-block" id="header-search-history-block">
"CATEGORY_0_TITLE" => "", // Название категории <div class="header__search-top" id="header-search-top">
"CATEGORY_0_iblock_catalog" => array( // Искать в информационных блоках типа "iblock_catalog" История поиска
0 => "4", <button class="button button--ghost" id="header-search-clear" type="button">Очистить</button>
), </div>
"CHECK_DATES" => "N", // Искать только в активных по дате документах <div class="header__search-histories" id="header-search-histories">
"CONTAINER_ID" => "title-search", // ID контейнера, по ширине которого будут выводиться результаты <!-- История будет подгружаться через JS -->
"INPUT_ID" => "title-search-input", // ID строки ввода поискового запроса </div>
"NUM_CATEGORIES" => "1", // Количество категорий поиска </div>
"ORDER" => "date", // Сортировка результатов </div>
"PAGE" => "", // Страница выдачи результатов поиска (доступен макрос #SITE_DIR#) </form>
"SHOW_INPUT" => "Y", // Показывать форму ввода поискового запроса
"SHOW_OTHERS" => "N", // Показывать категорию "прочее"
"TOP_COUNT" => "50", // Количество результатов в каждой категории
"USE_LANGUAGE_GUESS" => "Y", // Включить автоопределение раскладки клавиатуры
"COMPONENT_TEMPLATE" => ".default"
),
false
);?>
<?$APPLICATION->IncludeComponent( <?$APPLICATION->IncludeComponent(
"bitrix:main.include", "bitrix:main.include",
"", "",
@ -154,14 +151,14 @@
</div> </div>
<div class="catalog-overflow js-overflow"></div> <div class="catalog-overflow js-overflow"></div>
<div class="catalog"> <div class="catalog">
<div class="catalog__top"> <!-- <div class="catalog__top">
<div class="catalog__top-name">Каталог</div> <div class="catalog__top-name">Каталог</div>
<button class="catalog__top-btn button button--green button--outline js-close-catalog"> <button class="catalog__top-btn button button--green button--outline js-close-catalog">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6 6L14.4853 14.4853M6 14.4853L14.4853 6.00001" stroke="#3D3D3D" stroke-width="1.67" stroke-linecap="round"></path> <path d="M6 6L14.4853 14.4853M6 14.4853L14.4853 6.00001" stroke="#3D3D3D" stroke-width="1.67" stroke-linecap="round"></path>
</svg> </svg>
</button> </button>
</div> </div> -->
<div class="catalog__list"> <div class="catalog__list">
<?$APPLICATION->IncludeComponent( <?$APPLICATION->IncludeComponent(
"bitrix:menu", "bitrix:menu",
@ -198,66 +195,16 @@
) )
);?> );?>
<button class="button button--green button--outline">Расчет септика</button> <button class="button button--green button--outline">Расчет септика</button>
<form action="#"> <form id="mobile-search-form" action="#" autocomplete="off">
<div class="menu-mobile__search"> <div class="menu-mobile__search">
<input type="text" class="input" placeholder="Поиск" /> <input type="text" class="input" id="mobile-search-input" placeholder="Поиск" />
<div class="header__search-block"> <div class="header__search-block" id="mobile-search-history-block">
<div class="header__search-top"> <div class="header__search-top" id="mobile-search-top">
История поиска История поиска
<button class="button button--ghost" type="button">Очистить</button> <button class="button button--ghost" id="mobile-search-clear" type="button">Очистить</button>
</div> </div>
<div class="header__search-histories"> <div class="header__search-histories" id="mobile-search-histories">
<div class="header__search-history"> <!-- История будет подгружаться через JS -->
<button class="header__search-btn header__search-btn--again">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path
d="M17.5 10a7.5 7.5 0 0 1-7.4 7.5H10a7.452 7.452 0 0 1-5.148-2.047.626.626 0 0 1 .859-.909 6.25 6.25 0 1 0-.15-8.947L3.483 7.5h2.141a.625.625 0 0 1 0 1.25h-3.75a.625.625 0 0 1-.625-.625v-3.75a.625.625 0 0 1 1.25 0v2.328l2.207-2.016A7.5 7.5 0 0 1 17.5 10Z"
fill="currentColor"
></path>
<path d="M14.254 10.155a.625.625 0 0 0-.442-.183H10.57v-3.75a.625.625 0 0 0-1.25 0v4.375a.625.625 0 0 0 .625.625h3.868a.625.625 0 0 0 .442-1.067Z" fill="currentColor"></path>
</svg>
<span>ЭРА 6 midi прин</span>
</button>
<button class="header__search-btn header__search-btn--remove">
<svg width="20" height="21" viewBox="0 0 20 21" xmlns="http://www.w3.org/2000/svg">
<path d="m6 6.5 8.485 8.485m-8.485 0L14.485 6.5" stroke="currentColor" stroke-width="1.67" stroke-linecap="round"></path>
</svg>
</button>
</div>
<div class="header__search-history">
<button class="header__search-btn header__search-btn--again">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path
d="M17.5 10a7.5 7.5 0 0 1-7.4 7.5H10a7.452 7.452 0 0 1-5.148-2.047.626.626 0 0 1 .859-.909 6.25 6.25 0 1 0-.15-8.947L3.483 7.5h2.141a.625.625 0 0 1 0 1.25h-3.75a.625.625 0 0 1-.625-.625v-3.75a.625.625 0 0 1 1.25 0v2.328l2.207-2.016A7.5 7.5 0 0 1 17.5 10Z"
fill="currentColor"
></path>
<path d="M14.254 10.155a.625.625 0 0 0-.442-.183H10.57v-3.75a.625.625 0 0 0-1.25 0v4.375a.625.625 0 0 0 .625.625h3.868a.625.625 0 0 0 .442-1.067Z" fill="currentColor"></path>
</svg>
<span>ЭРА 8 long прин</span>
</button>
<button class="header__search-btn header__search-btn--remove">
<svg width="20" height="21" viewBox="0 0 20 21" xmlns="http://www.w3.org/2000/svg">
<path d="m6 6.5 8.485 8.485m-8.485 0L14.485 6.5" stroke="currentColor" stroke-width="1.67" stroke-linecap="round"></path>
</svg>
</button>
</div>
<div class="header__search-history">
<button class="header__search-btn header__search-btn--again">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path
d="M17.5 10a7.5 7.5 0 0 1-7.4 7.5H10a7.452 7.452 0 0 1-5.148-2.047.626.626 0 0 1 .859-.909 6.25 6.25 0 1 0-.15-8.947L3.483 7.5h2.141a.625.625 0 0 1 0 1.25h-3.75a.625.625 0 0 1-.625-.625v-3.75a.625.625 0 0 1 1.25 0v2.328l2.207-2.016A7.5 7.5 0 0 1 17.5 10Z"
fill="currentColor"
></path>
<path d="M14.254 10.155a.625.625 0 0 0-.442-.183H10.57v-3.75a.625.625 0 0 0-1.25 0v4.375a.625.625 0 0 0 .625.625h3.868a.625.625 0 0 0 .442-1.067Z" fill="currentColor"></path>
</svg>
<span>Жироуловитель ЭРА 4</span>
</button>
<button class="header__search-btn header__search-btn--remove">
<svg width="20" height="21" viewBox="0 0 20 21" xmlns="http://www.w3.org/2000/svg">
<path d="m6 6.5 8.485 8.485m-8.485 0L14.485 6.5" stroke="currentColor" stroke-width="1.67" stroke-linecap="round"></path>
</svg>
</button>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -279,6 +226,12 @@
<footer class="footer footer section"> <footer class="footer footer section">
<div class="container"> <div class="container">
<div class="footer__top"> <div class="footer__top">
<div class="footer__top-item">
<a href="/tseny/" class="footer__btn">
Цены
</a>
</div>
<?$APPLICATION->IncludeComponent("bitrix:menu", "footer_menu", Array( <?$APPLICATION->IncludeComponent("bitrix:menu", "footer_menu", Array(
"ALLOW_MULTI_SELECT" => "N", "ALLOW_MULTI_SELECT" => "N",
"CHILD_MENU_TYPE" => "", "CHILD_MENU_TYPE" => "",
@ -330,6 +283,8 @@
), ),
false false
);?> );?>
<div class="footer-items"> <div class="footer-items">
<?$APPLICATION->IncludeComponent("bitrix:menu", "footer_menu", Array( <?$APPLICATION->IncludeComponent("bitrix:menu", "footer_menu", Array(
"ALLOW_MULTI_SELECT" => "N", "ALLOW_MULTI_SELECT" => "N",
@ -365,6 +320,17 @@
), ),
false false
);?> );?>
<div class="footer__top-item">
<a href="/contacts/" class="footer__btn">
Контакты
</a>
</div>
<div class="footer__top-item">
<a href="/about/" class="footer__btn">
О компании
</a>
</div>
</div> </div>
</div> </div>
<div class="footer__bottom"> <div class="footer__bottom">
@ -419,11 +385,12 @@
"PATH" => "/include/footer-social.php" "PATH" => "/include/footer-social.php"
) )
);?> );?>
</div> </div>
</div> </div>
</footer> </footer>
</div> </div>
<?php if ($curPage === '/'): ?> <?php if ($curPage === '/' ): ?>
<?$APPLICATION->IncludeComponent( <?$APPLICATION->IncludeComponent(
"bitrix:news.detail", "bitrix:news.detail",
"header_lead", "header_lead",
@ -496,3 +463,4 @@
</div> </div>
<?php endif; ?> <?php endif; ?>
<main class="content" id="content"> <main class="content" id="content">
<script src="/local/templates/EraSeptik/js/search-history.js"></script>

Loading…
Cancel
Save