避免使用Simplepie合并/组合多个Feed?

时间:2013-03-05 10:02:21

标签: php rss simplepie

这是我的问题。我正在使用Simplepie来获取RSS源。在同一页面上,我试图显示两个RSS源(例如,在两个不同的列中)。这两个订阅源来自同一个域(但我不认为这是一个问题,即domain.com/feed1,domain.com/anotherfeed)。

我的问题是Simplepie 不断合并Feed 。因此,在第一列中,我正确地查看了第一个Feed,但第二列是我的两个Feed的组合版本 - 这不是意图。

这就是我的所作所为:

$feed = new SimplePie();
$feed->set_feed_url($url1);
$feed->init();          
$rss = $feed->get_items();
$feed->__destruct(); // Do what PHP should be doing on it's own.
unset($feed); 

$feed = new SimplePie();
$feed->set_feed_url($url2);
$feed->init();          
$rss = $feed->get_items();
$feed->__destruct(); // Do what PHP should be doing on it's own.
unset($feed); 

最后两行是试图摆脱第一个$ feed实例,但似乎没有任何东西能够避免在第二轮中合并两个feed。

起初,我认为这与缓存问题有关,但禁用缓存并没有帮助。

搜索社区似乎没有给我任何答案 - 所以出于某种原因我一个人解决这个问题。这告诉我,我从根本上错过了一些东西吗? 基本上我很高兴知道如何杀死第一个Feed,所以它不会合并到第二个Feed中?

我真的希望我能为你们提供足够的信息以便能够回答。如果没有,那我很抱歉,我会尽力更新这个问题。

1 个答案:

答案 0 :(得分:0)

打电话给你的第二个Feed除了$ feed以外的其他东西,也许并不重要on my homepage我在头脑中这样做:

<?php 
include_once './news/php/autoloader.php'; 
$muskblogFeed = new SimplePie();
$muskblogFeed->set_feed_url('http://blog.muschamp.ca/feed/');
$muskblogFeed->init();
$quotationFeed = new SimplePie();
$quotationFeed->set_feed_url('http://quotations.muschamp.ca/qotdFeed.php');
$quotationFeed->init();
$miniatureFeed = new SimplePie();
$miniatureFeed->set_feed_url('http://musksminiatures.wordpress.com/feed/');
$miniatureFeed->init();
?>

然后在身体中显示我有这个的饲料:

    <h3>My Quotation of the Day <a href="<?php print $quotationFeed->subscribe_url(); ?>"><img src="CommonImages/SocialMediaIcons/rss_16.png" class="rss16" /></a></h3>
    <?php foreach ($quotationFeed->get_items(0, 1) as $item): ?>
            <?php print('<blockquote id="quotation">' . $item->get_content() . '<br/><a href="' . $item->get_permalink() . '" style="float: right; padding-top: 2px; margin-top: 5px;">' . $item->get_title() . '</a></blockquote>'); ?>
    <?php endforeach; ?>
    <br />
    <h3>Now on Muskblog <a href="<?php print $muskblogFeed->subscribe_url(); ?>"><img src="CommonImages/SocialMediaIcons/rss_16.png" class="rss16" /></a></h3>
    <ul>
    <?php foreach ($muskblogFeed->get_items(0, 3) as $item): ?>
        <li>
            <a href="<?php print $item->get_permalink(); ?>">
            <?php print $item->get_title(); ?></a>
        </li>
    <?php endforeach; ?>
    </ul>
    <h3>Now on Musk's Miniatures <a href="<?php print $miniatureFeed->subscribe_url(); ?>"><img src="CommonImages/SocialMediaIcons/rss_16.png" class="rss16" /></a></h3>
    <ul>
    <?php foreach ($miniatureFeed->get_items(0, 3) as $item): ?>
        <li>
            <a href="<?php print $item->get_permalink(); ?>">
            <?php print $item->get_title(); ?></a>
        </li>
    <?php endforeach; ?>
    </ul>

以上工作正常,也许你需要将工作分解为头部和身体,我不是一个PHP人,我甚至不假装在Stack Overflow上。显然,变量在PHP中的范围比单个代码块更长,但我不确定变量保持多长时间。你似乎急于取消()你的。