Инструменты пользователя

Инструменты сайта


website:upravlenie_topovymi_tovarami

Введение

Данная статья рассказывает о технологии управления каталогом товаров интернет-магазина, и с теми или иными вариациями применима к большинству сайтов, использующих решение для создания интернет-магазина на платформе 1С-Битрикс. В основе технологии лежит идея управления счётчиком просмотров товара с целью вывода его на первый план (либо наоборот) при использовании сортировки по популярности (среднему количеству просмотров).

Общая методика

Управление счётчиками осуществляется путём модификации базы данных инсталляции 1С-Битрикс: Управление сайтом.

Инструменты и окружение

Данное руководство написано для использования в следующем стеке технологий:

  • 1C-Битрикс Управление сайтом 14
  • 1С 8.2 с конфигурацией Управление торговлей

В статье рассматривается подход с использованием веб-браузера и администраторского интерфейса 1С-Битрикс.

Практическая часть

Вариант 1. Простой

Важное предупреждение: Будьте внимательны при выполнении любых запросов, изменяющих содержимое базы данных. Неосторожные действия могут иметь непредсказуемые последствия.

Допустим, нам нужно сделать товар более «популярным». В самом простом случае потребуется его ID. Чтобы узнать ID позиции каталога, нужно открыть в браузере интерфейс администрирования 1С-Битрикс (например, http://avtozip.su/bitrix/admin/). После процедуры аутентификации нужно найти товар в каталоге: Контент ⇒ Каталог ⇒ <Название каталога>. Нам понадобится значение поля ID.

Далее, открываем интерфейс для создания SQL-запроса: Настройки ⇒ Инструменты ⇒ SQL запрос. В форме редактирования вводим запрос следующего вида:

UPDATE b_iblock_element SET SHOW_COUNTER = 1000000 WHERE ID = 100500

В данном примере будет установлено значение количества просмотров в 1000000 для товара с ID 100500. Прямое задание значения является достаточно грубым подходом, делающим невозможной последующую оценку реальной популярности товара. Поэтому рассмотрим чуть более сложный пример:

UPDATE b_iblock_element SET SHOW_COUNTER = SHOW_COUNTER + 1000000 WHERE ID = 100500

В данном случае мы увеличиваем текущее значение счётчика просмотров на один миллион. В дальнейшем мы можем вычесть этот миллион, получив фактическое число просмотров. Чтобы одним запросом изменить значения счётчика сразу для нескольких товаров, нужно изменить запрос следующим образом:

UPDATE b_iblock_element SET SHOW_COUNTER = SHOW_COUNTER + 1000000 WHERE ID = 100500 OR ID = 9000 OR ID = 146

где 100500, 9000 и 146 — ID разных товаров. При всей своей простоте, данный способ обладает одним существенным недостатком. ID не является постоянной величиной и не привязан к номенклатурной позиции 1С со всеми вытекающими последствиями. Поэтому рассмотрим немного более сложный подход.

Вариант 2. Посложнее

Единственное отличие данного варианта от предыдущего — использование более надёжного идентификатора. Теперь мы будем использовать XML_ID, значение которого привязывается к конкретной позиции номенклатуры 1С. Чтобы получить XML_ID нужно использовать запрос следующего вида:

SELECT XML_ID FROM b_iblock_element WHERE ID = 100500

В нижней части страницы будет выведен результат примерно такого вида:

ca06e7d4-b1e9-11dc-a530-000e0c6b5b90

В дальнейшем используем это значение аналогичным c ID образом:

UPDATE b_iblock_element SET SHOW_COUNTER = SHOW_COUNTER + 1000000 WHERE XML_ID = ca06e7d4-b1e9-11dc-a530-000e0c6b5b90

Обновление сразу нескольких счётчиков происходит аналогично последнему примеру в http://tserver/dokuwiki/doku.php?id=unlimited_site_works:upravlenie_topovymi_tovarami#variant_1_prostoj Данный вариант лучше тем, что позволит использовать этот же запрос даже после обновления каталога, а также вести учёт изменений.

Вариант 3. Самый интересный

Данный вариант предполагает вовлечение 1С и обладает рядом преимуществ:

  • Не требует доступа к администраторской панели 1С-Битрикс (при условии наличия других интерфейсов к БД)
  • Проще в плане учёта изменений
  • Содержит минимум шагов

Для использования данного способа нам понадобится код товара из номенклатуры 1С. Запрос имеет следующий вид:

UPDATE b_iblock_element SET SHOW_COUNTER = SHOW_COUNTER + 100000 WHERE ID =
(SELECT MAX(IBLOCK_ELEMENT_ID)
	FROM b_iblock_element_property
	WHERE IBLOCK_PROPERTY_ID = 391
		AND DESCRIPTION = 'Код'
		AND VALUE = 39201)

Получить количество просмотров для позиции можно так:

SELECT SHOW_COUNTER FROM b_iblock_element WHERE ID =
(SELECT MAX(IBLOCK_ELEMENT_ID)
	FROM b_iblock_element_property
	WHERE IBLOCK_PROPERTY_ID = 391
		AND DESCRIPTION = 'Код'
		AND VALUE = 39201)

FIXME сделать, чтобы UPDATE работал

/var/www/html/data/pages/website/upravlenie_topovymi_tovarami.txt · Последнее изменение: 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki