Идеи для: Информационные блоки

Рейтинг: 0  
Внедрено
Предложил Апатин Ростислав 31.07.2019 16:32:15

Админка. Сортировка значений свойства тип список при быстром редактирование элементов.

В файле - bitrix/modules/iblock/admin/iblock_element_admin.php отредактировать строку 882. Добавить сортировку.

Вместо
$rs = CIBlockProperty::GetPropertyEnum($arProperty['ID']);

Сделать
$rs = CIBlockProperty::GetPropertyEnum($arProperty['ID'], ['SORT' => 'ASC', 'VALUE' => 'ASC', 'ID' => 'ASC']);

Для того чтобы при быстром редактирование элементов, значения свойства тип список были отсортированными, и можно было нормально находить и менять значение у элемента.  
Рейтинг: 0  
Ответил Жуков Евгений 31.07.2019 18:21:31
Выйдет в iblock 19.0.0. Возможен сдвиг обновления.
Рейтинг: 0  
Внедрено
Предложил DevFIX 26.04.2019 12:43:54

Остается большая фотография после ресайза "карандашиком"!

Здравствуйте!
Обнаружил неприятную особенность. Если загрузить большую картинку в поле Файл, сохранить ее и взять ссылку на это изображение. Потом уменьшить картинку встроенным редактором, "карандашиком" под фото и сохранить, и тоже взять ссылку на фото, то у нас фото будет доступно большое по первой ссылке, а уменьшенное по второй. Причем фото большое мы больше нигде не найдем, чтобы его удалить.

Теперь еще интереснее. Мы удаляем наше уменьшенное фото вообще. По второй ссылке оно исчезнет, а по первой нет. Так и лежит у нас большой файл, который мы уже никогда не найдем и не удалим.
Рейтинг: 0  
Ответил Жуков Евгений 20.05.2019 11:17:15
Выйдет в iblock 19.0.0 18.6.600
Рейтинг: 0  
Внедрено
Предложил Аглеримов Александр 27.02.2019 14:59:46

Событие "Сохранение элемента инфоблока в админке" (и в публичке в режиме правки)

Это необходимо когда у товара есть свойство "Цена в долларах" и цену товара в рублях нужно формировать на основе значения этого свойства.

Сейчас приходится задавать цену товара в обработчике события "Bitrix\Catalog\Model\Price::OnAfterUpdate". При этом приходится делать дополнительную работу -- получать текущую цену товара и сравнивать с той ценой, которую мы собираемся установить. Это необходимо делать для того, чтобы не возникала бесконечная рекурсия. При этом, если допустить ошибку в этом обработчике, то бесконечная рекурсия всё равно может наступить и сайт перестанет работать. Это неудобно и опасно.
Рейтинг: 0  
Внедрено
Предложил rzas 20.02.2019 15:31:24

Фото у категории - в списке

Структура проекта: категория - это бренд, элементы это коллекции (серии) бренда.


Задача: контент менеджер должен загружать логотипы в категории (они же бренды), он работает в списке.


Но засада - в списке категорий изображение не выводится.


Как вы этом случае поступить ?
Рейтинг: 0  
Ответил Жуков Евгений 17.09.2019 12:06:20
Вышло в iblock 18.6.600
Рейтинг: 1  
Внедрено
Предложил Могильницкий Максим 27.11.2018 16:11:58

Чтобы CIBlockPriceTools::getTreePropertyValues не забывала отдавать ID файлов

Часто возникает необходимость ресайзить картинки в справочниках (например в компоненте catalog.section) хотелось бы чтобы CIBlockPriceTools::getTreePropertyValues сохраняла доступ к ID файла

Для этого изменить блок
$arFile = CFile::GetFileArray($row['UF_FILE']);
if (!empty($arFile))
{
   $row['PICT'] = array(
      'SRC' => $arFile['SRC'],
      'WIDTH' => (int)$arFile['WIDTH'],
      'HEIGHT' => (int)$arFile['HEIGHT']
   );
}
добавив строчку
$arFile = CFile::GetFileArray($row['UF_FILE']);
if (!empty($arFile))
{
   $row['PICT'] = array(
      'ID' => $row['UF_FILE'],
      'SRC' => $arFile['SRC'],
      'WIDTH' => (int)$arFile['WIDTH'],
      'HEIGHT' => (int)$arFile['HEIGHT']
   );
}

