Ankündigung

Einklappen
Keine Ankündigung bisher.

Next / Prev auf Detailseiten

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

  • D23
    antwortet
    Haut hin. Dankeschön!

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Die ID ist einzigartig. Siehe Spalte in der DB

    Einen Kommentar schreiben:


  • D23
    antwortet
    Zitat von Tim Beitrag anzeigen
    Über die ID des aktuellen Eintrags, kann man ebenfalls über Inserttag ermitteln lassen, verglichen mit der ID der Einträge im Array. $entry->field('id')->value(); // kommt immer mit

    Hatte ich schon versucht. Wenn aber der Eintrag ID=1 gelöscht wird, ist der "erste" ja ID=2... oder hab ich da nen Denkfehler?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Über die ID des aktuellen Eintrags, kann man ebenfalls über Inserttag ermitteln lassen, verglichen mit der ID der Einträge im Array. $entry->field('id')->value(); // kommt immer mit

    Einen Kommentar schreiben:


  • D23
    antwortet
    Hi,

    ich klink mich hier mal kurz ein.
    Hab erfolgreich das oben geschrieben umgesetzt. Jetzt such ich noch eine Möglichkeit eine Anzahl-Anzeige einzubauen, in etwa: "Eintrag 4 von 15"
    Geht das?
    Die totale Anzahl hab ich über das entspr. Insert-Tag geholt, aber wie finde ich die aktuelle Position des Eintrags im Array?

    Einen Kommentar schreiben:


  • Sukrams
    antwortet
    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.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Es sind alles CC Listen, damit kannst du hier auch filtern wie du magst.

    Einen Kommentar schreiben:


  • Watermusic
    antwortet
    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?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    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

    Einen Kommentar schreiben:


  • Watermusic
    antwortet
    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

    Einen Kommentar schreiben:


  • Tim
    antwortet
    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]; }

    Einen Kommentar schreiben:


  • Watermusic
    antwortet
    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>

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Liste. Ins Modul Template kommt gar nicht $this->entries rein.

    Einen Kommentar schreiben:


  • Watermusic
    antwortet
    Welches Template muss ich denn bearbeiten? Das Listen-Template oder das Modul-Template?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X