【问题标题】:Avoid merging/combining multiple feeds with Simplepie?避免使用 Simplepie 合并/组合多个提要?
【发布时间】:2013-03-05 10:02:20
【问题描述】:

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

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

这就是我的工作:

$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 实例,但似乎没有什么可以避免在第二轮中合并两个提要。

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

搜索社区似乎没有给我任何答案 - 所以出于某种原因,我一个人遇到了这个问题。这告诉我,我从根本上在这里遗漏了一些东西? 基本上很高兴知道我如何才能真正杀死第一个提要,因此它不会合并到第二个提要中?

我真的希望我已经提供了足够的信息让你们能够回答。如果没有,那么对不起,我会尽力更新这个问题。

【问题讨论】:

    标签: php rss simplepie


    【解决方案1】:

    将您的第二个提要称为 $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 中的作用域不仅仅是一个代码块,但我不确定变量保持设置多长时间。你似乎急于 unset() 你的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      相关资源
      最近更新 更多