Поиск по магазину только по товарам определенной группы

Модератор
#
Поиск по магазину только по товарам определенной группы
Группа принимается из GET-параметра group_id.
<?php
$Search = new Search();

$words=to_str($_GET['text']);

$property = array();

// $property['search_page_module'] = array(3 => array(10));
/*Текущая страница */
$property['current_page']=to_int($_GET['page']);

/* Количество строк результата на страницу */
$property['items_on_page'] = to_int($GLOBALS['LA']['result_on_page']);

/* Максимальная длина поискового запроса */
$property['len'] = to_int($GLOBALS['LA']['maxlen']);

/* Если поиск только по текущему сайту */
if (to_bool($GLOBALS['LA']['SearchCurrentSite']))
{
   $property['site_id'] = CURRENT_SITE;
}
//------------------------------------------------

$shop = & singleton('shop');

$shop_id = 10;
$group_id = to_int($_GET['group_id']);

function SetGroups($mas_groups, $set)
{
       $mas_groups = to_array($mas_groups);
       foreach ($mas_groups as $key=>$value)
       {
               foreach ($value as $key1=>$value1)
               {
                       $set[] = $value1;
                       if ($value1 == $key)
                       {
                               $set[] = $key;
                               SetGroups($mas_groups, $set);
                       }
               }
       }
       return $set;
}

if ($group_id == 0)
{
   $property['search_page_module'] = array(3 => array(10));
}
else
{
   $mas_group = $shop->GetGroupsTree($group_id, $shop_id, array());
   $set = SetGroups($mas_group, array());

   // Дописываем саму группу
   $set[] = $group_id;
   
   $in = implode(',', $set);
   
   $DataBase = & singleton('DataBase');
   
   $result = $DataBase->query("SELECT `shop_items_catalog_item_id`
   FROM `shop_items_catalog_table` WHERE `shop_groups_id` IN ({$in})");
   
   $items_id = array();
   while($row = mysql_fetch_assoc($result))
   {
      $items_id[] = $row['shop_items_catalog_item_id'];
   }

   $property['search_page_module'] = array(3 => array(array('search_page_module_entity_id' => $shop_id,
   'search_page_module_value_type' => 2,
   'search_page_module_value_id' => $items_id)));
}

//------------------------------------------------
$Search->GoSearch($words, to_str($GLOBALS['LA']['xsl']), $property);

?>
Модератор
#
Re: Поиск по магазину только по товарам определенной группы
Пример модификации на поиск по товарам только заранее определенных групп:
$mas_group = $shop->GetGroupsTree($group_id, $shop_id, array());
   $set = SetGroups($mas_group, array());

   // Дописываем саму группу
   $set[] = $group_id;

   // Явно указываем перечень групп
   $set = array(10,11,12);
   $in = implode(',', $set);
Авторизация