Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?

#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
http://medvejonok.com/summer/art-017/

технически так: в типовой динамической после ShowItem добавляется блок с выводом похожих

$shop->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);

//Похожие товары
$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 133); //Получаем значение свойства "Материал" текущего товара

$element['type'] = 1;
$element['prefix'] = 'and';
$element['property_id'] = 133;
$element['if'] = '=';
$element['value'] = $row['shop_properties_items_value'];
$element['sufix'] = '';
$param['select'][] = $element;
$param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
$param['items_begin'] = 0;
$param['items_on_page'] = 8; //Количество товаров
$param['NotIn'] = $GLOBALS['shop_item_path']['item']; //Исключаем текущий товар
$shop->ShowShop($current_shop_id, 'ПохожиеТовары',  $param);
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
$element['property_id'] = 133;
это я так понимаю ИД свойства? а если по нескольким свойствам выводить аналоги, а не только по одному.

предположим: "кожа" совпало или "металл". т.е у товаров около 20 свойств, и вот при нахождении похожих свойств выводило?
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
да, 133 - ID доп. свойства материал, можно и по нескольким свойствам
$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 133);
$element['type'] = 1;
$element['prefix'] = 'and ('; //Префикс для первого свойства в списке
$element['property_id'] = 133;
$element['if'] = '=';
$element['value'] = $row['shop_properties_items_value'];
$element['sufix'] = '';
$param['select'][] = $element;

$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 134);
$element['type'] = 1;
$element['prefix'] = ' or ';
$element['property_id'] = 134;
$element['if'] = '=';
$element['value'] = $row['shop_properties_items_value'];
$element['sufix'] = '';
$param['select'][] = $element;

...

$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 135);
$element['type'] = 1;
$element['prefix'] = ' or ';
$element['property_id'] = 135;
$element['if'] = '=';
$element['value'] = $row['shop_properties_items_value'];
$element['sufix'] = ')'; //Суффикс для последнего свойства в списке
$param['select'][] = $element;

$param['sql_group_by'] = "GROUP BY shop_items_catalog_table.shop_items_catalog_item_id ";
$param['sql_having'] = "HAVING COUNT(shop_properties_items_table.shop_properties_items_id) = 3"; //3 - общее количество доп. свойств

$param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
$param['items_begin'] = 0;
$param['items_on_page'] = 8; //Количество товаров
$param['NotIn'] = $GLOBALS['shop_item_path']['item']; //Исключаем текущий товар
$shop->ShowShop($current_shop_id, 'ПохожиеТовары',  $param);


будут выводиться товары, у которых совпадают все доп. свойства
можно составить фильтр под любую другую логику
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
т.е всегда должно быть перечисление?

а можно наверное через звездочку задать? чтобы жестко не прописывать список?
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
со звездочкой не знаю..что именно звездочкой задавать?
напишите поподробнее как отбирать похожие, составим фильтр )
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
предположим есть категории обувь и костюмы.
у каждой категории свой набор свойств товара, и их около 15.

как задать, чтобы в категории "обувь" при совпадении из этих 15 свойств выдавало в блоке АНАЛОГичные?)

тоже самое касается категории "костюмы"

мы же не можем прописывать для каждой категории свой фильтр?) наверное должно быть что-то универсальное, что определяет в какой категории находится товар и какие свойства у него имеются.
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
тогда можно отпределить принадлежность по наличию свойства
допустим у ботинок есть свойство "Материал ботинка", у костюма - "Материал костюма"
//Определяем принадлежность к группе
$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 133); //ID свойства - Материал ботинка
if (isset($row) && $row['shop_properties_items_value']!='') {
//Мы в категории Ботинки, фильтр по свойствам ботинков
}

$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 134); //ID свойства - Материал костюма
if (isset($row) && $row['shop_properties_items_value']!='') {
//Мы в категории Костюмы, фильтр по свойствам костюма
}

можно конечно в цикле перебирать все имеющиеся у товара свойства, но тогда будут находиться только товары у которых четко совпадают все 15 свойств
если есть какие то неважные свойства, получится не очень гибко
есть товар, допустим, Черные кожаные ботинки с белыми шнурками, и в аналогичных будут находиться только такие же товары ) а надо искать только кожаные
вручную можно учесть любые условия
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
по идее достаточно искать внутри группы... так как аналогичные товары будут располагаться внутри нее...
и тут точно не получится что костюм и зубная щетка не сойдутся вместе при, положим, цвет: белый ))))

главное не допускать в группе наличия и товара в корне данной группы(или подгруппы) и наличия в ней еще и других подгрупп... (ведь подгруппы то смешаются с товаром в корне группы....)

так что создав грамотную классификацию товаров можно упростить задачу...  (например выводя аналогичный товар внутри карточки товара... в таком случае мы можем быть уверены что находимся в группе где точно есть аналогичный товар но с разными характеристиками и что ниже группы этого товара - нет других подгрупп)... и значительно упростит задачу с перебором групп и недопускания что магазин сочтет аналогами неаналогичные товары...
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
MedzhitovAs, да, вилдимо как то так и надо) осталось узнать код для такого блока)
#
Re: Формирование АНАЛОГИЧНЫХ товаров. Есть ли такое?
думается мне, что вполне достаточно и того кода который приведен на этом листе наверху....
вот этот
$shop->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);

//Похожие товары
$row = $shop->GetValueItemProperty($GLOBALS['shop_item_path']['item'], 133); //Получаем значение свойства "Материал" текущего товара

$element['type'] = 1;
$element['prefix'] = 'and';
$element['property_id'] = 133;
$element['if'] = '=';
$element['value'] = $row['shop_properties_items_value'];
$element['sufix'] = '';
$param['select'][] = $element;
$param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
$param['items_begin'] = 0;
$param['items_on_page'] = 8; //Количество товаров
$param['NotIn'] = $GLOBALS['shop_item_path']['item']; //Исключаем текущий товар
$shop->ShowShop($current_shop_id, 'ПохожиеТовары',  $param);


ведь структура каталога у нас такова что в группе, к которой принадлежит какой либо товар - все товары одного вида.... положим структура пути к группе такова "обувь -> мужская обувь -> полусапоги"...
а значит что в этой группе у нас ТОЛЬКО полусапоги, тоесть аналогичные товары, просто с разными свойствами по типу материала, расмеров, уветов и прочей ереси... и мы будем точно знать что данный скрипт подсунет по допсвойству материал именно  полусапоги, а не мокасины(которые лежат в другой группе) или сандалии... или не дай боже женские платформы))))) посему достаточно выбрать пару-тройку основных дополнительных свойств, которые и присобачим к каждому товару... положим это цвет и материал...
хотя, на мой взгляд, чем проще - тем лучше... свести все к одному допсвойству... например к материалу... а цвет - это вторично...
это и упростит и уменьшит размеры кода...


Авторизация