Blätterfunktion Delux

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Blätterfunktion Delux

    Hallo liebe Community,

    ich habe grade mir vorgenommen meine vorhanden "Blätterfunktion" im Forum noch etwas zu Perfektionieren.

    So soll es sein am Ende:

    Quellcode

    1. Gehe zu Seite Zurück 1 , 2 , 3 ... 5 , 6 , 7 ... 65 , 66 , 67 Weiter


    Nur stehe ich vor dem Problem wie Programmiert man am besten die Logik dazu, ich würde wohl jetzt eine Aufwendige IF-else konstruieren.

    Meine Funktion sieht momentan so aus!

    Quellcode

    1. function show_site_nav($url,$seite,$max)
    2. {
    3. $string ="<ul>\n";
    4. for($a=0; $a < $max; $a++)
    5. {
    6. $b = $a + 1;
    7. if($b != $max)
    8. {
    9. //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
    10. if($seite == $b)
    11. {
    12. $string .= "<li><strong>$b</strong></li>\n";
    13. $string .= "<li>|</li>\n";
    14. }
    15. //Auf dieser Seite ist der User nicht, also einen Link ausgeben
    16. else
    17. {
    18. $string .= "<li><a href=\"".$url."&seite=$b\">$b</a></li> \n";
    19. $string .= "<li>|</li>\n";
    20. }
    21. } else // Letzte Seite
    22. {
    23. //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
    24. if($seite == $b)
    25. {
    26. $string .= "<li><strong>$b</strong></li>\n";
    27. }
    28. //Aus dieser Seite ist der User nicht, also einen Link ausgeben
    29. else
    30. {
    31. $string .= "<li><a href=\"".$url."&seite=$b\">$b</a></li> \n";
    32. }
    33. }
    34. }
    35. $string .="</ul>\n";
    36. return $string;
    37. }
    Alles anzeigen


    Leider bin ich noch nicht auf die zündende Idee gekommen, wie man das am besten elegant Programmiert :D

    Vielleicht hattet ihr ja schon mal die gleichen Probleme, und habt paar Tips für micht!

    Gruß
    Stephan
  • Ich hatte da vor einiger Zeit mal etwas schreiben müssen. Hab mal versucht, etwas allgemein tauglich zu machen, eventuell musst es aber hier und da noch etwas anpassen, vor allem was den Zahlenbereich angeht, der angezeigt werden bzw. eben nicht angezeigt werden soll.

    Je nachdem wo sich die Seitenzahl befinden soll, muss an dieser Stelle im Parameter $url ein "(%page)" eingebaut sein. In diesem Fall wäre es "?page=(%page)".

    Quellcode

    1. function create_page($count,$limit,$url) {
    2. $start = $_GET['page'];
    3. $return = array();
    4. // Anzahl Seiten
    5. $num_pages = ceil($count/$limit);
    6. // Anzahl auf min. 1
    7. if(!$num_pages) $num_pages = 1;
    8. // Startseite muss zwischen
    9. // 1 und $num_pages liegen
    10. if($start < 1) $start = 1;
    11. if($start > $num_pages) $start = $num_pages;
    12. // offset für die SQL-Abfrage
    13. $return['offset'] = ($start - 1) * $limit;
    14. // Ist eine Ausgabe der Seiten überhaupt nötig?
    15. if($num_pages == 1) $return['pages'] = '';
    16. else {
    17. $return['pages'] = '<ul>';
    18. for($i = 1,$break = false; $i <= $num_pages; $i++) {
    19. // Aktive Seite
    20. if($i == $start) $return['pages'] .= "<li><b>$i</b></li>";
    21. // Seite noch im möglichen Bereich?
    22. // Ja, dann Seitenzahl
    23. elseif(($i <= $start + 2 && $i >= $start - 2) || $i <= 3 || $i >= $num_pages - 2) {
    24. $return['pages'] .= "<li><a href=\"".str_replace('(%page)','Seite/'.$i,$url)."\">$i</a></li>";
    25. // Nein, dann '...'
    26. }elseif(!$break) {
    27. $return['pages'] .= "<li><span>...</span></li>";
    28. $break = true;
    29. }
    30. }
    31. $return['pages'] .= '</ul>';
    32. }
    33. return $return;
    34. }
    Alles anzeigen


    Demo: weltraumpalast.de/
  • Das kennt eigentlich keiner außer mir. Es handelt sich dabei um einen von mir ausgedachten Platzhalter, den ich verwende, die Seitenzahl in Links einzubetten. Natürlich könnte ich die Seitenzahl auch einfach hinten dran hängen lassen, da man aber bei mod_rewrite auch Adressen wie www.domain/derBeitrag/Seite/6/ bekommen kann und 6 dort nicht ganz hinten steht, ist es einfacher, einen String zu bauen, in dem der von mir ausgedachte Platzhalter vorkommt und von der Funktion mit der Seitenzahl ersetzt wird. Ein Beispiel, wie du die Funktion aufrufen könntest:

    Quellcode

    1. $count = 27; // Anzahl der Beiträge
    2. $limit = 6; // Anzahl der Beiträge pro Seite
    3. $url = 'http://www.domain.de/index.php?entry=4&page=(%page)'; // Adresse der Links (der Seitenzahlen) mit dem "hermanischen" Platzhalter (%page)
    4. create_page($count,$limit,$url);