А сложность вот в чём. Для отображения списка авторов из доски объявлений написал собственную обработку вот:
<pre>
<?php
$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']);
function err_handler($errno, $errmsg, $filename, $linenum) {}
function SiteUserXml($current_shop_id, $site_users_id, $count_items, $param = array())
{
$SiteUsers = & singleton('site_users');
$shop = & singleton('shop');
$count_items = to_int($count_items);
$xmlData = "";
$groups_row = array();
$all_items = array();
$site_user_row = $SiteUsers->GetSiteUser($site_users_id);
$xmlData .= "\t" . '<site_user id="' . $site_user_row['site_users_id'] . '">' . "\r\n";
$xmlData .= "\t\t" . '<login>' . $site_user_row['site_users_login'] . '</login>' . "\r\n";
$xmlData .= "\t\t" . '<email>' . $site_user_row['site_users_email'] . '</email>' . "\r\n";
$xmlData .= "\t\t" . '<surname>' . $site_user_row['site_users_surname'] . '</surname>' . "\r\n";
$xmlData .= "\t\t" . '<name>' . $site_user_row['site_users_name'] . '</name>' . "\r\n";
$xmlData .= "\t\t" . '<patronymic>' . $site_user_row['site_users_patronymic'] . '</patronymic>' . "\r\n";
$xmlData .= "\t\t" . '<company>' . $site_user_row['site_users_company'] . '</company>' . "\r\n";
$xmlData .= "\t\t" . '<phone>' . $site_user_row['site_users_phone'] . '</phone>' . "\r\n";
$xmlData .= "\t\t" . '<fax>' . $site_user_row['site_users_fax'] . '</fax>' . "\r\n";
$xmlData .= "\t\t" . '<site>' . $site_user_row['site_users_site'] . '</site>' . "\r\n";
$xmlData .= "\t\t" . '<icq>' . $site_user_row['site_users_icq'] . '</icq>' . "\r\n";
$xmlData .= "\t\t" . '<country>' . $site_user_row['site_users_country'] . '</country>' . "\r\n";
$xmlData .= "\t\t" . '<city>' . $site_user_row['site_users_city'] . '</city>' . "\r\n";
$xmlData .= "\t\t" . '<date_registration>' . $site_user_row['site_users_date_registration'] . '</date_registration>' . "\r\n";
if(isset($param['groups_for_xml']) && $param['groups_for_xml'] === true)
{
$all_items = $shop->GetAllItems($current_shop_id, false);
$i = 0;
$all_items_for_user = array();
for($groups_select = 0; $groups_select < count($all_items); $groups_select++)
{
if($all_items[$groups_select]['site_users_id'] == $site_users_id)
{
$all_items_for_user[$i] = $all_items[$groups_select]['shop_groups_id'];
$i++;
}
}
$j = 0;
$groups_for_user = array_unique($all_items_for_user);
while($groupID = each($groups_for_user))
{
$groups_row[$j] = $shop->GetGroup($groupID['value']);
$j++;
}
$xmlData .= GenXml4Group($current_shop_id, $groups_row);
}
if(isset($param['items_for_xml']) && is_array($param['items_for_xml']))
{
// Добавляем в XML товары из текущей группы принадлежащие текущему пользователю сайта
for($items_count = 0; $items_count < $count_items; $items_count++ )
{
$xmlData .= $shop->GenXml4Item(0, $param['items_for_xml'][$items_count], $site_users_id);
}
}
$xmlData .= "\t" . '</site_user>' . "\r\n";
return $xmlData;
}
function GenXml4Group($current_shop_id, $groups_row = array())
{
$shop = & singleton('shop');
$xmlData = "";
for($cg = 0; $cg < count($groups_row); $cg++)
{
$count_items = 0;
$count_groups = 0;
$groups_row_items = $shop->GetAllItems($current_shop_id, $groups_row[$cg]['shop_groups_id'], array('items_field_order' =>'shop_items_catalog_order', 'items_order' => 'Asc'));
$sub_groups_row = $shop->GetAllGroups($current_shop_id, array('shop_groups_parent_id' => $groups_row[$cg]['shop_groups_id'], 'group_field_order' => 'shop_groups_id', 'group_order' => 'Asc', 'groups_activity' => 1));
if($groups_row[$cg]['shop_groups_parent_id'] == 0)
{ $fullpath = to_str($groups_row[$cg]['shop_groups_path']); }
elseif($groups_row[$cg]['shop_groups_parent_id'] > 0 && count($sub_groups_row) > 0)
{ $fullpath .= "/" . to_str($groups_row[$cg]['shop_groups_path']); }
else
{ $fullpath .= "/" . to_str($groups_row[$cg]['shop_groups_path']); }
if ($groups_row_items != false)
{ $count_items = count($groups_row_items); }
if ($sub_groups_row != false)
{ $count_groups = count($sub_groups_row); }
$xmlData .= ' <group id="' . $groups_row[$cg]['shop_groups_id'] . '" parent="' . $groups_row[$cg]['shop_groups_parent_id'] . '">
<name>' . $groups_row[$cg]['shop_groups_name'] . '</name>
<description>' . $groups_row[$cg]['shop_groups_description'] . '</description>
<order>' . $groups_row[$cg]['shop_groups_order'] . '</order>
<indexation>' . $groups_row[$cg]['shop_groups_indexation'] . '</indexation>
<path>' . $groups_row[$cg]['shop_groups_path'] . '</path>
<fullpath>' . $fullpath . '/</fullpath>
<seo_title>' . $groups_row[$cg]['shop_groups_seo_title'] . '</seo_title>
<seo_description>' . $groups_row[$cg]['shop_groups_seo_description'] . '</seo_description>
<seo_keywords>' . $groups_row[$cg]['shop_groups_seo_keywords'] . '</seo_keywords>
<count_items>' . $count_items . '</count_items>
<count_groups>' . $count_groups . '</count_groups>
';
$xmlData .= $shop->GenXml4Properties($current_shop_id, $groups_row[$cg]['shop_groups_id']);
$xmlData .= ' </group>
';
}
return $xmlData;
}
$param = array();
$xmlData = '<?xml version="1.0" encoding="' . SITE_CODING . '"?>' . "\r\n";
set_error_handler('err_handler');
$shop = & singleton('shop');
$kernel = & singleton('kernel');
$structure = & singleton('Structure');
$SiteUsers = & singleton('site_users');
$DataBase = & singleton('DataBase');
$shop_row = $shop->GetShop($current_shop_id);
$path = $structure->GetStructurePath($shop_row['structure_id'], 0);
/* Получаем id текущего пользователя сайта */
$site_users_id = $SiteUsers->GetCurrentSiteUser();
$current_group_id = to_str($GLOBALS['shop_item_path']['group']);
$current_group_info = $shop->GetGroup($current_group_id);
$xmlData .= '<shop id="' . $shop_row['shop_shops_id'] . '" current_group_id="' . $current_group_id . '">' ."\r\n";
$user_info = $SiteUsers->GetSiteUser($site_users_id);
if ($user_info)
{
$xmlData .= '<autor_login>' . $user_info['site_users_login'] . '</autor_login>' ."\r\n";
}
$xmlData .= '<url>/' . $GLOBALS['URL_ARRAY'][0] . '/</url>' ."\r\n";
if(isset($_GET['apply_filter']) && to_int($_GET['site_users_id']) > 0)
{
$site_users_filtr = to_int($_GET['site_users_id']);
$xmlData .= ' <site_users_id>' . $site_users_filtr . '</site_users_id>
<apply_filter>1</apply_filter>
';
}
$xmlData .= $shop->GenXml4Shop($current_shop_id);
// Вывод списка
if (!isset($_GET['apply_filter']) && !isset($_GET['site_users_id']))
{
$xsl_file = $xsl_catalog;
/* Определяем номер элемента, с которого начинается показ в текущей группе */
// Берем из БД полный список авторов
$query = "SELECT site_users_id FROM site_users_table ORDER BY site_users_name";
$result = $DataBase->query($query);
$i = 0;
while($row = mysql_fetch_assoc($result))
{
$list_site_users_id[$i] = $row['site_users_id'];
$i++;
}
$limit_users = count($list_site_users_id);
for($items_begin = 0; $items_begin < $limit_users; $items_begin++)
{
$xmlData .= SiteUserXml($current_shop_id, $list_site_users_id[$items_begin], 0, array('groups_for_xml' => true));
}
}
// Вывод элемента
else
{
$xsl_file = $xsl_item;
// Вывод списка
if (count($GLOBALS['URL_ARRAY']) == 1)
{
$all_items = $shop->GetAllItems($current_shop_id, false);
$i = 0;
$all_items_for_user = array();
for($groups_select = 0; $groups_select < count($all_items); $groups_select++)
{
if($all_items[$groups_select]['site_users_id'] == $site_users_filtr)
{
$all_items_for_user[$i] = $all_items[$groups_select];
$i++;
}
}
}
else
{
$parent_group_id = 0;
while($group_path = each($GLOBALS['URL_ARRAY']))
{
if($group_path['key'] != 0)
{
$group_row = $shop->GetGroupWithPath($group_path['value'], $parent_group_id, $current_shop_id);
$parent_group_id = $group_row['shop_groups_id'];
}
}
$all_items = $shop->GetAllItems($current_shop_id, $parent_group_id);
$i = 0;
$all_items_for_user = array();
for($groups_select = 0; $groups_select < count($all_items); $groups_select++)
{
if($all_items[$groups_select]['site_users_id'] == $site_users_filtr)
{
$all_items_for_user[$i] = $all_items[$groups_select];
$i++;
}
}
}
$xmlData .= SiteUserXml($current_shop_id, $site_users_filtr, count($all_items_for_user), array('items_for_xml' => $all_items_for_user, 'groups_for_xml' => true));
}
$xmlData .= '</shop>';
$xsl = & singleton('xsl');
$result = $xsl->build($xmlData, $xsl_file);
// Распечатаем результат
echo $result;
?>
По условиям когда появляются apply_filter&site_users_id= выводятся все объявления выбранного по фильтру пользователя, а так же, если находимся в группе, то выводим все элементы только этой группы. Казус в чем, что если у группы parent="0", то всё норм, а если больше ноля, то выводится страница 404. Почему не передается обработка моей дин странице, непонятно, ведь узел структуры тот же