Paging durch alle Seiten, Levels

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Paging durch alle Seiten, Levels

Beitragvon PXDemon » 12. Okt 2007, 15:00

Hallo, ich verwende eine Paging < Next | Prev > Script was ich hier im Forum gefunden und mir daraus zusammen gebaut habe. Man kann via Vor und Zurück button durch die Ganzen Kategorien Zappen, sollte man zumindest...

Jetzt mein Problem, er paged leider nur durchs erste und zweite Level Müsste aber durch mindest mal 4 Levels möglich sein. Offensichtlich scheint das Script auch nur mit $i-1 bzw $i+1 die beiden links zu erstellen, was mir im dem sinne spanisch vorkommt weil es ja zbs sein kann.

1| Home
2| Galerien
25| Bilder
26| Mehr Bilder
3| Überuns
4| Kontakt

Stehe hier auf dem Schlauch mit dem Script.

Code: Alles auswählen
               $rootCats = OOCategory::getRootCategories(true);
               $sitemap = array();
               if (!empty($rootCats)) {
                  foreach ($rootCats as $rootCat) {
                    foreach ($rootCat->getArticles(true) as $a) {
                      $sitemap[] = $a->getId();
                    }
                    $childCats = $rootCat->getChildren(true);
                    if (!empty($childCats)) foreach($childCats as $childCat) {
                      foreach ($childCat->GetArticles(true) as $a) {
                        $sitemap[] = $a->getId();
                      }
                    }
                  }
               }
               
               
               $aid = $this->getValue("article_id");
               //$sitemap =array(20,21,22,23,24);
               foreach ($sitemap as $i => $id) {
                  if ($id == $aid) {
                    $prev = $sitemap[$i-1];
                    $next = $sitemap[$i+1];
                  }
               }
               if (is_numeric($prev)) $links["prev"] = rex_geturl($prev);
               else $links["prev"] = '#';
               if (is_numeric($next)) $links["next"] = rex_geturl($next);
               else $links["next"] = '#';
               echo $links["prev"] . ' - ' . $links["next"];

PXDemon
 
Beiträge: 25
Registriert: 26. Jul 2007, 13:25

Beitragvon n.ruediger » 12. Okt 2007, 17:22

Hallo,

das mit $i+1, $i-1 ist schon korrekt. Damit wird im Array sitemap gewandert, dessen Werte dann wiederum die Artikelids sind.

Zu dem Problem mit den Level:


Code: Alles auswählen
               $rootCats = OOCategory::getRootCategories(true);
               $sitemap = array();
               if (!empty($rootCats)) {
                  foreach ($rootCats as $rootCat) {
                    foreach ($rootCat->getArticles(true) as $a) {
                      $sitemap[] = $a->getId();
                    }
                    $childCats = $rootCat->getChildren(true);
                    if (!empty($childCats)) foreach($childCats as $childCat) {
                      foreach ($childCat->GetArticles(true) as $a) {
                        $sitemap[] = $a->getId();
                      }

                    // Level 3 einlesen
                    $childCats_lvl3 = $childCat->getChildren(true);
                    if (!empty($childCats_lvl3)) foreach($childCats_lvl3 as $childCat_lvl3) {
                      foreach ($childCat_lvl3->GetArticles(true) as $a) {
                        $sitemap[] = $a->getId();
                      }

                       // Level 4 einlesen
                      $childCats_lvl4 = $childCat_lvl3->getChildren(true);
                      if (!empty($childCats_lvl4)) foreach($childCats_lvl4 as $childCat_lvl4) {
                        foreach ($childCat_lvl4->GetArticles(true) as $a) {
                          $sitemap[] = $a->getId();
                        }
                    }
                  }
               }


Liebe Grüße,
Nicole
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon PXDemon » 15. Okt 2007, 10:10

Hallo,

super besten Dank. Funktioniert bestens, musste nur noch 2 geschweifte klammern einfügen, am ende level4 einlesen habe ich also } } ergänzt.

Code: Alles auswählen
            $rootCats = OOCategory::getRootCategories(true);
               $sitemap = array();
               if (!empty($rootCats)) {
                  foreach ($rootCats as $rootCat) {
                    foreach ($rootCat->getArticles(true) as $a) {
                      $sitemap[] = $a->getId();
                    }
               
                    $childCats = $rootCat->getChildren(true);
                    if (!empty($childCats)) foreach($childCats as $childCat) {
                      foreach ($childCat->GetArticles(true) as $a) {
                        $sitemap[] = $a->getId();
                      }

                    // Level 3 einlesen
                    $childCats_lvl3 = $childCat->getChildren(true);
                    if (!empty($childCats_lvl3)) foreach($childCats_lvl3 as $childCat_lvl3) {
                      foreach ($childCat_lvl3->GetArticles(true) as $a) {
                        $sitemap[] = $a->getId();
                      }

                       // Level 4 einlesen
                      $childCats_lvl4 = $childCat_lvl3->getChildren(true);
                      if (!empty($childCats_lvl4)) foreach($childCats_lvl4 as $childCat_lvl4) {
                        foreach ($childCat_lvl4->GetArticles(true) as $a) {
                          $sitemap[] = $a->getId();
                        }
                  
                    }
                  }
               }
        }
    }
