Рейтинг: 1  
На голосовании
Предложил Пользователь 261381 25.11.2017 19:30:24

catalog.element статус добавления в корзину у оферов

Все в принципе в заголовке написал.
При добавлении в корзину товара с определенной ценой принято менять кнопку на перейти в корзину, например. Но при переключении офера нужно возвращать кнопку в исходное положение. И при возврате на добавленный товар отображать кнопку что товар добавлен.
С помощью js все делается просто, но после перезагрузки страницы опять не ясно какое из тп уже в корзине. Нужно просто доп. свойство у каждого офера - в корзине он или нет. Актуально и для обычных товаров.
Рейтинг: 2.6159  
На голосовании
Предложил Пользователь 261381 20.06.2017 16:54:47

Разделить шаблон на подключаемые файлы

Шаблон catalog.element очень большой и сложный. Многие блоки в нем независимые. Многие отображаются при условии использования торговых предложений. Было бы проще ориентироваться в шаблоне если эти блоки вынести в подключаемые файлы, которые будут лежать рядом (скрытие, инкапсуляция). Например
_slider.php
_properties.php
_template.php
Это упросит поиск нужного блока для редактирования. Все таки в шаблоне больше тысячи строк. Рекомендация для разработчиков. Вряд ли скоро будут перерабатываться шаблоны. Сейчас приходится просто удалять все неиспользуемые блоки для упрощения восприятия.
Рейтинг: 3.9726  
Внедрено
Предложил Пользователь 17890 06.10.2016 18:14:12

bitrix:catalog.element - убрать лишние данные из кеша

Кеш на компоненте занимает мегабайты, в случае если у секций есть длинные описания, либо много свойств.

Нужно это поправить.    

1/ Массив $arResult['SECTION']  и подмассив $arResult["SECTION"]["PATH"]:
зачем сохранять в кеше все поля секций, даже SEARCHABLE_CONTENT?
для сео они все не нужны.

2/ Зачем сохранять все свойства элемента в кеш и даже пустые?
Массив $arResult['PROPERTIES'] - зачем все сохраняются? для сео и прочего лишь некоторые ведь нужны...
Надо лишние убирать.

После удаления лишнего из кеша, объем этого самого кеша уменьшается с 3мб до 90кб.
Считаю, что нужно внедрить это в компонент bitrix:catalog.element.

Пример решения через result_modifier.php компонента bitrix:catalog.element:
// clear unused cache fields
foreach ($arResult['PROPERTIES'] as $k => $prop) {
   if (trim($prop['VALUE']) == '') {
      unset($arResult['PROPERTIES'][$k]);
   }
}

$arDeleteSectionKeys = array('SEARCHABLE_CONTENT', '~SEARCHABLE_CONTENT');
foreach ($arResult['SECTION'] as $k => $s) {
   if ($k == 'PATH') {
      foreach ($s as $ks => $ss) {
         foreach ($ss as $kss => $ss2) {
            if (in_array($kss, $arDeleteSectionKeys)) {
               unset($arResult['SECTION'][$k][$ks][$kss]);
            }
         }
      }
   } else if (in_array($k, $arDeleteSectionKeys)) {
      unset($arResult['SECTION'][$k]);
   }
} 
Рейтинг: 0.0185  
Ответил Жуков Евгений 25.10.2016 15:08:47
iblock 16.6.1. изменения затронут так же news.detail.
п.1 Оставили только часть полей
п.2. Ключ PROPERTIES больше не сохраняется вообще - в нем больше нет необходимости
Рейтинг: 3.8444  
Новая
Предложил Пользователь 129131 03.03.2015 14:01:16

...

...