Код демонстрации нескольких каналов SimplePie не работает. Что я должен использовать вместо этого?

Я пытаюсь понять, почему код, размещенный на веб-сайте SimplePie для отображения нескольких каналов, не работает. В частности, этот пример кода:

http://simplepie.org/wiki/tutorial/sort_multiple_feeds_by_time_and_date

Вот конкретно то, что я использую:

<?php
// Include the SimplePie library
// For 1.0-1.2:
#require_once('simplepie.inc');
require_once($_SERVER['DOCUMENT_ROOT']."/path/to/simplepie/autoloader.php");
// For 1.3+:

// Create a new SimplePie object
$feed = new SimplePie();

// Instead of only passing in one feed url, we'll pass in an array of three
$feed->set_feed_url(array(
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1891&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1313&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5811&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1044&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1804&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5512&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5127&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5128&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1440&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1085&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1095&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5395&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5429&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=5482&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1812&year=2013',
'http://apps.leg.wa.gov/billinfo/SummaryRss.aspx?bill=1457&year=2013'
));

// Initialize the feed object
$feed->init();

// This will work if all of the feeds accept the same settings.
$feed->handle_content_type();

// Begin our HTML markup
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head>
    <title>Awesome feeds</title>

    <style type="text/css">
    h4.title {
        /* We're going to add some space next to the titles so we can fit the 16x16 favicon image. */
        background-color:transparent;
        background-repeat:no-repeat;
        background-position:0 1px;
        padding-left:20px;
    }
    </style>
</head>
<body>
    <div id="site">

        <?php if ($feed->error): ?>
        <p><?php echo $feed->error; ?></p>
        <?php endif; ?>

        <h1>Awesome feeds</h1>

        <?php foreach ($feed->get_items() as $item): ?>

        <div class="chunk">

            <?php /* Here, we'll use the $item->get_feed() method to gain access to the parent feed-level data for the specified item. */ ?>
            <h4 class="title" style="background-image:url(<?php $feed = $item->get_feed(); echo $feed->get_favicon(); ?>);"><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h4>

            <?php echo $item->get_content(); ?>

            <p class="footnote">Source: <a href="<?php $feed = $item->get_feed(); echo $feed->get_permalink(); ?>"><?php $feed = $item->get_feed(); echo $feed->get_title(); ?></a> | <?php echo $item->get_date('j M Y | g:i a T'); ?></p>

        </div>

        <?php endforeach; ?>

    </div>
</body>
</html>

И это вывод HTML, который я получаю:

<body>
    <div id="site">

        <h1>Awesome feeds</h1>

        <div class="chunk">
 <h4 class="title" style="background-image:url(<br />
<b>Warning</b>:  Favicon handling has been removed, please use your own handling in <b>/home/user/domain/library/SimplePie.php</b> on line <b>2946</b><br />
http://g.etfv.co/http%3A%2F%2Fapps.leg.wa.gov%2Fbillinfo%2Fsummary.aspx%3Fbill%3D1044%26amp%3Byear%3D2013);"><a href="<br />
<b>Fatal error</b>:  Call to a member function get_base() on a non-object in <b>/home/user/domain/folder/subfolder/simplepie/library/SimplePie/Item.php</b> on line <b>167</b><br />

Я пробовал возиться с кодом (например, я могу обойтись без значков избранного), но всегда получаю сообщения о фатальных ошибках, в которых говорится: «Вызов функции-члена [заполните пробел] на не -object в [файле SimplePie]".

Есть ли более современный код, который мне следует использовать в качестве шаблона для создания страниц, обрабатывающих несколько каналов? Что мешает работать SimplePie?


person Seascape    schedule 08.03.2013    source источник
comment
Мой код почти не отличается от того, что в учебнике. Но я написал именно то, чем пользуюсь.   -  person Seascape    schedule 09.03.2013


Ответы (2)


Я не уверен, какую версию SimplePie вы используете, но, видимо,

Обработка Favicon была удалена, пожалуйста, используйте свою собственную обработку в /home/user/domain/library/SimplePie.php в строке 2946.

Предполагая, что вы не хотите отлаживать сам SimplePie, вы не должны вызывать это:

$feed->get_favicon()

Для начинающих. Я не знаю, почему поддержка favicon была удалена, потому что я ее использую, но опять же, я мог написать обходной путь или использовать более старую (худшую) версию SimplePie. Вытащите содержимое фавикона и повторите попытку.

person Muskie    schedule 12.03.2013

Мне не нравилось смотреть на пример кода таким, каким он был, с экземпляром $feed в одной области видимости и другим экземпляром $feed в области действия конструкции foreach(). Итак, я переименовал первый экземпляр $feed в $the_feed, оставив переменные $feed внутри foreach такими, какими они были.

Жалобы на вызовы методов на не-объектах ушли на публичный (iPage) сервер.

Я попал сюда в поисках ответа на аналогичную проблему. В моем случае то, что отлично работало на моем домашнем сервере, не работало бы на общедоступном сервере (iPage). На домашнем сервере работает PHP версии 5.3.3-7, а на общедоступном сервере — 5.2.17. Еще одно отличие состоит в том, что домашний сервер имеет Server API=Apache 2.0 Handler, а публичный — Server API=CGI. Не уверен, что эти пункты важны.

person StillwaterEng    schedule 07.12.2013