Выборка из нескольких Инфосистем

#
Re: Выборка из нескольких Инфосистем
Оба вопроса и сортировка и выборка нужного количества элементов из нескольких ИС решены собственными силами. Все сделал в xsl. Жалко только вот поддержка как то не поддержала
Делаем лучшее
Модератор
#
Re: Выборка из нескольких Инфосистем
speedy,
Поддержка дала варианты решения. Можете теперь с коллегами поделиться решением.
#
Re: Выборка из нескольких Инфосистем
Я ж не наезжаю. Просто не дождался вас касательно второй проблемы. Но как говорится если долго мучится...

Решение как всегда оказалось простым.
Например нам нужно получить 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>


вот собственно и все
Делаем лучшее
#
Re: Выборка из нескольких Инфосистем
У меня теперь есть новый вопросик к разработчикам по ИС
вернее по тегам. Можно ли как-то выбрать теги из всех ИС и вывести их например на главной?
Если можно то опишите пожалуйста как сделать.
Делаем лучшее
Модератор
#
Re: Выборка из нескольких Инфосистем
speedy,
Такой вариант с ограничением и предлагался на предыдущей странице темы

Кстати, ограничение в XSL еще можно сделать так:
<xsl:apply-templates select="blocks/items/item[item_status=1 and 6 >= position()]">
, тогда if писать внутри темплэйта не нужно.

speedy писал(а):
вернее по тегам. Можно ли как-то выбрать теги из всех ИС и вывести их например на главной?
Если можно то опишите пожалуйста как сделать.

Стандартно нельзя, т.к. на какую страницу будет идти ссылка с тега? Вопрос, мне кажется, тоже уже обсуждался.
#
Re: Выборка из нескольких Инфосистем
Да, тоже вариант, спасибо.

Кстати проблему с тегами тоже решили и все это вывели в знаменитое флеш-облако Culumus
Работает замечательно.
Делаем лучшее
Модератор
#
Re: Выборка из нескольких Инфосистем
speedy,
отлично
#
Re: Выборка из нескольких Инфосистем
Еще вопрос к вам дорогие разработчики. Как вывести RSS канал общий для нескольких ИС?
Делаем лучшее
#
Re: Выборка из нескольких Инфосистем
Подыму тему. Вот рано я радовался
Собственно проблема возникла в сортировке по количеству просмотров.
Код
<xsl:apply-templates select="blocks/items/item[item_status=1]">
   <xsl:sort select="item_show_count" order="descending"/>
</xsl:apply-templates>


Почему-то не работает так как надо. Подскажите что не так сделано.

Вот можно убедиться тут http://www.bisgid.ru/ колонка "Лидеры просмотров".
Делаем лучшее
Модератор
#
Re: Выборка из нескольких Инфосистем
speedy писал(а):
Почему-то не работает так как надо. Подскажите что не так сделано.

что именно работает не как надо? у первого 8 просмотров, у другого нет просмотров.

speedy писал(а):
Еще вопрос к вам дорогие разработчики. Как вывести RSS канал общий для нескольких ИС?

Написать свой обработчик с выборками из ИС и генерацией RSS (есть соответствующий класс).

P.S. Сайт понравился.
Авторизация