it-swarm.com.de

Paginierung im benutzerdefinierten RSS-Feed-Reader

Ich habe ein Modul zum Lesen eines bestimmten RSS-Feeds und zum Ausgeben einer Liste der Feeds erstellt. Der Feed lautet wie folgt:

<?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>';
    }
}
?>

Der Feed liefert jedoch bis zu 20 Artikel gleichzeitig, und nachfolgende Artikel erhalten Sie durch Hinzufügen von &pageIndex=2, &pageIndex=3 usw. zur Feed-URL. Derzeit werden nur die ersten 20 Elemente vom Modul angezeigt (der Feed enthält derzeit ca. 70 Elemente und wächst).

Wie ändere ich mein Modul, um zu überprüfen, ob der Feed mehr als 20 Elemente enthält, und wenn dies der Fall ist, fügen Sie die Elemente von nachfolgenden Seiten zur Liste hinzu, oder fügen Sie nach Möglichkeit eine Paginierung hinzu (< Previous und Next >)?

2
johanpw

Um die Anzahl der Elemente zu bestimmen, können Sie nach der foreach-Schleife einfach Folgendes verwenden, um die Anzahl der Elemente zu bestimmen und die Paginierungsnavigation entsprechend auszubauen:

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>";
}

Dies ist noch nicht getestet und erfordert, dass Sie die Verknüpfungen tatsächlich erstellen, aber die Kernlogik ist vorhanden. Hoffe das hilft, viel Glück!

2
Brian Bolli