Блок в 2-х местах
Рейтинг: 0  
Ответил Жуков Евгений 23.07.2019 11:08:53
Вообще-то в 4-х (с учетом других типов свойств). Выйдет в iblock 19.0.0. Возможен сдвиг обновления.
Рейтинг: 6  
Внедрено
Предложил Дехаев Дмитрий 02.10.2018 14:03:58

GetList: Сортировка по порядку ID в переданном массиве

На входе есть массив с ID элементов. Они находятся в массиве в том порядке, в котором нужно организовать вывод (например, получены из компонента поиска с сортировкой по релевантности)

$arItemsID = [/* массив ID элементов в нужном порядке */];
$ob = \CIblockElement::GetList(
    [
        'ID' => 'LIST', // новый тип сортировки
    ],
    ['ID' => $arItemsID]
);
while ($arItem = $ob->Fetch()) {
    // элементы выводятся в порядке попадания в массив $arItemsID 
}

Для этого нужно в функцию \CIblockElement::PrepareGetList() добавить такой код
if (count($arOrder) == 1 && $arOrder['ID'] == 'LIST' && array_key_exists('ID', $arFilter)) {
    $arSqlOrder['ID'] = 'FIELD(BE.ID, \''.implode('\',\'', $arFilter['ID']).'\')';
}
Рейтинг: 1  
Ответил Жуков Евгений 23.07.2019 11:18:16
Выйдет в iblock 18.6.700. Пример использования:
$items = [100, 41, 12, 5, 71];
$order = ['ID' => $items];
$filter = ['ID' => $items];
$iterator = \CIBlockElement::GetList($order, $filter, ...
Рейтинг: 0  
Внедрено
Предложил Вадим 10.08.2018 07:53:04

Экспорт товаров вконтакте с неправильным ключом доступа убивает редактирование разделов каталога

Столкнулись с такой проблемой, по непонятной причине устарел или что-то случилось с ключом доступа к модулю Экспорт товаров вконтакте

После этого при редактировании разделов вылезла такая ошибка
http://www.imgup.ru/images2/2dzfx3411313.png

Должна либо не показываться вкладка товары вконтакте при редактировании раздела, либо должна быть выведена всплывающая строка об ошибке
Рейтинг: 0  
Ответил Жуков Евгений 25.10.2018 17:42:23
Исправлено в sale 17.0.28
Рейтинг: 0.1682  
Внедрено
Предложил Земцова Юлия 09.11.2017 08:27:23

Создание элемента в форме подбора

 ловлю себя на мысли, что при выборе http://prntscr.com/h6f4fi, допустим, какого-то значения св-ва (с типом = привязка к элементу) нужного в списке не создано - нельзя ли добавить кнопку "создать" в форме сразу? http://prntscr.com/h6f4jz как-то так
чтоб не идти в раздел инфоблоков с контентом и не создавать сначала элемент, а потом возвращаться на этап подбора..
Рейтинг: 1.2518  
Ответил Жуков Евгений 09.11.2017 11:07:51
Используйте свойство типа "Привязка к элементам с автозаполнением"
Рейтинг: 0.4624  
Внедрено
Предложил AndreyChursin 07.07.2017 23:37:50

Редактор фото для одиночного свойства типа "Файл"

Необходимо добавить редактор фотографий для одиночных файлов!
Для множественного свойства "файл" редактор изображений доступен, но для одиночных - нет!
Рейтинг: 0  
Ответил Жуков Евгений 27.07.2017 14:49:46
Выйдет в iblock 17.0.11. Возможен сдвиг обновления.
Рейтинг: 0  
Внедрено
Предложил Воробьев Денис 02.12.2016 12:38:50

Настраиваемое отображение свойств элементов (товаров) по разделам каталога

Есть каталог товаров, 20 разделов. В каждом разделе - у товара 10-15 свойств. Итого, при редактировании товара выводятся все 300 свойств и работать с этим в админке становится нереально.

Идея: дать возможность в инфоблоке указывать для каждого раздела какие свойства отображать при редактировании (возможно - и при отображении в публичной части)
Рейтинг: 0.4387  
Ответил Жуков Евгений 02.12.2016 13:44:15
Это вышло в релизе 12.0.0
Рейтинг: 0.7991  
Внедрено
Предложил Будагов Алексей 26.11.2016 23:12:15

Добавить SHOW_DEACTIVATED в news.detail

По заголовку уже все понятно. В catalog.element добавили возможность выводить неактивные элементы, а про news.detail забыли.

Пример использования: можно для администраторов выводить неактивные элементы, дабы они могли посмотреть внешний вид неопубликованных новостей на сайте. Работы на пару строк кода.
Рейтинг: -0.4613  
Ответил Жуков Евгений 02.12.2016 13:45:17
Это решается через документооборот.
Рейтинг: 0  
Внедрено
Предложил Баринов Кристиан 09.11.2016 15:22:47

SetResultCacheKeys

Создать параметр для компонентов (тип array), использующих кеширование, который будет передавать дополнительные ключи массива $arResult для их сохранения в кеше (ф-ция SetResultCacheKeys) с последующим извлечением в файле component_epilog.php. Сейчас в компонентах сохраняется предустановленный и неизменяемый набор ключей в кеш. Предлагаю целиком заменить его на массив, передаваемый из параметра. А предустановленные ключи передать через параметр

Цель такого решения: не придется кастомить компонент всего лишь для того, чтобы сохранить и получить еще один ключ массива $arResult в component_epilog.php
Рейтинг: 1.1804  
Ответил Жуков Евгений 09.11.2016 20:35:47
Вы можете добавить свой ключ для сохранения в result_modifier.php, либо сохранить нужные данные в переменную $templateData в template.php
Рейтинг: 3.9726  
Внедрено
Предложил Валерий Чебан 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 больше не сохраняется вообще - в нем больше нет необходимости
Рейтинг: 4.4576  
Внедрено
Предложил Зайцев Артемий 29.09.2016 17:02:48

Задокументировать \CIBlockElement::GetPropertyValues

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

Используется в умном фильтре. Врядли её поведение будут менять.
Рейтинг: 1.2373  
Внедрено
Предложил Ляпцев Максим 02.09.2016 13:55:29

Имя highloadblock

Когда добавляем в инфоблоке свойство типа "справочник" можно создать можно тут же создать хайлод блок. Имя можно написать в camel case но при сохранении все буквы переводятся в нижний регистр. Это неудобно. Имя таблицы задается автоматически, что тоже неудобно - если название состоит из нескольких слов, то они объединяются в одно. Можно создать правило - если Буква в верхнем регистре то ставить перед ней нижнее подчеркивание. Либо дать возможность задавать (редактировать) имя таблицы. Приходится заходить в hl блоки и менять название сущности и таблицы.
Пример: Нужно создать справочник с некими типами проектов:
название заменяется на Catalogtypes вместо читаемого СatalogTypes
создается таблица b_hlbd_projecttypes вместо читаемой b_hlbd_project_types
Рейтинг: 0  
Ответил Долганин Антон 11.01.2017 18:18:14
Возможность задавать свои произвольные именования (мультиязычные) выйдет в 17.0.0.
Рейтинг: 4.9676  
Внедрено
Предложил Долганин Антон 08.07.2016 07:30:57

Галки свойств в настройках инфоблока - добавить тайтлы

Даже много лет работая с Битрикс, не всегда помнишь в каком порядке идут эти галки в настройках свойств ИБ. Это обязательность, множественность, активность. Приходится мотать вверх, если св-в много. Поможет мелочь - тайтл к чекбоксам.

Рейтинг: 22.0495  
Ответил Жуков Евгений 27.07.2016 18:45:24
Выйдет в iblock 16.5.3 (ориентировочно, возможен сдвиг в ту или иную сторону)
Рейтинг: 15.3461  
Внедрено
Предложил Калинин Никита 17.06.2016 16:58:21

Сброс кеша при наступлении даты начала/окончания активности элемента ИБ

При большом времени жизни кеша возникает проблема отложенных публикаций.

Например, если в любом типовом решении создать новость или что-то подобное с временем начала активности на несколько минут позже текущего, то при наступлении этого момента времени ничего не случится. Запись появится только при истечении срока кеширования, ручном сбросе кеша или редактировании другого элемента ИБ, что приведет к сбросу тегированного кеша.

Предложение: научить компоненты/API ИБ учитывать время начала и окончания активности.
Рейтинг: 0  
Ответил Жуков Евгений 24.09.2019 18:11:16
Выйдет в iblock 19.0.0 (возможен сдвиг обновления).