Я ж не наезжаю. Просто не дождался вас касательно второй проблемы. Но как говорится если долго мучится...
Решение как всегда оказалось простым.
Например нам нужно получить 6 элементов из 5-ти ИС с сортировкой по количеству просмотров. При этом нужно чтобы сортировка была объективной. Т.е. чтобы из элементов всех! ИС выбрало и отсортировало по просмотрам, а не по 2 например элемента брало из каждой системы.
Для начала выбираем элементы из всех ИС:
<?php
/* Вывод информационных систем */
$InformationSystem = & singleton('InformationSystem');
$external_propertys=array();
$external_propertys['ОтображатьСсылкуНаАрхив']=0;
$external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;
/* Количество выводимых элементов - ставим число которое должно соответствовать результирующему количеству элементов! */
$item_count = 6;
/* Выбираем наши системы */
$InformationSystemIdArray = array (5,15,16,17,18);
/*Из всех групп*/
$InformationGroupId = false; // false - из всех групп, 0 - из корневой группы
/* Сортируем сразу по количеству просмотров. чтобы не выбирало все подряд */
$param = array();
$param['OrderField'] = 'information_items_show_count';
$param['Order'] = 'DESC';
$InformationSystem->ShowInformationSystem($InformationSystemIdArray, $InformationGroupId, 'Лидеры',$item_count,0,$external_propertys,$param);
?>
Далее в xsl шаблоне вместо
<xsl:apply-templates select="blocks/items/item[item_status=1]"/>
пишем
<xsl:apply-templates select="blocks/items/item[item_status=1]">
<xsl:sort select="item_show_count" order="descending"/>
</xsl:apply-templates>
в шаблоне вывода элемента добавляем ограничения выбирать только 6 элементов
<xsl:template match="blocks/items/item">
<xsl:if test="6 >= position()">
шаблон вывода единицы ИС...
</xsl:if>
</xsl:template>
вот собственно и все