Решается легко через ORM. Вот пример:
if ($Shop_Controller_Show->item)
{
$limit = 6;
$oShop = $Shop_Controller_Show->getEntity();
/**
* Похожие
*/
// XML-сущность, к которй будут добавляться похожие приложения
$oSimilarXmlEntity = Core::factory('Core_Xml_Entity')->name('similar');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oSimilarXmlEntity);
$oShop_Items = $oShop->Shop_Items;
$oShop_Items
->queryBuilder()
->select('shop_items.*')
->where('shop_items.active', '=', 1)
->where('shop_items.shop_group_id', '=', $Shop_Controller_Show->group)
->where('shop_items.id', '!=', $Shop_Controller_Show->item)
->limit($limit)
->clearOrderBy()
->orderBy('RAND()');
$aShop_Items = $oShop_Items->findAll(FALSE);
foreach ($aShop_Items as $oShop_Item)
{
$oSimilarXmlEntity->addEntity(
$oShop_Item->clearEntities()
->addForbiddenTag('text')
);
}
}
Для ИС просто
Shop меняется на
Informationsystem
Добавляется в ТДС показа перед блоком с
->show()
По итогу в XML попадет тег similar, в котором будут лежать элементы из этой же группы, исключая текущий элемент.