Das Thema Menüs:
Ich such' mir was

Pagination von Dokument-Listen

Hier ein kleines Beispiel zur mehrseitigen Ausgabe von Dokumenten eines Menü-Items

Wenn ein Menü-Item auf Listendarstellung steht, dann gibt die Methode GetDocuments() alle Dokumente des Menü-Items zurück. Das kann eine lange Liste sein. Hier wäre es dann schöner die Liste zu paginieren, d.h. die Liste auf mehrere Seiten aufzuteilen.

Zu diesem Zweck stehen ein Eigenschaft und zwei weitere Methoden im Menü-Item zur Verfügung:

Mit der Methode GetPagination() bekommen Sie einen String vom Menü-Item zurückgeliefert, den Sie als Paginations-Navigation anzeigen können. Der Methoden übergeben Sie
 

  1. Die maximale Anzahl an Dokumenten pro Seite
  2. Die maximale Anzahl an Seiten in der Pagination
  3. Einen String als Zeichenfolge für den Sprung zur ersten Seite
  4. Einen String als Zeichenfolge für einen Sprung zur vorhergehenden Seite
  5. Einen String als Zeichenfolge für einen Sprung zur nächsten Seite
  6. Einen String als Zeichenfolge für einen Sprung zu letzten Seite
  7. Einen String als Trennzeichfolge zur Anzeige zwischen den Seiten

Mit der Methode  GetRangeOfDocuments() bekommen Sie nicht alle, sondern nur einen Teil der Dokumente des Menü-Items zurückgeliefert. Sie übergeben der Menthode die Parameter
 

  1. Index des ersten Dokuments der Liste
  2. Anzahl der Dokumente, die Sie zurückbekommen möchten

Der Index der aktuellen Seite lässt sich über die Eigenschaft selectedPage des Menü-Items ermittlen. Daraus ergibt sich der Index des aktuellen Dokuements der Seite als

$startDoc = ($menuItem->selectedPage - 1) * $docsPerPage; 

Zusammengefasst sieht das dann so aus.

// Aktuelles MenüItem
$menuItem = $toFolks->selectedMenuItem; 

// Anzahl der Eintraege pro Seite
$docsPerPage = 10;

// Maximale Anzahl an Seiten in der Pagination
$maxPages = 5;

// Vom Menü-Item eine Pagination für die Liste zurueckgeben lassen 
$pagination = $menuItem->GetPagination($docsPerPage, $maxPages, "<<", "<", ">", ">>", "&nbsp;|&nbsp;");
 
// Startseite innerhalb der paginierten Liste festlegen
$startDoc = ($menuItem->selectedPage - 1) * $docsPerPage; 

// Liste der Dokumente abfragen
$docs = $menuItem->GetRangeOfDocuments($startDoc, $docsPerPage);
if (count($docs) > 0)
{
  foreach($docs as $doc) ..... ;
}


// Pagination ausgeben
echo $pagination; 

Letztes Update: 27.02.2009    |    Powered by 2FOLKS    |    Kontakt    |    Impressum