Отображение всех подгрупп и под-подгрупп для данной группы

#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
Вот ТДС

<?php

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;
}

$xsl_catalog = to_str($GLOBALS['LA']['xsl_catalog']);
$xsl_item = to_str($GLOBALS['LA']['xsl_item']);
$current_shop_id = to_int($GLOBALS['LA']['shop_id']);

$param = array();

$shop = & singleton('shop');

if ($GLOBALS['shop_item_path'] != false)
{
   $external_propertys = array();

   if (class_exists("SiteUsers"))
   {
      /* Получаем id текущего пользователя сайта */
      $SiteUsers = & singleton('SiteUsers');
      $site_user_id = $SiteUsers->GetCurrentSiteUser();
      $param['user_id'] = $site_user_id;
      $external_propertys['user_id'] = $site_user_id;
   }
   else
   {
      $site_user_id = 0;
      $external_propertys['user_id'] = 0;
   }

   // Если добавление комментария
   if (isset($_POST['submit_comment']) && !empty($GLOBALS['shop_item_path']['item']))
   {
      /* Проверяем CAPCHA*/
      $Captcha = new Captcha();

      $xmlData = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
      $xmlData .= '<document>' . "\n";

      if ($site_user_id > 0
      || $Captcha->ValidCaptcha(to_str($_POST['captcha_key']), to_str($_POST['captcha_keystring'])))
      {
         $param['shop_items_catalog_item_id'] = $GLOBALS['shop_item_path']['item'];
         $param['shop_comment_user_name'] = to_str($_REQUEST['shop_comment_user_name']);

         $param['shop_comment_user_email'] = to_str($_REQUEST['shop_comment_user_email']);
         $param['shop_comment_subject'] = to_str($_REQUEST['shop_comment_subject']);
         $param['shop_comment_text'] = to_str($_REQUEST['shop_comment_text']);
         $param['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
         $param['shop_comment_date_time'] = date("Y-m-d H:i:s");

         /* Активность/неактивность комментария */
         $shop_row = $shop->GetShop($current_shop_id);

         if ($shop_row)
         {
            $param['shop_comment_active'] = to_int($shop_row['shop_comment_active']);
         }
         else
         {
            $param['shop_comment_active'] = false;
         }

         $external_propertys['comment_is_active'] = $param['shop_comment_active'];

         // Если есть модуль "Пользователи сайта", получим текущего пользователя
         if (class_exists('SiteUsers'))
         {
            $SiteUsers = & singleton('SiteUsers');
            $param['site_users_id'] = $SiteUsers->GetCurrentSiteUser();
         }
         else
         {
            $param['site_users_id'] = 0;
         }

         $shop_comment_id = $shop->InsertComment($param);

         // Задан XSL для формирования письма администратору о добавлении комментария к товару
         if (to_str($GLOBALS['LA']['xsl_add_comment_letter_to_admin']) != '')
         {
            // Формируем XML для комментария
            $xmlData .= $shop->GenXml4Comment($shop_comment_id);
            $xmlData .= '</document>' . "\n";

            $xsl = new xsl();
            // Формируем текст письма администратору
            $message = $xsl->build($xmlData, $GLOBALS['LA']['xsl_add_comment_letter_to_admin']);

            // Формат письма - текст
            if (to_int($GLOBALS['LA']['comment_mail_type']) == 0)
            {
               $comment_mail_type = 'text/plain';
            }
            else
            {
               $comment_mail_type = 'text/html';
            }

            $subject = $GLOBALS['MSG_shops']['subject_report_for_comment'];

            $kernel = & singleton('kernel');

            // Получаем e-mail куратора магазина
            $email_to = to_str($shop_row['shop_shops_admin_mail']);

            if (!empty($email_to))
            {
               $kernel->SendMailWithFile($email_to, EMAIL_TO, $subject, $message, array(), $comment_mail_type);
            }
         }
      }
      else
      {
         /* Неправильно введен код изображенный на картинке */
         $external_propertys['error'] = 1;

         /* Запоминаем значения */
         $external_propertys['shop_comment_user_name'] = strip_tags(to_str($_REQUEST['shop_comment_user_name']));
         $external_propertys['shop_comment_user_email'] = strip_tags(to_str($_REQUEST['shop_comment_user_email']));
         $external_propertys['shop_comment_subject'] = strip_tags(to_str($_REQUEST['shop_comment_subject']));
         $external_propertys['shop_comment_text'] = strip_tags(to_str($_REQUEST['shop_comment_text']));
         $external_propertys['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
         $external_propertys['shop_comment_date_time'] = date("Y-m-d H:i:s");
      }
   }

   /* Вывод списка */
   if (!$GLOBALS['shop_item_path']['item'])
   {
      $param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // корневая группа

      /* Определяем номер элемента, с которого начинается показ в текущей группе */
      $page = end($GLOBALS['URL_ARRAY']);
      $page = to_str($page);

      $shop_row = $shop->GetShop($current_shop_id);
      if ($shop_row)
      {
         $items_on_page = $shop_row['shop_items_on_page'];
      }
      else
      {
         $items_on_page = 10;
      }

      /*
       Порядок сортировки ('Asc' - по возрастанию, 'Desc' - по убыванию, 'Rand' - произвольный порядок)
       $param['items_order'] = 'Asc';
       Поле, по которому сортируем (наименование элемента)
       $param['items_field_order'] = 'shop_items_catalog_name';
       */

// Выводим из всех групп
      if (isset($_GET['all_group']))
      {
         
         $param['current_group_id'] = false;
}

      /* Ограничиваем по производителю */
      if (to_int($_GET['producer_id']) > 0)
      {
         $element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
         $element['name'] = 'shop_producers_list_id';
         $element['prefix'] = 'AND'; // префикс
         $element['if'] = '='; // Условие
         $element['value'] = to_int($_GET['producer_id']);
         $element['sufix'] = '';
         $param['select'][] = $element;

         $external_propertys['producer_id'] = to_int($_GET['producer_id']);

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }

      /* Ограничиваем по продавцу */
      if (to_int($_GET['saller_id']) > 0)
      {
         $element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
         $element['name'] = 'shop_sallers_id';
         $element['prefix'] = 'AND'; // префикс
         $element['if'] = '='; // Условие
         $element['value'] = to_int($_GET['saller_id']);
         $element['sufix'] = '';
         $param['select'][] = $element;

         $external_propertys['saller_id'] = to_int($_GET['saller_id']);

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }

      $price_from = str_replace(',', '.', to_float($_GET['price_from']));

      /* Ограничиваем по цене ОТ */
      if ($price_from > 0)
      {
         $external_propertys['price_from'] = $price_from;

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }

      $price_to = str_replace(',', '.', to_float($_GET['price_to']));

      /* Ограничиваем по цене ДО */
      if ($price_to > 0)
      {
         $external_propertys['price_to'] = $price_to;

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }

      /* Число элементов на странице */
      $on_page = to_int($_GET['on_page']);

      if ($on_page > 0 && $on_page < 150)
      {
         $param['items_on_page'] = $on_page;
         $external_propertys['on_page'] = $on_page;

         /* Применять фильтр */
         $external_propertys['apply_filter'] = true;
      }

      // Определяем номер страницы.
      if ($on_page)
      {
         $items_on_page = $on_page;
      }
      if (ereg("^page-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 1)
      {
         /* Страница умножается на кол-во элементов, выводимых на страницу */
         $items_begin = ($regs[1] - 1) * $items_on_page;
      }
      else
      {
         $items_begin = 0;
      }

      $param['items_begin'] = $items_begin;

      /* Направление сортировки, 0 - по-возрастанию, 1 - по-убыванию */
      $order_direction = to_int($_GET['order_direction']);

      switch ($order_direction)
      {
         case 1: /* По-возрастанию */
            {
               $order_direction = 'ASC';
               break;
            }
         case 2: /* По-убыванию */
            {
               $order_direction = 'DESC';
               break;
            }
         default: /* по умолчанию */
            {
               $order_direction = 'ASC';
               break;
            }
      }

      /* Поле сортировки */
      $sort_field = to_int($_GET['sort_by_field']);

      switch ($sort_field)
      {
         case 1: /* По имени */
            {
               $param['items_field_order'] = 'shop_items_catalog_name';
               $param['items_order'] = $order_direction;
               $external_propertys['sort_by_field'] = $sort_field;
               $external_propertys['order_direction'] = $order_direction;
               break;
            }
         case 2: /* По цене */
            {
               //$param['items_field_order'] = 'shop_items_catalog_price';
               $param['items_field_order'] = 'item_price_absolute';
               $param['items_order'] = $order_direction;
               $external_propertys['sort_by_field'] = $sort_field;
               $external_propertys['order_direction'] = $order_direction;
               break;
            }
         case 3:  /* По оценке*/
            {
               $param['items_field_order'] = 'shop_comment_grade';
               $param['items_order'] = $order_direction;
               $external_propertys['sort_by_field'] = $sort_field;
               $external_propertys['order_direction'] = $order_direction;
               break;
            }
      }

      // Задан фильтр и/или сортировка по цене
      if ($price_from > 0 || $price_to > 0 || $sort_field == 2)
      {
         // Получаем список валют магазина
         $currency_result = $shop->GetAllCurrency();

         $query_currency_switch = 'shop_items_catalog_price';
         
         if(isset($param['sql_external_select']))
         {
            $param['sql_external_select'] .= ', shop_discount_table.shop_discount_percent';
         }
         else
         {
            $param['sql_external_select'] = ', shop_discount_table.shop_discount_percent';
         }

         // Цикл по валютам магазина
         while ($currency_row = mysql_fetch_assoc($currency_result))
         {
            // Получаем коэффициент пересчета для каждой валюты
            $currency_coefficient = $shop->GetCurrencyCoefficientToShopCurrency($currency_row['shop_currency_id'], $shop_row['shop_currency_id']);

            $query_currency_switch = "IF (shop_items_catalog_table.shop_currency_id = {$currency_row['shop_currency_id']}, IF (shop_discount_table.shop_discount_percent, shop_items_catalog_price * (100 - shop_discount_table.shop_discount_percent) * $currency_coefficient / 100, shop_items_catalog_table.shop_items_catalog_price * $currency_coefficient), $query_currency_switch)";
         }

         $param['sql_external_select'] .= ', ' . $query_currency_switch . ' AS item_price_absolute';

         $current_date = date('Y-m-d H:i:s');
         
if(!isset($param['select_discount']))
{
         if(isset($param['sql_from']))
         {
            $param['sql_from'] .= "LEFT JOIN shop_item_discount_table ON (shop_items_catalog_table.shop_items_catalog_item_id = shop_item_discount_table.shop_items_catalog_item_id) LEFT JOIN shop_discount_table ON (shop_item_discount_table.shop_discount_id = shop_discount_table.shop_discount_id AND (shop_discount_table.shop_discount_to >= '$current_date' OR shop_discount_table.shop_discount_to ='0000-00-00 00:00:00') AND shop_discount_table.shop_discount_from <= '$current_date')";
         }
         else
         {
            $param['sql_from'] = "LEFT JOIN shop_item_discount_table ON (shop_items_catalog_table.shop_items_catalog_item_id = shop_item_discount_table.shop_items_catalog_item_id) LEFT JOIN shop_discount_table ON (shop_item_discount_table.shop_discount_id = shop_discount_table.shop_discount_id AND (shop_discount_table.shop_discount_to >= '$current_date' OR shop_discount_table.shop_discount_to ='0000-00-00 00:00:00') AND shop_discount_table.shop_discount_from <= '$current_date')";
         }
}
      }

      /* Обработка дополнительных свойств.
       Получаем список свойств, разрешенных для отображения в данной группе и в фильтре */
      $resource_properties = $shop->GetPropertiesOfGroupForXml($current_shop_id, $param['current_group_id']);

      if ($resource_properties)
      {
         $element['type'] = 0; /* 0 - основное св-во, 1 - дополнительное */

         /* Префикс, если нужен. */
         $element['prefix'] = ' AND ('; // префикс

         /* ОСТАВЛЯЕТЕ БЕЗ ИЗМЕНЕНИЙ, ЭТО НУЖНО ДЛЯ СОРТИРОВКИ */
         $element['name'] = ''; // Имя

         /* поля для основного св-ва, если тип = 1, то не указывается */
         $element['if'] = ''; // Условие

         /* Вот здесь передается ID доп. св-ва, по которому производится сортировка.
          ID ВАШЕГО ПОЛЯ УКАЗЫВАЕТЕ ЗДЕСЬ */
         $element['value'] = ''; /* Значение поля (или параметра) */
         $element['sufix'] = ' ';

         /* Добавляем в общий список условий */
         $param['select'][] = $element;

         $count_condition = 0;
         $property_xml = '';

         $count_properties = mysql_num_rows($resource_properties);

         // Массив идентификаторов доп. свойств, для которых задан тип отображения "Список - флажками"
         $mas_key_list_checkbox = array();

         for ($i = 0; $i < $count_properties; $i++)
         {
            $row = mysql_fetch_assoc($resource_properties);

            $element['value'] = 0;

            switch ($row['shop_list_of_properties_show_kind'])
            {
               case 1: // Поле ввода
               case 2: // Список - списком
               case 3:   // Список - переключателями
               case 5:   // Флажок
                  {
                     /* Выбираем режим отображения */
                     $get_param = 'property_id_' . $row['shop_list_of_properties_id'];

                     if (isset($_GET[$get_param]))
                     {
                        if ($row['shop_list_of_properties_type'] == 0
                        || $row['shop_list_of_properties_show_kind'] == 1)
                        {
                           if (to_str($_GET[$get_param]) !== '')
                           {
                              $element['value'] = quote_smart(to_str($_GET[$get_param]));
                              $external_propertys['property_id_' . to_int($row['shop_list_of_properties_id'])] = $element['value'];
                              $property_xml .= '&property_id_' . to_int($row['shop_list_of_properties_id']) . '=' . $element['value'];

                              //$element['value'] = '%' . $element['value'] . '%';
                           }
                        }
                        // Флажок
                        elseif($row['shop_list_of_properties_type'] == 7)
                        {
                           $element['value'] = 1;
                           $external_propertys['property_id_' . to_int($row['shop_list_of_properties_id'])] = $element['value'];
                           $property_xml .= '&property_id_' . to_int($row['shop_list_of_properties_id']) . '=' . $element['value'];
                        }
                        else
                        {
                           if (to_int($_GET[$get_param]) > 0)
                           {
                              $element['value'] = to_int($_GET[$get_param]);
                              $external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
                              $property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
                           }
                        }
                     }

                     if ($element['value'])
                     {
                        /* Применять фильтр */
                        $external_propertys['apply_filter'] = true;

                        $element['property_id'] = to_int($row['shop_list_of_properties_id']);
                        $element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
                        //$element['prefix'] = ''; /* префикс */

                        // Способ отображения "Поле ввода"
                        if ($row['shop_list_of_properties_show_kind'] == 1 && !is_numeric($_GET[$get_param]))
                        {
                           $element['value'] = '%' . $element['value'] . '%';
                           $element['if'] = ' LIKE '; /* Условие */
                        }
                        else
                        {
                           $element['if'] = '='; /* Условие */
                        }

                        $element['sufix'] = '';

                        if ($count_condition)
                        {
                           $element['prefix'] = ' OR '; /* префикс */
                        }
                        else
                        {
                           $element['prefix'] = ' '; /* префикс */
                        }

                        $count_condition++;
                        $param['select'][] = $element;
                     }
                  }
               case 4: // Тип отображения - список флажками
                  {
                     // Модуль "Списки" подключен и  значенич доп. свойства не обработаны ранее
                     if (class_exists('lists') && !in_array($row['lists_id'], $mas_key_list_checkbox))
                     {
                        $mas_key_list_checkbox[] = $row['lists_id'];
                           
                        $lists = & singleton('lists');

                        // Получаем информацию о элементах списка, который задан для доп. свойства
                        $list_items_resource = $lists->SelectListsItems($row['lists_id']);

                        $k = 0;

                        // Цикл по элементам списка
                        while($row_list_item = mysql_fetch_assoc($list_items_resource))
                        {
                           // Передано значение элемента списка. Формируем запрос.
                           if (isset($_GET['property_id_' . $row['shop_list_of_properties_id'] .'_item_id_' . $row_list_item['lists_items_id']]))
                           {

                              if ($count_condition || $k > 0)
                              {
                                 $element['prefix'] = ' OR '; /* префикс */
                              }
                              else
                              {
                                 $element['prefix'] = ' ';
                              }
                                 
                              $element['property_id'] = to_int($row['shop_list_of_properties_id']);
                                 
                              $element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
                              $element['if'] = '='; /* Условие */
                              $element['value'] = $row_list_item['lists_items_id'];
                              $element['sufix'] = '';
                              $param['select'][] = $element;

/* Применять фильтр */
$external_propertys['apply_filter'] = true;

                              $external_propertys['property_id_' . to_int($row['shop_list_of_properties_id']) . '_item_id_' . $row_list_item['lists_items_id']] = $element['value'];
                              $property_xml .= '&property_id_' . to_int($row['shop_list_of_properties_id']) . '_item_id_' . $row_list_item['lists_items_id'] . '=' . $element['value'];

                              $k++;
                           }
                        }

                        // Задан фильтр по одному из значений списка
                        if ($k > 0)
                        {
                           $count_condition++;
                        }
                     }
                     break;
                  }
               case 6: // Тип отображения - диапазон
                  {
                     $get_param_from = 'property_id_' . $row['shop_list_of_properties_id'] . '_from';
                     $get_param_to = 'property_id_' . $row['shop_list_of_properties_id'] . '_to';

                     if (isset($_GET[$get_param_from]) && mb_strlen($_GET[$get_param_from]) > 0)
                     {

                        $value = floatval($_GET[$get_param_from]);

                        /* Применять фильтр */
                        $external_propertys['apply_filter'] = true;

                        $external_propertys['property_id_'.to_int($row['shop_list_of_properties_id']) . '_from'] = $value;
                        $property_xml .= '&property_id_' . to_int($row['shop_list_of_properties_id']).'_from=' . $value;

                        $element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
                        $element['property_id'] = to_int($row['shop_list_of_properties_id']);
                        $element['if'] = 'IS NOT NULL'; /* Условие */
                        $element['value'] = '';

                        $property_row = $shop->GetPropretyOfItems($element['property_id']);

                        if($property_row['shop_list_of_properties_type'] == 2)
                        {
                           $lists_id = to_int($property_row['lists_id']);
                           $lists = & singleton('lists');

                           $list_row = $lists->GetListItemsById($lists_id);

                           $in = array();

                           if (is_array($list_row) && count($list_row) > 0)
                           {
                              foreach ($list_row as $row_lists_items_value)
                              {
                                 if ($row_lists_items_value['lists_items_value'] >= $value)
                                 {
                                    $in[] = $row_lists_items_value['lists_items_id'];
                                 }
                              }
                           }

                           if(count($in) > 0)
                           {
                              $element['sufix'] = 'AND shop_properties_items_table.shop_properties_items_value - 0.0 IN ('.implode(',', $in).') ';
                           }
                           else
                           {
                              $element['sufix'] = "";
                           }
                        }
                        else
                        {
                           $element['sufix'] = " AND shop_properties_items_table.shop_properties_items_value - 0.0 >=$value";
                        }

                        if ($count_condition)
                        {
                           $element['prefix'] = ' OR '; /* префикс */
                        }
                        else
                        {
                           $element['prefix'] = ' '; /* префикс */
                        }

                        $param['select'][] = $element;

                        $count_condition++;
                     }

                     if (isset($_GET[$get_param_to]) && mb_strlen($_GET[$get_param_to]) > 0)
                     {
                        $value = floatval($_GET[$get_param_to]);

                        /* Применять фильтр */
                        $external_propertys['apply_filter'] = true;

                        $external_propertys['property_id_'.to_int($row['shop_list_of_properties_id']) . '_to'] = $value;
                        $property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'_to='.$value;

                        $element['property_id'] = to_int($row['shop_list_of_properties_id']);
                        $element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
                        $element['if'] = 'IS NOT NULL'; /* Условие */
                        $element['value'] = '';

                        $property_row = $shop->GetPropretyOfItems($element['property_id']);

                        if ($property_row['shop_list_of_properties_type'] == 2)
                        {
                           $lists_id = to_int($property_row['lists_id']);
                           $lists = & singleton('lists');

                           $list_row = $lists->GetListItemsById($lists_id);

                           $in = array();

                           if (is_array($list_row) && count($list_row) > 0)
                           {
                              foreach ($list_row as $row_lists_items_value)
                              {
                                 if($row_lists_items_value['lists_items_value'] <= $value)
                                 {
                                    $in[] = $row_lists_items_value['lists_items_id'];
                                 }
                              }
                           }
                              
                           if(count($in) > 0)
                           {
                              $element['sufix'] = 'AND shop_properties_items_table.shop_properties_items_value - 0.0 IN ('.implode(',', $in).') ';
                           }
                           else
                           {
                              $element['sufix'] = "";
                           }

                        }
                        else
                        {
                           $element['sufix'] = "AND shop_properties_items_table.shop_properties_items_value - 0.0 <= $value";
                        }

                        if (!(isset($_GET[$get_param_from]) && mb_strlen($_GET[$get_param_from]) > 0))
                        {
                           if ($count_condition)
                           {
                              $element['prefix'] = ' OR '; /* префикс */
                           }
                           else
                           {
                              $element['prefix'] = ' '; /* префикс */
                           }

                           $count_condition++;
                        }
                        else
                        {
                           $element['prefix'] = ' AND ';
                        }

                        $param['select'][] = $element;
                     }

                     break;
                  }
               case 7: // Список - список с множественным выбором
                  {
                     // Модуль "Списки" подключен и передан массив значений доп. свойства
                     if (class_exists('lists') && isset($_GET['property_id_' . $row['shop_list_of_properties_id']]) && is_array($_GET['property_id_' . $row['shop_list_of_properties_id']]))
                     {
                        $lists = & singleton('lists');

                        // Получаем информацию о элементах списка, который задан для доп. свойства
                        $list_items_resource = $lists->SelectListsItems($row['lists_id']);

                        $k = 0;

                        // Цикл по элементам списка
                        while($row_list_item = mysql_fetch_assoc($list_items_resource))
                        {
                           // Передано значение элемента списка. Формируем запрос.
                           if (in_array($row_list_item['lists_items_id'], $_GET['property_id_' . $row['shop_list_of_properties_id']]))
                           {
                              if ($count_condition || $k > 0)
                              {
                                 $element['prefix'] = ' OR '; /* префикс */
                              }
                              else
                              {
                                 $element['prefix'] = ' ';
                              }
                                 
                              $element['property_id'] = to_int($row['shop_list_of_properties_id']);
                                 
                              $element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
                              $element['if'] = '='; /* Условие */
                              $element['value'] = $row_list_item['lists_items_id'];
                              $element['sufix'] = '';
                              $param['select'][] = $element;

                              $external_propertys['property_id_' . to_int($row['shop_list_of_properties_id']) . '_item_id_' . $row_list_item['lists_items_id']] = $element['value'];
                              $property_xml .= '&property_id_' . to_int($row['shop_list_of_properties_id']) . '_item_id_' . $row_list_item['lists_items_id'] . '=' . $element['value'];

                              $k++;
                           }
                        }

                        // Задан фильтр по одному из значений списка
                        if ($k > 0)
                        {
                           $count_condition++;
                        }
                     }
                        
                     break;
                  }
            }
         }

         if (!$count_condition)
         {
            $element['prefix'] = ' 1'; /* префикс */
         }
         else
         {
            $element['prefix'] = ''; // префикс
         }
         /* добавляем конечный элемент, содержащий HAVING */
         $element['type'] = 0; /* 0 - основное св-во, 1 - дополнительное */

         /* ОСТАВЛЯЕТЕ БЕЗ ИЗМЕНЕНИЙ, ЭТО НУЖНО ДЛЯ СОРТИРОВКИ */
         $element['name'] = ''; /* Имя */

         /* поля для основного св-ва, если тип = 1, то не указывается */
         $element['if'] = ''; /* Условие */

         /* Вот здесь передается ID доп. св-ва, по которому производится сортировка.
          ID ВАШЕГО ПОЛЯ УКАЗЫВАЕТЕ ЗДЕСЬ */
         $element['value'] = ''; // Значение поля (или параметра)

         //if ($count_condition != 0 && ($price_from > 0 || $price_to >0))
         if ($count_condition != 0)
         {
            $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) = {$count_condition}";
         }
         else
         {
            $param['sql_having'] = 'HAVING 1 ';
         }

         $element['sufix'] = ' ) ';

         /* Добавляем в общий список условий */
         $param['select'][] = $element;
      }
      else
      {
         $param['sql_having'] = 'HAVING 1 ';
      }

      if ($price_from > 0)
      {
         $param['sql_having'] .= ' AND item_price_absolute >= ' . $price_from;
      }

      if ($price_to > 0)
      {
         $param['sql_having'] .= ' AND item_price_absolute <= ' . $price_to;
      }
         
      /* добавляем конечный элемент, содержащий HAVING */
      /*$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
       $element['prefix'] = ' AND';
       $element['name'] = 'shop_items_catalog_table.shop_shops_id';
       $element['if'] = '=';
       $element['value'] = $current_shop_id; // Значение поля (или параметра)
       $element['sufix'] = '';
       $param['select'][] = $element;*/

      if (!empty($property_xml))
      {
         $external_propertys['property_xml'] = $property_xml;
      }

      // Если передано имя тэга - фильтруем
      if (isset($GLOBALS['shop_item_path']['tag_name']))
      {
         if (class_exists('Tag'))
         {
            $oTag = & singleton('Tag');

            $tag_row = $oTag->GetTagByPath($GLOBALS['shop_item_path']['tag_name']);

            $param['tags'] = array($tag_row['tag_id']);

            // При выводе тэгов вывод элементов ведется из всех групп
            $param['current_group_id'] = false;
         }
      }

      // При выводе списка товаров получать подробное описание каждого товара не нужно
      $param['show_text'] = false;

      // При выводе списка товаров получать сопутствующие товары не нужно
      $param['xml_show_tying_products'] = false;

      // Запрещаем передачу в XML свойств групп
      $param['xml_show_group_property'] = false;


      $shop->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
   }
   else
   {
      $param['xml_show_group_type'] = 'all';
/* Вывод конкретного элемент */
      //$param['show_catalog_item_type'] = array('active', 'inactive');
      $param['xml_show_group_type'] = 'tree';
      $param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
    
      // Запрещаем передачу в XML свойств групп
      $param['xml_show_group_property'] = false;
      
      /* Вывод конкретного элемент */
      $shop->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);
   }
}
?>
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
и XML в котором только подгруппы данной группы без подгрупп подгрупп

<?xml version="1.0" encoding="UTF-8"?>
<shop id="1" current_group_id="465">
   <user_id>0</user_id>
   <name>Каталог</name>
   <description></description>
   <path>/%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3/</path>
   <site_id>1</site_id>
   <shop_image_small_max_width>100</shop_image_small_max_width>
   <shop_image_big_max_width>800</shop_image_big_max_width>
   <shop_image_small_max_height>100</shop_image_small_max_height>
   <shop_image_big_max_height>800</shop_image_big_max_height>
   <structure_id>42</structure_id>
   <shop_country_id>175</shop_country_id>
   <shop_currency id="1">
      <shop_currency_name>руб.</shop_currency_name>
      <shop_currency_international_name>RUB</shop_currency_international_name>
      <shop_currency_value_in_basic_currency>1.000000</shop_currency_value_in_basic_currency>
      <shop_currency_is_default>1</shop_currency_is_default>
   </shop_currency>
   <all_currency>
      <shop_currency id="1">
         <shop_currency_name>руб.</shop_currency_name>
         <shop_currency_international_name>RUB</shop_currency_international_name>
         <shop_currency_value_in_basic_currency>1.000000</shop_currency_value_in_basic_currency>
         <shop_currency_is_default>1</shop_currency_is_default>
         <shop_currency_coefficient>1</shop_currency_coefficient>
      </shop_currency>
      <shop_currency id="2">
         <shop_currency_name>&amp;euro;</shop_currency_name>
         <shop_currency_international_name>EUR</shop_currency_international_name>
         <shop_currency_value_in_basic_currency>36.889479</shop_currency_value_in_basic_currency>
         <shop_currency_is_default>0</shop_currency_is_default>
         <shop_currency_coefficient>0.0271080000886</shop_currency_coefficient>
      </shop_currency>
      <shop_currency id="3">
         <shop_currency_name>$</shop_currency_name>
         <shop_currency_international_name>USD</shop_currency_international_name>
         <shop_currency_value_in_basic_currency>23.639664</shop_currency_value_in_basic_currency>
         <shop_currency_is_default>0</shop_currency_is_default>
         <shop_currency_coefficient>0.0423017856768</shop_currency_coefficient>
      </shop_currency>
   </all_currency>
   <shop_order_status id="0">
   </shop_order_status>
   <shop_mesures id="29">
      <shop_mesures_name>г</shop_mesures_name>
      <shop_mesures_description>грамм</shop_mesures_description>
   </shop_mesures>
   <shop_shops_send_order_mail_admin>1</shop_shops_send_order_mail_admin>
   <shop_shops_send_order_mail_user>1</shop_shops_send_order_mail_user>
   <shop_shops_admin_mail>smolny@localhost.ru</shop_shops_admin_mail>
   <shop_list_of_prices>
      <shop_list_of_price id="1" name="Дилер (золотой)">
         <percent>65</percent>
      </shop_list_of_price>
      <shop_list_of_price id="2" name="Дилер (серебряный)">
         <percent>80</percent>
      </shop_list_of_price>
      <shop_list_of_price id="3" name="Дилер (яхонтовый)">
         <percent>95</percent>
      </shop_list_of_price>
   </shop_list_of_prices>
   <warehouses>
      <warehouse id="1">
         <shop_warehouse_name>Основной</shop_warehouse_name>
         <shop_warehouse_activity>1</shop_warehouse_activity>
         <shop_warehouse_address></shop_warehouse_address>
         <shop_warehouse_order>0</shop_warehouse_order>
         <shop_warehouse_default>1</shop_warehouse_default>
      </warehouse>
   </warehouses>
   <group id="1" parent="0">
      <name>Продукты питания</name>
      <description></description>
      <order>10</order>
      <indexation>1</indexation>
      <path>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F</path>
      <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/</fullpath>
      <count_items>0</count_items>
      <count_groups>27</count_groups>
      <count_all_items>20160</count_all_items>
      <count_all_groups>382</count_all_groups>
      <seo_title></seo_title>
      <seo_description></seo_description>
      <seo_keywords></seo_keywords>
      <group id="464" parent="1">
         <name>Бакалея</name>
         <description></description>
         <image width="800" height="800">/upload/shop_1/4/6/4/group_464/shop_group_image464.gif</image>
         <small_image width="100" height="100">/upload/shop_1/4/6/4/group_464/small_shop_group_image464.gif</small_image>
         <order>9000</order>
         <indexation>1</indexation>
         <path>%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F</path>
         <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/</fullpath>
         <count_items>0</count_items>
         <count_groups>11</count_groups>
         <count_all_items>2547</count_all_items>
         <count_all_groups>78</count_all_groups>
         <seo_title></seo_title>
         <seo_description></seo_description>
         <seo_keywords></seo_keywords>
         <group id="468" parent="464">
            <name>Бульоны, супы, каши, пюре, вторые блюда</name>
            <description></description>
            <order>0</order>
            <indexation>1</indexation>
            <path>group_468</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_468/</fullpath>
            <count_items>94</count_items>
            <count_groups>2</count_groups>
            <count_all_items>320</count_all_items>
            <count_all_groups>11</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="465" parent="464">
            <name>Сахар, Соль, Сода, Дрожжи</name>
            <description></description>
            <order>0</order>
            <indexation>1</indexation>
            <path>group_465</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_465/</fullpath>
            <count_items>0</count_items>
            <count_groups>4</count_groups>
            <count_all_items>68</count_all_items>
            <count_all_groups>5</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
            <group id="318" parent="465">
               <name>Дрожжи</name>
               <description></description>
               <order>0</order>
               <indexation>1</indexation>
               <path>%D0%94%D1%80%D0%BE%D0%B6%D0%B6%D0%B8</path>
               <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_465/%D0%94%D1%80%D0%BE%D0%B6%D0%B6%D0%B8/</fullpath>
               <count_items>5</count_items>
               <count_groups>0</count_groups>
               <count_all_items>5</count_all_items>
               <count_all_groups>0</count_all_groups>
               <seo_title></seo_title>
               <seo_description></seo_description>
               <seo_keywords></seo_keywords>
            </group>
            <group id="148" parent="465">
               <name>Сахар</name>
               <description></description>
               <order>0</order>
               <indexation>1</indexation>
               <path>%D0%A1%D0%B0%D1%85%D0%B0%D1%80</path>
               <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_465/%D0%A1%D0%B0%D1%85%D0%B0%D1%80/</fullpath>
               <count_items>34</count_items>
               <count_groups>1</count_groups>
               <count_all_items>34</count_all_items>
               <count_all_groups>1</count_all_groups>
               <seo_title></seo_title>
               <seo_description></seo_description>
               <seo_keywords></seo_keywords>
            </group>
            <group id="308" parent="465">
               <name>Сода</name>
               <description></description>
               <order>0</order>
               <indexation>1</indexation>
               <path>%D0%A1%D0%BE%D0%B4%D0%B0</path>
               <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_465/%D0%A1%D0%BE%D0%B4%D0%B0/</fullpath>
               <count_items>1</count_items>
               <count_groups>0</count_groups>
               <count_all_items>1</count_all_items>
               <count_all_groups>0</count_all_groups>
               <seo_title></seo_title>
               <seo_description></seo_description>
               <seo_keywords></seo_keywords>
            </group>
            <group id="307" parent="465">
               <name>Соль</name>
               <description></description>
               <order>0</order>
               <indexation>1</indexation>
               <path>%D0%A1%D0%BE%D0%BB%D1%8C</path>
               <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_465/%D0%A1%D0%BE%D0%BB%D1%8C/</fullpath>
               <count_items>28</count_items>
               <count_groups>0</count_groups>
               <count_all_items>28</count_all_items>
               <count_all_groups>0</count_all_groups>
               <seo_title></seo_title>
               <seo_description></seo_description>
               <seo_keywords></seo_keywords>
            </group>
         </group>
         <group id="467" parent="464">
            <name>Уксус, Горчица, Хрен</name>
            <description></description>
            <order>0</order>
            <indexation>1</indexation>
            <path>group_467</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/group_467/</fullpath>
            <count_items>0</count_items>
            <count_groups>2</count_groups>
            <count_all_items>32</count_all_items>
            <count_all_groups>2</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="13" parent="464">
            <name>КЕТЧУПЫ СОУСЫ</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9A%D0%95%D0%A2%D0%A7%D0%A3%D0%9F%D0%AB-%D0%A1%D0%9E%D0%A3%D0%A1%D0%AB</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9A%D0%95%D0%A2%D0%A7%D0%A3%D0%9F%D0%AB-%D0%A1%D0%9E%D0%A3%D0%A1%D0%AB/</fullpath>
            <count_items>0</count_items>
            <count_groups>2</count_groups>
            <count_all_items>250</count_all_items>
            <count_all_groups>2</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="7" parent="464">
            <name>КОНЦЕНТРАТЫ И СУХИЕ ЗАКУСКИ</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9A%D0%9E%D0%9D%D0%A6%D0%95%D0%9D%D0%A2%D0%A0%D0%90%D0%A2%D0%AB-%D0%98-%D0%A1%D0%A3%D0%A5%D0%98%D0%95-%D0%97%D0%90%D0%9A%D0%A3%D0%A1%D0%9A%D0%98</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9A%D0%9E%D0%9D%D0%A6%D0%95%D0%9D%D0%A2%D0%A0%D0%90%D0%A2%D0%AB-%D0%98-%D0%A1%D0%A3%D0%A5%D0%98%D0%95-%D0%97%D0%90%D0%9A%D0%A3%D0%A1%D0%9A%D0%98/</fullpath>
            <count_items>0</count_items>
            <count_groups>5</count_groups>
            <count_all_items>302</count_all_items>
            <count_all_groups>8</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="2" parent="464">
            <name>КРУПЫ, МУКА</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9A%D0%A0%D0%A3%D0%9F%D0%AB-%D0%9C%D0%A3%D0%9A%D0%90</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9A%D0%A0%D0%A3%D0%9F%D0%AB-%D0%9C%D0%A3%D0%9A%D0%90/</fullpath>
            <count_items>0</count_items>
            <count_groups>3</count_groups>
            <count_all_items>275</count_all_items>
            <count_all_groups>12</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="16" parent="464">
            <name>МАКАРОНЫ</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9C%D0%90%D0%9A%D0%90%D0%A0%D0%9E%D0%9D%D0%AB</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9C%D0%90%D0%9A%D0%90%D0%A0%D0%9E%D0%9D%D0%AB/</fullpath>
            <count_items>0</count_items>
            <count_groups>5</count_groups>
            <count_all_items>221</count_all_items>
            <count_all_groups>9</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="11" parent="464">
            <name>МАСЛО РАСТИТЕЛЬНОЕ</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9C%D0%90%D0%A1%D0%9B%D0%9E-%D0%A0%D0%90%D0%A1%D0%A2%D0%98%D0%A2%D0%95%D0%9B%D0%AC%D0%9D%D0%9E%D0%95</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9C%D0%90%D0%A1%D0%9B%D0%9E-%D0%A0%D0%90%D0%A1%D0%A2%D0%98%D0%A2%D0%95%D0%9B%D0%AC%D0%9D%D0%9E%D0%95/</fullpath>
            <count_items>0</count_items>
            <count_groups>3</count_groups>
            <count_all_items>107</count_all_items>
            <count_all_groups>3</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="34" parent="464">
            <name>МЕД</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9C%D0%95%D0%94--%D0%A1%D0%90%D0%A5%D0%90%D0%A0</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9C%D0%95%D0%94--%D0%A1%D0%90%D0%A5%D0%90%D0%A0/</fullpath>
            <count_items>38</count_items>
            <count_groups>0</count_groups>
            <count_all_items>38</count_all_items>
            <count_all_groups>0</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="14" parent="464">
            <name>ПРИПРАВЫ И СПЕЦИИ</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%9F%D0%A0%D0%98%D0%9F%D0%A0%D0%90%D0%92%D0%AB-%D0%98-%D0%A1%D0%9F%D0%95%D0%A6%D0%98%D0%98</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%9F%D0%A0%D0%98%D0%9F%D0%A0%D0%90%D0%92%D0%AB-%D0%98-%D0%A1%D0%9F%D0%95%D0%A6%D0%98%D0%98/</fullpath>
            <count_items>0</count_items>
            <count_groups>2</count_groups>
            <count_all_items>432</count_all_items>
            <count_all_groups>10</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
         <group id="33" parent="464">
            <name>ЧИПСЫ СНЕКИ</name>
            <description></description>
            <order>10000</order>
            <indexation>1</indexation>
            <path>%D0%A7%D0%98%D0%9F%D0%A1%D0%AB-%D0%A1%D0%9D%D0%95%D0%9A%D0%98</path>
            <fullpath>%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B-%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/%D0%91%D0%B0%D0%BA%D0%B0%D0%BB%D0%B5%D1%8F/%D0%A7%D0%98%D0%9F%D0%A1%D0%AB-%D0%A1%D0%9D%D0%95%D0%9A%D0%98/</fullpath>
            <count_items>0</count_items>
            <count_groups>4</count_groups>
            <count_all_items>502</count_all_items>
            <count_all_groups>5</count_all_groups>
            <seo_title></seo_title>
            <seo_description></seo_description>
            <seo_keywords></seo_keywords>
         </group>
      </group>
   </group>
   <group id="470" parent="0">
      <name>Товары для животных</name>
      <description></description>
      <order>20</order>
      <indexation>1</indexation>
      <path>group_470</path>
      <fullpath>group_470/</fullpath>
      <count_items>0</count_items>
      <count_groups>2</count_groups>
      <count_all_items>245</count_all_items>
      <count_all_groups>12</count_all_groups>
      <seo_title></seo_title>
      <seo_description></seo_description>
      <seo_keywords></seo_keywords>
   </group>
   <group id="5" parent="0">
      <name>Промтовары</name>
      <description></description>
      <order>30</order>
      <indexation>1</indexation>
      <path>%D0%9F%D1%80%D0%BE%D0%BC%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B</path>
      <fullpath>%D0%9F%D1%80%D0%BE%D0%BC%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/</fullpath>
      <count_items>3</count_items>
      <count_groups>13</count_groups>
      <count_all_items>1254</count_all_items>
      <count_all_groups>29</count_all_groups>
      <seo_title></seo_title>
      <seo_description></seo_description>
      <seo_keywords></seo_keywords>
   </group>
   <sallers>
   </sallers>
   <taxes>
      <tax id="2">
         <tax_name>НДС 18 (входит в цену)</tax_name>
         <tax_rate>18</tax_rate>
         <tax_is_in_price>1</tax_is_in_price>
      </tax>
      <tax id="5">
         <tax_name>НДС 18 (не входит в цену)</tax_name>
         <tax_rate>18</tax_rate>
         <tax_is_in_price>0</tax_is_in_price>
      </tax>
      <tax id="19">
         <tax_name>НДС 10 (входит в цену)</tax_name>
         <tax_rate>10</tax_rate>
         <tax_is_in_price>1</tax_is_in_price>
      </tax>
      <tax id="20">
         <tax_name>НДС 10 (не входит в цену)</tax_name>
         <tax_rate>10</tax_rate>
         <tax_is_in_price>0</tax_is_in_price>
      </tax>
      <tax id="21">
         <tax_name>НДС (без налога)</tax_name>
         <tax_rate>0</tax_rate>
         <tax_is_in_price>1</tax_is_in_price>
      </tax>
   </taxes>
   <count_items>0</count_items>
   <current_page>0</current_page>
   <items_on_page>30</items_on_page>
</shop>
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
В вашем коде в конце динамической - вы не туда вставили у Вас


// Запрещаем передачу в XML свойств групп
      $param['xml_show_group_property'] = false;


      $shop->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
   }
   else
   {
      $param['xml_show_group_type'] = 'all';
/* Вывод конкретного элемент */
      //$param['show_catalog_item_type'] = array('active', 'inactive');
      $param['xml_show_group_type'] = 'tree';
      $param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
    
      // Запрещаем передачу в XML свойств групп
      $param['xml_show_group_property'] = false;
      
      /* Вывод конкретного элемент */
      $shop->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);
   }
}
?>


