it-swarm.dev

Impaginazione nel lettore di feed RSS personalizzato

Ho creato un modulo per leggere un feed RSS specifico e generare un elenco di feed. Il feed viene letto in questo modo:

<?php
$FeedURL = $params->get('FeedURL');
$rss     = simplexml_load_file($FeedURL);
if ($rss) {
    $items = $rss->channel->item;
    foreach ($items as $item) {
        $title        = $item->title;
        $published_on = $item->pubDate;
        $description  = $item->description;
        $obs          = $item->children("http://www.example.com/");
        $link         = $obs->files->file[0]->fileurl;
        echo '<h3>' . $title . '</h3>';
        echo '<p>(' . $published_on . ')</p>';
        echo '<p>' . $description . '</p>';
        echo '<p><a href="' . $link . '" target="_blank" class="btn">Download PDF</a></p>';
    }
}
?>

Ma il feed consegna fino a 20 articoli contemporaneamente e gli articoli successivi si ottengono aggiungendo &pageIndex=2, &pageIndex=3 ecc. all'URL del feed. Attualmente, il modulo visualizza solo i primi 20 articoli (il feed ha circa 70 articoli al momento e in crescita).

Come posso modificare il mio modulo per verificare se il feed ha più di 20 articoli e, in tal caso, aggiungere gli articoli dalle pagine successive all'elenco o, se possibile, aggiungere l'impaginazione (< Previous e Next >)?

2
johanpw

Per determinare il numero di elementi, è possibile utilizzare semplicemente quanto segue dopo il ciclo foreach per determinare il numero di elementi e creare di conseguenza la navigazione dell'impaginazione:

If (count($items) > 20) {

    // Determine current page index
    $index = JFactory::getApplication()->input->get('pageIndex', 1, 'integer');

    // pagination logic here
    $pagination = '';
    if ($index >= 2) {

        // need before button, build link using index minus 1 and create link HTML
        $pagination .= "<a href='" . $previousLink . "'>Previous</a>";

    }

     // build after link using index plus 1 and create link HTML
    $pagination .= "<a href='" . $nextLink . '">Next</a>";
}

Ora, questo non è testato e richiede di creare effettivamente i collegamenti, ma la logica di base è lì. Spero che questo ti aiuti, buona fortuna!

2
Brian Bolli