Вывести в товаре одного магазина "похожие товары" из другого

#
Вывести в товаре одного магазина "похожие товары" из другого
Есть 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()
                );
            }
        }
   }
Модератор
#
Re: Вывести в товаре одного магазина "похожие товары" из другого
maria.ats,
указываете идентификаторы групп в свойстве, в хуке shop_item.onBeforeGetXml получаете значение свойства, выбираете нужные товары и добавляете их товару.
Авторизация