Хочется написать небольшое руководство по настройке фильтра по свойству для компонентов. В обращениях в техподдержку часто спрашивают: «Как настроить слайдер, чтобы он отображал только товары-спецпредложения?». Это не так просто неподготовленному пользователю, тем более, что в новом компоненте нет опции, которая была в старом компоненте bitrix:eshop.catalog.top:
Итак, приступим.
ВНИМАНИЕ! С версии 17 модуля "информационные блоки" фильтр можно настроить через интерфейс, писать код не нужно:
Если же решили идти старым путём, то можете читать дальше.
Для начала, нужно создать свойство инфоблока (если его нет). Создаём свойство типа «список», вида «флажки», с одним значением «да». Запомните символьный код свойства (FOR_SLIDER) – это важно.
Сохраняем все наши нововведения, переходим к списку товаров. Я настроил список товаров так, чтобы отображалось свойство «Отображать в слайдере». Так будет проще устанавливать свойство и вам нагляднее:
Отмечаем нужные товары и нажимаем внизу страницы на иконку редактирования, выставляем свойство нужным товарам, сохраняем:
Теперь самое главное, нужно установить фильтр по свойству. Открываем файл, в котором располагается наш компонент-слайдер bitrix:catalog.top. В административной части сайта переходим в «Контент > Структура сайта > Файлы и папки». Находим файл sect_inc.php, открываем его на редактирование в режиме PHP (код вызова компонента на вашем сайте может отличаться, это пример для слайдера в стандартном решении). Вставляем код (заметьте где в коде используется наш символьный код свойства):
Сохраняем изменения. Почти всё! Теперь заходим в публичную часть сайта. Возможно, что слайдер уже будет показывать товары выбранные по созданному свойству, но нужно обязательно проверить один момент. Включаем режим правки (переключатель на панели администрирования), наводим курсор на слайдер, нажимаем шестеренку. Попадаем в параметры компонента, проверяем что написано в поле «Имя массива со значениями фильтра для фильтрации элементов». Там нужно написать (если не написано) arrFilter:
Сохраняем. Теперь слайдер отображает только те товары, у которых установлено свойство «Отображать в слайдере»:
Хочу заметить, что такая фильтрация доступна для многих компонентов и использовать её можно по разному. Подробнее о том, по каким полям/свойствам можно производить фильтрацию, можно прочитать в нашей документации: http://dev.1c-bitrix.ru/api_help/iblo...etlist.php
добрый день! а не подскажете, если новинок много, их можно как то вывести все, но не в одну строку? просто если выбирать количество, то оно (даже если 90) выведется в одну строчку, а как вывести все 90 но по 5 в строке? или лучше использовать не топ элементов?
Сначала немного теории. В битриксе у товара есть флаг CATALOG_AVAILABLE, который показывает, доступен товар для покупки или нет. На основе чего рассчитывается этот параметр?
Флаг CATALOG_AVAILABLE устанавливается в значение Y (доступен), если: 1. Включен количественный учет (с учетом глобальных настроек в модуле «Торговый каталог»). 2. Доступное количество товара больше 0 (не путать с количеством на складе). 3. Если количество товаров 0, но им разрешена покупка при 0 (с учетом глобальных настроек в модуле «Торговый каталог»). Иначе устанавливается флаг недоступности.
Товар:
Модуль "торговый каталог":
Внимание! На данный момент, флаг CATALOG_AVAILABLE корректно устанавливается только для простых товаров, у которых нет торговых предложений.
Все ниже описанное может вам помочь, если у вас простой каталог без торговых предложений.
Теперь задача. У вас есть на сайте товары, которые недоступны для покупки (нулевое количество, например). Если сделать экспорт простого каталога в Яндекс, то получится файл, где у товаров которого будут стоят атрибуты available=«true" если товар доступен для покупки и available=«false», если товар недоступен для покупки. Вот пример такого файла:
Для наглядности у меня всего 2 товара: один в наличии, другой нет.
А что делать, если вы хотите, чтобы в файл экспорта вообще не попадали товары, которые недоступны для покупки? На данный момент выход один - кастомизация скрипта выгрузки. Давайте приступать. Для начала нужно скопировать стандартные скрипты, так как мы помним, что ядро продукта изменять нельзя.
Открываем админку. Заходим в папку /bitrix/modules/catalog/load Находим 2 файла yandex_run.php и yandex_setup.php, отмечаем оба файла галочкой и копируем их в папку /bitrix/php_interface/include/catalog_export
Переименовываем файлы в yandex_custom_run.php и yandex_custom_setup.php соответственно.
Теперь у нас в админе появился новый способ выгрузки, используя наши скопированные скрипты.
Открываем файл /bitrix/php_interface/include/catalog_export/yandex_custom_run.php в режиме редактирования php и ищем строку:
Сохраняем изменения. Теперь делаем выгрузку через наш файл и видим, что в файле отсутствуют товары, которые недоступны для покупки.
А что делать тем, у кого используются торговые предложения? Общего решения на данный момент нет, но пока проблема может быть решена опять же только через кастомизацию. Например, можно создать свойство инфоблока, в котором хранить признак доступности товара с торговыми предложениями. В зависимости от значения свойства, устанавливать соответствующий флаг. Минус в том, что нужно следить за актуальностью значений свойства во всех товарах.
Доброго времени суток! Периодически в техподдержку поступают вопросы вида:
Как поднять цены на все товары? Через наценки не получается
Обычно такие запросы приходят перед праздниками или после роста курса валют. Через наценки действительно не получится в несколько кликов поднять цены сразу на весь каталог. Если товаров на сайте много, а поднять цены надо, то выручить может API.
Предупреждение: Прежде чем пользоваться скриптом из данной статьи, убедитесь, что у вас есть резервная копия сайта или файл экспорта каталога, чтобы в случае непредвиденных обстоятельств можно было вернуть цены обратно!
Рассмотрим простейший пример каталога без торговых предложений. Есть 5 товаров в каталоге, в колонке справа видно цену этих товаров.
Перед нами встала задача поднять цену на эти товары на 30%. Первым делом, собираем нужную нам информацию. Смотрим ID инфоблока, в котором хранятся товары. Это можно сделать разными способами, один из самых простых:
ID нашего инфоблока – 4. Теперь надо выяснить ID типа цены и код валюты. Открываем карточку товара и смотрим, в каком типе цены мы храним цену, а так же какая валюта используется:
После этого переходим на страницу «Рабочий стол – Магазин – Настройки - Типы цен» и находим ID нашего типа цены:
ID нашего типа цены – 1. Валюта RUB
Переходим непосредственно к скрипту. Скрипт нужно скопировать и вставить на странице "Рабочий стол - Настройки - Инструменты - Командная PHP-строка". Сам скрипт расположен чуть ниже в статье. Не запускайте код сразу! Сначала нужно внести данные, которые мы получили. В строке:
"CATALOG_GROUP_ID" => 1, //ID типа цены
мы вносим ID типа цены (1).
"CURRENCY" => "RUB" // Валюта
В этой строке указываем валюту.
"ELEMENT_IBLOCK_ID" => 4, //ID инфоблока с товарами
Тут указываем ID нашего инфоблока с товарами (4).
Теперь самое главное, строка в которой меняется цена.
$UpdatedPrice = $ar_res["PRICE"] * 1.3; // Здесь мы меняем цену
Если перевести на человеческий язык, то получится так: Новая цена = старая цена * 1.3 (то есть умножили старую цену на 130%).
Теперь весь код полностью:
Cmodule::IncludeModule("catalog");
$db_res = CPrice::GetList(
array(),
array(
"ELEMENT_IBLOCK_ID" => 4, //ID инфоблока с товарами
"CATALOG_GROUP_ID" => 1, //ID типа цены
"CURRENCY" => "RUB" // Валюта
)
);
while($ar_res = $db_res->Fetch())
{
$UpdatedPrice = $ar_res["PRICE"] * 1.3; // Здесь мы меняем цену
CPrice::Update($ar_res["ID"], Array("PRICE" => $UpdatedPrice));
}
Я выполнил этот код и цены обновились на все товары на 30%:
На этом всё! Данный код можно использовать как в чистом виде, если у вас простой каталог, либо как заготовку для доработки. Код не подойдет тем, у кого, например, используется 2 валюты в каталоге. Рассмотрю варианты по доработке статьи и скрипта, оставляйте в комментариях пожелания.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».