Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Доброго времени суток!
Периодически в техподдержку поступают вопросы вида:
Как поднять цены на все товары? Через наценки не получается
Обычно такие запросы приходят перед праздниками или после роста курса валют.
Через наценки действительно не получится в несколько кликов поднять цены сразу на весь каталог.
Если товаров на сайте много, а поднять цены надо, то выручить может 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 валюты в каталоге.
Рассмотрю варианты по доработке статьи и скрипта, оставляйте в комментариях пожелания.