а надо


// Запрещаем передачу в XML свойств групп
      $param['xml_show_group_property'] = false;

      $param['xml_show_group_type'] = 'all';

      $shop->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
   }
   else
   {
      
/* Вывод конкретного элемент */
      //$param['show_catalog_item_type'] = array('active', 'inactive');
      $param['xml_show_group_type'] = 'tree';
      $param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
    
      // Запрещаем передачу в XML свойств групп
      $param['xml_show_group_property'] = false;
      
      /* Вывод конкретного элемент */
      $shop->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);
   }
}
?>
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
спасибо люди добрые!!! все теперь вообще все дерево магазина в xml будем с ним работать
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
Сколько я ни пытался, кроме вот этих ошибок у меня ничего не выходит:
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Invalid expression в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///Z:/home/hostcms5/www/ line 635 element if в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsl:if : could not compile test expression 'position()! = last() and count(//group[@parent = $parent_id]) > 1' в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Invalid expression в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///Z:/home/hostcms5/www/ line 650 element if в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsl:if : could not compile test expression 'position()! = last() and count(//group[@parent = $parent_id]) > 1' в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: No stylesheet associated to this object в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 289)

Приведите, пожалуйста, весь код lib6.php и 55.xsl в коде
www.dsaleks.ru - создание сайтов и интернет-магазинов
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
У вас вот xsl в строке 650 в этом выражении ошибка:
position()! = last() and count(//group[@parent = $parent_id]) > 1

Попробуйте так:
position() != last() and count(//group[@parent = $parent_id]) &gt; 1

Заказов не беру. Консультирую редко.
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
Обратите внимание, что я не только заменил знак > на &gt; но и исправил неудачно вставший пробел в операторе !=
Просто даже выделенный жирным восклицательный знак плохо заметен.
Заказов не беру. Консультирую редко.
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
Вот такой код для групп, разделов и под_подразделов у меня:
   <!-- Шаблон для групп товара -->
   <xsl:template match="group">
      
      <xsl:variable name="parent_id" select="@parent"/>
      
      <div style="margin-bottom: 15px;">
         <a href="{/shop/path}{fullpath}" style="font-weight: bold">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>&#xA0;<span style="color: #aaaaaa">(<xsl:value-of select="count_all_items"/>)</span>
         <br/>
         <xsl:value-of disable-output-escaping="yes" select="description"/>
         
         <xsl:if test="count(group) &gt; 1">
            <xsl:apply-templates select="group" mode="sub_group"/>
         </xsl:if>
      </div>
      
      <xsl:if test="position()= round(count(//group[@parent = $parent_id]) div 2)">
         <xsl:text disable-output-escaping="yes">
            &lt;/td&gt;
            &lt;td valign="top" width="50%"&gt;
         </xsl:text>
      </xsl:if>
   </xsl:template>
   
   <!-- Шаблон для подразделов -->
   <xsl:template match="group" mode="sub_group">
      <a href="{/shop/path}{fullpath}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>
      <xsl:variable name="parent_id" select="@parent"/>
      <!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
      <xsl:if test="position() != last() and count(//group[@parent = $parent_id]) &gt; 1">,&#xA0;</xsl:if>

      <xsl:if test="count(group) &gt; 1">
         <xsl:apply-templates select="group" mode="sub_sub_group"/>
      </xsl:if>

<!-- Шаблон для под_подразделов -->
         <xsl:template match="group" mode="sub_sub_group">
            <a href="{/shop/path}{fullpath}">
               <xsl:value-of disable-output-escaping="yes" select="name"/>

            </a>
            <xsl:variable name="parent_id" select="@parent"/>
            <!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
            <xsl:if test="position() ! = last() and count(//group[@parent = $parent_id]) &gt; 1">,&#xA0;</xsl:if>
         </xsl:template>

   </xsl:template>

Все равно выходят эти ошибки:
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///Z:/home/hostcms5/www/ line 642 element template в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: element template only allowed as child of stylesheet в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: Invalid expression в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///Z:/home/hostcms5/www/ line 649 element if в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsl:if : could not compile test expression 'position() ! = last() and count(//group[@parent = $parent_id]) > 1' в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 285)
Предупреждение: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: No stylesheet associated to this object в файле Z:\home\hostcms5\www\modules\Xsl\Xsl.class.php (строка 289)
www.dsaleks.ru - создание сайтов и интернет-магазинов
#
Re: Отображение всех подгрупп и под-подгрупп для данной группы
Вот так работает:
   <!-- Шаблон для групп товара -->
   <xsl:template match="group">
      
      <xsl:variable name="parent_id" select="@parent"/>
      
      <div style="margin-bottom: 15px;">
         <a href="{/shop/path}{fullpath}" style="font-weight: bold">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>&#xA0;<span style="color: #aaaaaa">(<xsl:value-of select="count_all_items"/>)</span>
         <br/>
         <xsl:value-of disable-output-escaping="yes" select="description"/>
         
         <xsl:if test="count(group) &gt; 1">
            <xsl:apply-templates select="group" mode="sub_group"/>
         </xsl:if>
      </div>
      
      <xsl:if test="position()= round(count(//group[@parent = $parent_id]) div 2)">
         <xsl:text disable-output-escaping="yes">
            &lt;/td&gt;
            &lt;td valign="top" width="50%"&gt;
         </xsl:text>
      </xsl:if>
   </xsl:template>
   
   <!-- Шаблон для подразделов -->
   <xsl:template match="group" mode="sub_group">
      <a href="{/shop/path}{fullpath}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>
      <xsl:variable name="parent_id" select="@parent"/>
      <!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
      <xsl:if test="position() != last() and count(//group[@parent = $parent_id]) &gt; 1">,&#xA0;</xsl:if>

      <xsl:if test="count(group) &gt; 1">
         <xsl:apply-templates select="group" mode="sub_sub_group"/>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон для под_подразделов -->
   <xsl:template match="group" mode="sub_sub_group">
      <a href="{/shop/path}{fullpath}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>
      <xsl:variable name="parent_id" select="@parent"/>
      <!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
      <xsl:if test="position() != last() and count(//group[@parent = $parent_id]) &gt; 1">,&#xA0;</xsl:if>
   </xsl:template>
www.dsaleks.ru - создание сайтов и интернет-магазинов
Авторизация