Есть 2 магазина, в одном из них похожие товары выводятся из той группы, в которой находится товар (с этим проблем нет), а во второй нужно выводить товары из групп, указанных в дополнительном свойстве - группы интернет магазина. Как временное решение использую шорткод, но хотелось бы выводить товары рандомно и иногда больше, чем из одной группы за раз
$oXmlSameItems = Core::factory('Core_Xml_Entity')->name('same_items');
$Shop_Controller_Show->addEntity($oXmlSameItems);
$oShop = $Shop_Controller_Show->getEntity();
$oShopId = $oShop->id;
if ($oShopId = 1) {
$oCurItem = Core_Entity::factory('Shop_Item', $Shop_Controller_Show->item);
$shop_group_id = $oCurItem->shop_group_id;
$oShop_Same_Items = $oShop->Shop_Items;
$oShop_Same_Items
->queryBuilder()
->where('shop_items.id', '!=', intval($oCurItem->id))
->where('shop_items.active', '=', 1)
->where('shop_items.shortcut_id', '=', 0)
->where('shop_items.shop_group_id', '=', $shop_group_id)
->limit(16)
->clearOrderBy()
->orderBy('RAND()');
$aShop_Same_Items = $oShop_Same_Items->findAll();
foreach($aShop_Same_Items as $oShop_Same_Item)
{
$oXmlSameItems->addEntity(
$oShop_Same_Item->clearEntities()
);
}
}
if ($oShopId = 2) {
$oCurItem = Core_Entity::factory('Shop_Item', $Shop_Controller_Show->item);
$oCurItemId = $oCurItem->id; // Получаем айди товара
$oProperty = Core_Entity::factory('Property', 13); // получение значений дополнительных свойств для свойства группа товаров
// Массив значений свойства группа товаров для информационного товара
$aPropertyValues = $oProperty->getValues($oCurItemId);
if (!empty($aPropertyValues)) {
// получаем объект второго магазина
function getIds($it) {
returm $it->id; // колбек для получения массива айди групп
};
$aPropertyValues = array_map('getIds',$aPropertyValues)
print_r($aPropertyValues);
$oShopTwo = Core_Entity::factory('Shop', 1)
$oShop_Same_Items = $oShopTwo->Shop_Items;
$oShop_Same_Items
->queryBuilder()
->where('shop_items.active', '=', 1)
->where('shop_items.shortcut_id', '=', 0)
->where('shop_items.shop_group_id', 'IN', $aPropertyValues)
->limit(16)
->clearOrderBy()
->orderBy('RAND()');
$aShop_Same_Items = $oShop_Same_Items->findAll();
foreach($aShop_Same_Items as $oShop_Same_Item)
{
$oXmlSameItems->addEntity(
$oShop_Same_Item->clearEntities()
);
}
}
}