Ankündigung

Einklappen
Keine Ankündigung bisher.

Next / Prev auf Detailseiten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Next / Prev auf Detailseiten

    Hallöchen,

    ich baue einen Produktkatalog auf und würde gerne auf den Detail-Seiten eine Blätterfunktion einbauen, damit man nicht immer in die Listenansicht zurückspringen muss um das nächste Produkt anzusehen.

    Ist das möglich und wie kann ich das realisieren?

  • #2
    Nach welchem Attribut soll denn "geblättert" bzw. sortiert werden?
    Bei der ID würde m.E. ausreichen, die ID der jeweiligen Seite hoch zu zählen und in einen manuellen "Weiter"-Link einzubauen.

    Kommentar


    • #3
      vergiss den letzen Post...
      Einfacher wäre wohl für die Detailseite ebenfalls ein Listenmodul (mit Detail Layout) zu verwenden, Anzahl der "Einträge pro Seite" auf 1 setzen und die Paginierung auf weiter und zurück zu beschränken...
      Zuletzt geändert von eblick; 02.12.2015, 14:27.

      Kommentar


      • #4
        Hallo eblick! Danke für den Tipp - hört sich einleuchtend an und wird direkt ausprobiert

        Edit:
        Gerade ausprobiert - funktioniert super! Danke
        Zuletzt geändert von Watermusic; 02.12.2015, 16:15.

        Kommentar


        • #5
          An sich funktioniert das super - was mir nur gerade nach meiner anfänglichen Begeisterung nicht sofort aufgefallen ist:
          Die url bleibt in diesem Fall natürlich immer diesselbe und erhält zusätzlich einen Parameter mit angehängt.

          Gibt es vielleicht noch eine andere Lösung dafür?

          Kommentar


          • #6
            Gute Idee von eblick! Macht es ohne die Pagination in der zweiten Liste und kickt alles raus, was nicht direkt vor dem aktuellen Eintrag und danach kommt.

            Zweite Liste die quasi als Pagination genutzt werden soll, oder einfach direkt ins Template. In den Einstellungen alle Einträge ausgeben lassen.

            PHP-Code:
            <?php

            $current 
            = \Input::get($GLOBALS['PCT_CUSTOMCATALOG']['urlItemsParameter']); // ID oder ALIAS des aktuellen Leser Eintrags

            $prev null;
            $next null;
            // die zwei nachbareintraege finden
            foreach($this->entries as $i => $entry)
            {
                 if(
            $entry->get('alias') == $current)  // mein alias feld, heisst "alias"
                 
            {  
                     
            $prev $this->entries[$i-1];    
                     
            $next $this->entries[$i+1];  
                 }
            }

            <?
            php if($prev): ?><a class="prev" href="<?php echo $prev->links('detail')->url?>">Davor</a></php endif; ?>
            <?php if($next): ?><a class="next" href="<?php echo $next->links('detail')->url?>">Davor</a></php endif; ?>
            ?>
            Zuletzt geändert von Tim; 02.12.2015, 18:27.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Welches Template muss ich denn bearbeiten? Das Listen-Template oder das Modul-Template?

              Kommentar


              • #8
                Liste. Ins Modul Template kommt gar nicht $this->entries rein.
                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Vielen Dank, das mit der Url funktioniert jetzt perfekt
                  Da ich nun anstelle des Reader-Templates das Listen-Template mit Tims Code und den besagten Einstellungen verwende, werden nun alle Produkte auf der Detailseite ausgegeben. Ich versuche schon seit heute Mittag, dass nur das aktuelle Produkt ausgegeben wird - aber irgendwie haut es nicht hin.

                  Code:
                  <?php
                  
                  $current = \Input::get($GLOBALS['PCT_CUSTOMCATALOG']['urlItemsParameter']); // ID oder ALIAS des aktuellen Leser Eintrags
                  
                  $prev = null;
                  $next = null;
                  // die zwei nachbareintraege finden
                  
                  foreach($this->entries as $i => $entry)
                  
                  {
                      if($entry->get('alias') == $current)  // mein alias feld, heisst "alias"     
                       
                      {  
                          $prev = $this->entries[$i-1];    
                          $next = $this->entries[$i+1];  
                      }
                  }
                  
                  ?>
                  
                  <?php if($prev): ?><a class="prev" href="<?php echo $prev->links('detail')->url; ?>">Prev</a><?php endif; ?>
                  <?php if($next): ?><a class="next" href="<?php echo $next->links('detail')->url; ?>">Next</a><?php endif; ?>
                  
                  
                  <div class="produktliste <?php echo $this->class; ?> block" <?php echo $this->cssID; ?>>
                          <?php foreach($this->entries as $entry): ?>
                          <div class="entry block <?php echo $entry->class; ?>">
                                  <div class="content">
                                      <h4><?php echo $entry->field('titel')->value(); ?></h4>
                                      <div class="kurzbeschreibung"><?php echo $entry->field('kurztext')->value(); ?></div>
                                  </div>
                              <a href="<?php echo $entry->links('detail')->url; ?>" class="button">Details</a>
                          </div>
                          <?php endforeach; ?>
                  </div>

                  Kommentar


                  • #10
                    Würdest du einfach nur ein Liste Modul für die Next/Prev nutzen und einfach einen Leser für deinen Detail-Eintrag müsstest du gar nicht den aktuellen rausfiltern.

                    Der aktuelle wäre sonst einfach

                    $myEntry = null;
                    if($entry->get('alias') == $current) { $myEntry = $this-entries[$i]; }
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      Danke Tim, jetzt hab ich's... jetzt habe ich auf meiner Detailseite einen Leser-Modul untergebracht und zusätzlich das Listen-Modul mit deinem Code.

                      Danke nochmals für Eure Hilfe

                      Kommentar


                      • #12
                        Zitat von Watermusic Beitrag anzeigen
                        Danke Tim, jetzt hab ich's... jetzt habe ich auf meiner Detailseite einen Leser-Modul untergebracht und zusätzlich das Listen-Modul mit deinem Code.

                        Danke nochmals für Eure Hilfe
                        Ganz genau so! Prima
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Hallo, leider muss ich hier noch einmal nachfragen:
                          Es sind noch weitere Kategorien hinzugekommen, welche ich per Seitenwähler den Listen auf den entsprechenden Seiten/Kategorien zugewiesen habe.
                          Gehe ich nun von einer Listenseite auf eine Detailseite und möchte mich von einem Produkt zum nächsten bewegen, werden nun alle Produkte durcheinandergewürfelt.

                          Wie kann ich die Pagination für die Produkte auf eine Kategorie eingrenzen?

                          Kommentar


                          • #14
                            Es sind alles CC Listen, damit kannst du hier auch filtern wie du magst.
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              Ich habe das jetzt mal versucht so umzusetzen, indem ich das Lesermodul verwendet habe und dann noch ein weiteres Listenmodul, wo nur dein Code drin ist. Angezeigt wird aber dann nur die Pagination und nichts anderes passiert, sie springt zwar vor, aber ich kann nicht vor/zurück navigieren.

                              HAbe ich was falsch gemacht?

                              Ich habe den Fehler gefunden: Ich hatte bei der Liste noch eingetragen, dass nur ein Eintrag ausgegeben werden soll. Muss aber natürlich auf 0 stehen.
                              Zuletzt geändert von Sukrams; 02.02.2017, 14:18.

                              Kommentar

                              Lädt...
                              X