Сравнение товаров на витрине
Начиная с версии 8.21 в Shop-Script есть возможность по-разному сравнивать товары на специальной странице сравнения на витрине интернет-магазина:
- обобщённое сравнение товаров;
- сравнение выбранных модификаций товаров.
Обобщённое сравнение
В этом случае на странице сравнения отображаются значения характеристик всех модификаций товара.
Если какая-то характеристика не заполнена в свойствах некоторых модификаций, но для этой характеристики задано значение по умолчанию в свойствах всего товара, то это значение по умолчанию также отображается в таблице сравнения.
Сравнение выбранных модификаций
В этом случае на странице сравнения пользователь может выбрать одну из модификаций для каждого товара. В таблице отображаются значения характеристик выбранной модификации.
Если какая-то характеристика не заполнена в свойствах выбранной модификации, но для этой характеристики сохранено значение по умолчанию в свойствах всего товара, то отображается это значение по умолчанию.
Реализация сравнения товаров в теме дизайна
Тема дизайна может поддерживать любой из этих способов сравнения. Или сразу оба, позволяя администратору магазина выбрать в настройках, какой способ он считает наиболее подходящим для своего магазина.
Обобщённое сравнение
Для этого способа нужно получать значения характеристик из массива $products[id].features
, который доступен в шаблоне страницы сравнения compare.html
, и показать эти значения пользователю, например, в виде таблицы.
Цену товара нужно показывать в виде диапазона — с учётом цен всех модификаций товара. Если у товара только 1 модификация или если у всех модификаций одинаковая цена, то нужно показывать одно значение.
Сравнение выбранных модификаций
На странице сравнения нужно разместить инструменты для выбора модификации товара, которые позволяют обновлять содержимое страницы сравнения, показывая пользователю только свойства выбранной модификации и скрывая свойства других модификаций.
Для реализации этого способа нужно проверять доступность заполнения характеристики в свойствах артикулов товаров. Эту информацию можно получить в массиве $features
из булевых значений с ключом 'available_for_sku'
.
- Если характеристика может заполняться в свойствах артикулов, то её значения нужно получать из свойств выбранной модификации в массиве
$products[id].skus[sku_id].features
. Если в свойствах модификации характеристика не заполнена, то нужно использовать значение из общих свойств товара (в массиве$products[id].features
), если оно заполнено. - Если характеристика не может заполняться в свойствах артикулов, то её значение нужно получать только из массива
$products[id].features
.
На странице сравнения нужно показывать только цену выбранной модификации товара.
Поддержка версий Shop-Script ниже 8.21
Чтобы поддерживать логику сравнения товаров для предыдущих версий Shop-Script, нужно учитывать следующее:
- Переменная
$products[id].features
содержала только общие характеристики товара — без характеристик модификаций. - Характеристики модификаций товара не передавались в шаблон страницы сравнения в виде массива
$products[id].skus[sku_id].features
.
Это было похоже на обобщённое сравнение товаров, но без учёта характеристик, заданных в свойствах модификаций.