RSS из нескольких informationsystems

#
RSS из нескольких informationsystems
Добрый день! Подскажите как выводить в rss данные из нескольких informationsystems?

$oInformationsystem = Core_Entity::factory('Informationsystem', 1); // Как передать массив с номера, например [1, 20, 30]

$Informationsystem_Controller_Rss_Show = new Informationsystem_Controller_Rss_Show($oInformationsystem);

$Informationsystem_Controller_Rss_Show
  ->offset(Core_Page::instance()->libParams['begin'])
  ->limit(Core_Page::instance()->libParams['count'])
  ->yandex(Core_Page::instance()->libParams['yandexFullText'])
  ->group(Core_Page::instance()->libParams['informationGroupId'] == 0
    ? FALSE
    : Core_Page::instance()->libParams['informationGroupId']
  )
  ->stripTags(Core_Page::instance()->libParams['stripTags']);

if (Core_Page::instance()->libParams['rssTitle'])
{
  $Informationsystem_Controller_Rss_Show
    ->title(Core_Page::instance()->libParams['rssTitle']);
}

if (Core_Page::instance()->libParams['rssDescription'])
{
  $Informationsystem_Controller_Rss_Show
    ->description(Core_Page::instance()->libParams['rssDescription']);
}

if (Core_Page::instance()->libParams['rssUrl'])
{
  $Informationsystem_Controller_Rss_Show
    ->link(Core_Page::instance()->libParams['rssUrl']);
}

if (Core_Page::instance()->libParams['rssImage'])
{
  $oSiteAlias = $oInformationsystem->Site->getCurrentAlias();
  if ($oSiteAlias)
  {
    $Informationsystem_Controller_Rss_Show->image(array(
      'url' => Core_Page::instance()->libParams['rssImage'],
      'title' => $oInformationsystem->name,
      'link' => 'http://' . $oSiteAlias->name . '/'
    ));
  }
}

$Informationsystem_Controller_Rss_Show->show();

exit();
#
Re: RSS из нескольких informationsystems
Или как сделать чтобы в динамической странице работал этот код:

<?php

function RSS($data) {
  $feed = '';
  foreach ($data as $info) {
    $id = $info['id'];
    $name = $info['name'];
    $feed .= "<item>
      <title>$id</title>
      <description>$name</description>
    </item>\n";
  }
  return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<rss xmlns:yandex=\"http://news.yandex.ru\" version=\"2.0\">
  <channel>
    <pubDate>0</pubDate>
    <generator>HostCMS</generator>
    <title>1</title>
    <description>2</description>
    <link>3</link>
    <image>
      <url>logo.png</url>
      <title>4</title>
      <link>5</link>
    </image>
    $feed
  </channel>
</rss>";
}

/****************************************************/

$aStoriesRSS = array();
$query = "SELECT DISTINCT * FROM `informationsystem_items` WHERE `informationsystem_id` IN (1,20,30)  DESC LIMIT 30";
$stories = mysqli_query($link, $query);
$i = 0;
while ($row = mysqli_fetch_assoc($stories)) {
  $aStoriesRSS[$i]['id'] = $row['id'];
  $aStoriesRSS[$i]['name'] = $row['name'];
  $i++;
}
header('Content-Type: text/xml; charset=utf-8');
echo RSS($aStoriesRSS);
?>

Модератор
#
Re: RSS из нескольких informationsystems
1. Стандартный контроллер Informationsystem_Controller_Rss_Show работает только с одной ИС.
2. В своем коде не используйте функции mysql_*, используйте ORM
3. Как формировать RSS см. код Informationsystem_Controller_Rss_Show и используйте Core_Rss
#
Re: RSS из нескольких informationsystems
Вот с первыми 2-мя пунктами понятно:
$aInforSystem = array('1', '20', '30');
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
   ->from('informationsystem_items')
   ->where('informationsystem_id', 'IN', $aInforSystem)
   ->orderBy('sorting', 'DESC')
   ->limit(30);
$aRows = $oCore_QueryBuilder_Select->execute()->asAssoc()->result();


А вот как сформировать RSS с помощью Core_Rss не пойму...
Модератор
#
Re: RSS из нескольких informationsystems
seju писал(а):
А вот как сформировать RSS с помощью Core_Rss не пойму...

Я же вам дал выше совет, дублирую: Как формировать RSS см. код Informationsystem_Controller_Rss_Show
Авторизация