我正在尝试使用SimplePie显示两个(当前,但这个数字可能会增加)Feed。我正在使用what I think is SimplePie's preferred way of doing multiple feeds,它运行良好 - 只要我对每个Feed中显示的项目数量相同感到满意。
但是,我希望能够灵活地告诉SimplePie显示两个组合输入的输出,但是从一个输入中获取10个项目(例如),而从另一个输入中只读取5个项目,这样组合输出就是倾向于一个(更重要的)来源。您认为最好的方法是什么?
这是我目前的代码。它使用多个feed对象,但如果更合理,我很乐意使用单个SimplePie对象。
<?php
require_once('simplepie/autoloader.php');
// Create a new SimplePie object
$feed = new SimplePie();
$feed->set_feed_url(array(
'http://example.com/feed1.rss',
'http://example.com/feed2.rss'
));
$feed->set_item_limit(5);
$feed->init();
$feed->set_cache_location('/var/www/simplepie/library/cache');
$feed->set_cache_duration(600);
$feed->handle_content_type();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Feed test</title>
</head>
<body>
<?php
// Begin feed output
foreach ($feed->get_items() as $item):
$authorObject = $item->get_author();
$author = $authorObject->get_name();
$feed = $item->get_feed();
// Rest of the code removed
?>
</body>
答案 0 :(得分:1)
有一项功能可以限制每次Feed提取的商品数量:set_item_limit()
$feed->set_item_limit(5);
但是,这会从每个Feed中提取相同数量的文章。您可以将其设置为10或任何您想要的最大值。我能想到的唯一方法(在我的头脑中)做你想做的就是在get_items循环中设置你自己的计数器,每次通过检查feed数据中的内容,如url或其他东西。
$cntr1 = 0;
$cntr2 = 0;
foreach ($feed->get_items() as $item) {
if ($cntr1 <= 5 && strstr($item->get_feed()->get_permalink(), [your search criteria])) {
// do your fetch of the item stuff for feed 1
$cntr1++;
}
...
}