PXDemon
 
Beiträge: 25
Registriert: 26. Jul 2007, 13:25

Beitragvon PXDemon » 23. Okt 2007, 10:18

habe jetzt noch das Problem das wenn ich eine 2. Sprache anlege das Pagin nicht mehr richtig arbeitet. Er geht immer auf clang=0 anstatt auf clang=1

Muss man an dieser stelle hier was ändern ?
$this->getValue("article_id");

Hier noch mal mein Source

Code: Alles auswählen
$aid = $this->getValue("article_id");
               foreach ($sitemap as $i => $id) {
                  if ($id == $aid) {
                    $prev = $sitemap[$i-1];
                    $next = $sitemap[$i+1];
                  }
               }
               if (is_numeric($prev)) $links["prev"] = rex_geturl($prev);
               else $links["prev"] = '#';
               if (is_numeric($next)) $links["next"] = rex_geturl($next);
               else $links["next"] = '#';
               echo $links["prev"] . ' - ' . $links["next"];
PXDemon
 
Beiträge: 25
Registriert: 26. Jul 2007, 13:25

Beitragvon Michael83 » 23. Okt 2007, 10:47

Versuchs mal so:
Code: Alles auswählen
$aid = $this->getValue("article_id");
               foreach ($sitemap as $i => $id) {
                  if ($id == $aid) {
                    $prev = $sitemap[$i-1];
                    $next = $sitemap[$i+1];
                  }
               }
               if (is_numeric($prev)) $links["prev"] = rex_geturl($prev, $REX['CUR_CLANG']);
               else $links["prev"] = '#';
               if (is_numeric($next)) $links["next"] = rex_geturl($next, $REX['CUR_CLANG']);
               else $links["next"] = '#';
               echo $links["prev"] . ' - ' . $links["next"];
Gruß,
Michael
Benutzeravatar
Michael83
 
Beiträge: 189
Registriert: 22. Aug 2006, 15:59
Wohnort: Reichshof

Beitragvon PXDemon » 23. Okt 2007, 11:17

Hallo Michael,

spitze edas ganze funktioniert bestens.
Viele Dank für deine Hilfe.

Gruß P.
PXDemon
 
Beiträge: 25
Registriert: 26. Jul 2007, 13:25

Beitragvon ska » 29. Okt 2007, 18:41

(Wie) kann man das denn begrenzen, so dass man nur durch die jeweiligen Unterkategorien einer Hauptkategorie (bzw. deren Startartikel) blättern kann?

Kat1
- Subkat1
- Subkat2
- Subkat3
Kat2

Auf der Seite 'Subkat3' sollte demnach kein "Weiter"-Link mehr kommen, analog dazu sollte auf 'Subkat1' kein "Zurück"-Link stehen. Geht sowas?

Ich habe den oberen Code schon auf zwei Ebenen gekürzt (mehr gibt's nicht), aber was muss ich unten bei den zurück/weiter-Links ändern?
ska
 
Beiträge: 65
Registriert: 27. Okt 2007, 13:39
Wohnort: Wiesbaden

Beitragvon n.ruediger » 29. Okt 2007, 19:38

Hallo,

versuch es mal so (hab ich nicht getestet, aber klingt logisch für mich):

Code: Alles auswählen
               $rootCats = OOCategory::getRootCategories(true);
               $sitemap = array();
               if (!empty($rootCats)) {
                  foreach ($rootCats as $rootCat) {
                    $sitemap [] = '';
                    $childCats = $rootCat->getChildren(true);
                    if (!empty($childCats)) {
                      foreach($childCats as $childCat) {
                        foreach ($childCat->GetArticles(true) as $a) {
                          $sitemap[] = $a->getId();
                        }
                      }
                    }
                  }
               }
               
               
               $aid = $this->getValue("article_id");
               //$sitemap =array(20,21,22,23,24);
               foreach ($sitemap as $i => $id) {
                  if ($id == $aid) {
                    if ($sitemap[$i-1] != '') {
                      $prev = $sitemap[$i-1];
                    }
                    if ($sitemap[$i+1] != '') {
                      $next = $sitemap[$i+1];
                    }
                  }
               }
               if (is_numeric($prev)) $links["prev"] = rex_geturl($prev, $REX['CUR_CLANG']);
               if (is_numeric($next)) $links["next"] = rex_geturl($next, $REX['CUR_CLANG']);
               echo $links["prev"] . ' - ' . $links["next"];
Benutzeravatar
n.ruediger
 
Beiträge: 418
Registriert: 21. Mär 2007, 11:25
Wohnort: Frankfurt (Oder)

Beitragvon ska » 30. Okt 2007, 12:34

Super, genau so geht's! Und mit
Code: Alles auswählen
<? if ($prev != ('')) { ?><a href="<? echo $links["prev"] ?>">zurück</a><? } ?>

kann ich dann die Links entsprechend ausblenden. Danke!
ska
 
Beiträge: 65
Registriert: 27. Okt 2007, 13:39
Wohnort: Wiesbaden


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast