Возникли проблемы при попытке отобразить несколько RSS-каналов simplepie, а также один объединенный

#rss #simplepie

#RSS-канал #simplepie

Вопрос:

Итак, вот основной код simplepie, который я пытаюсь использовать, и я действительно не понимаю, как инициализировать другие каналы, которые я настроил. По сути, то, что я пытаюсь сделать, это поместить каждый из этих $feeds в разные divs, чтобы в первом div отображались все 3 канала, а затем по одному div для каждого после этого.

 <?php
// Include the SimplePie library
require_once('simplepie.inc');

// Because we're using multiple feeds, let's just set the headers here.
header('Content-type:text/html; charset=utf-8');

// These are the feeds we want to use
$feeds = array(
    'SITE ONE URL',
    'SITE TWO URL',
    'SITE THREE URL');

$feeds2 = array(
    'SITE ONE URL');

$feeds3 = array(
    'SITE TWO URL');

$feeds4 = array(
    'SITE THREE URL');


// This array will hold the items we'll be grabbing.
$first_items = array();

// Let's go through the array, feed by feed, and store the items we want.
foreach ($feeds as $url)
{
    // Use the long syntax
    $feed = new SimplePie();
    $feed->set_feed_url($url);
    $feed->init();

    // How many items per feed should we try to grab?
    $items_per_feed = 3;

    // As long as we're not trying to grab more items than the feed has, go through them one by one and add them to the array.
    for ($x = 0; $x < $feed->get_item_quantity($items_per_feed); $x  )
    {
        $first_items[] = $feed->get_item($x);
    }

    // We're done with this feed, so let's release some memory.
    unset($feed);
}

// We need to sort the items by date with a user-defined sorting function.  Since usort() won't accept "SimplePie::sort_items", we need to wrap it in a new function.
function sort_items($a, $b)
{
    return SimplePie::sort_items($a, $b);
}

// Now we can sort $first_items with our custom sorting function.
usort($first_items, "sort_items");


// Begin the (X)HTML page.
?>
  

Комментарии:

1. также я только что понял, что должен удалить массивы и просто поместить $feed2-> set_feed_url (‘URL ОДНОГО САЙТА’);

Ответ №1:

Я хотел бы помочь, но мне нужно лучше понять, что вы пытаетесь сделать. Насколько я понимаю, вы хотите заполнить верхний div ВСЕМ СОДЕРЖИМЫМ ТРЕХ КАНАЛОВ, а затем, ниже, иметь отдельный div с содержимым каждого из каналов. Нравится:

 <div id='feeds'>
 feed1-content-1
 feed1-content-2
 feed1-content-3
 feed2-content-1
 feed2-content-2
 feed2-content-3
 feed3-content-1
 feed3-content-2
 feed3-content-3
</div>
<div id='feeds2'>
 feed1-content-1
 feed1-content-2
 feed1-content-3
</div>
<div id='feeds3'>
 feed2-content-1
 feed2-content-2
 feed2-content-3
</div>
<div id='feeds4'>
 feed3-content-1
 feed3-content-2
 feed3-content-3
</div>
  

Если это то, что вы хотите, я хотел бы добавить свои 2цента: почему избыточность? Однако только программист действительно знает, чего (ов) он хочет достичь. Мое предложение простое: просто добавьте абзац в divs:

 $('#feeds').append('<p>' feed '</p>');
and the appropriate feed into the appropriate div in the same way.
  

Комментарии:

1. потому что им нужен навигатор с надписью «ВСЕ НОВОСТИ — САЙТ ОДНА НОВОСТЬ — САЙТ ДВЕ НОВОСТИ — САЙТ ТРИ НОВОСТИ», которые я буду скрывать и показывать divs с помощью jquery. Это глупо, я знаю.