Ergebnis 1 bis 22 von 22

Thema: Aus Detailseite nächsten Eintrag des selben Tags aufrufen

  1. #1
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard Aus Detailseite nächsten Eintrag des selben Tags aufrufen

    Hall zusammen,

    ich habe eine Fotodatenbank erstellt, es gibt derzeit 4 Kategorien (Natur, Portrait, Black&White, Makro)

    Dazu habe ich 4 Seiten erstellt die zu den Kategorien passen, damit ist das problem der Navigation auch gelöst.

    Auf der Seite Natur ist ein Metamodel eingebaut das eine Liste mit allen Bilder der Kategorie Natur anzeigt, beim klick auf das Foto kommt man auf die Detailseite mit allen Infos rund um das Bild.

    Jetzt kommts:
    Ich würde gerne ganz unten auf der Seite einen Link haben der zb. "Nächstes Bild" heisst und mit dem ich das nächste Bild aus der Kategrie Natur direkt auf der Detailseite aufrufe, damit ich alle Bilder in der Detailansicht durchklicken kann.

    Ich hoffe ich habe das halbwegs verständlich geschrieben

    ist das überhaupt möglich? Wenn ja kan mir jemand ein kurzes HowTo posten?

    Danke
    schnubi

  2. #2
    Contao-Nutzer
    Registriert seit
    05.10.2012.
    Beiträge
    213

    Standard

    Guck mal hier. Wenn du bei der Modul-Konfiguration für die Detail-Ansicht "Elemente pro Seite" auf 1 stellst und dann den Filter anpasst auf die Kategorien, dann solltest du automatisch eine Paginierung bekommen.

  3. #3
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Danke pju,

    also ich hab bei Anzahl auf der Seite von 0 auf 1 gestellt dann sollte eigentlich schon die pagination erstellt werden so wie ich das verstehe?

    Da passiert im moment noch nicht, bei Filter hab ich meinen Detailfilter drin der Halt zwei Werte: Veröffentlichungsstatus und eine Einfache Abfrage auf Alias (auto_item)

    Was müsste ich denn jetzt noch einstellen damit die pagination angeeigt wird?

    Danke für deine Hilfe!

  4. #4
    Contao-Nutzer
    Registriert seit
    05.10.2012.
    Beiträge
    213

    Standard

    Hm der einfachste Weg, den ich jetzt gefunden habe, ist mit zwei Listen.

    Einmal mit allen nötigen Infos und dem Filter, so wie du ihn hast. Diese Liste kann dann auch die Anzahl Elemente auf 0 haben (filtert ja mit alias auto_item).
    Zweite Liste ohne Infos und einem Filter OHNE einfache Abfrage, sondern auf die Kategorie. Bei dieser Liste die Anzahl Elemente auf 1.

    Kriegst du das mit dem Filter auf die Kategorie hin?
    Probier sonst erstmal ohne den Filter, ob es im Prinzip funktioniert.

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Schnubi Beitrag anzeigen
    ist das überhaupt möglich? Wenn ja kan mir jemand ein kurzes HowTo posten?
    * Ja, ist möglich... es gibt verschiedene Wege, wie man das umsetzen kann...
    * suche mal nach "Paginierung" im Forum - m.E. wurde das Thema in mind. zwei Threads behandelt

  6. #6
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Also ich hab jetzt eine zweite Liste erstellt, diese hat den Wert 1 und die Paginierung wird erstellt und funktioniet auch, Filter hab ich noch keinen das probier ich noch.

    Es werfen sich da jetzt aber noch ein paar Fragen zusätzlich auf

    • Wie wird das Referenzbild der oberen Liste in der unteren Liste geladen, damit meine ich das Bild das ich als erstes aufgemacht habe und in der oberen Liste angezeigt wird ist ja der Ausgangspunkt für den nächsten Eintrag, derzeit wird in der oberen Liste das Bild geladen das ich aufgemacht habe und in der unteren irgend eins, dann stimmt ja das nächste Bild das in der unteren Liste kommt schon nichtmehr?

    • Derzeit wird bei Klick auf die Paginierung der unteren Liste die Seite neu geladen aber der Inhalt wird nur in der unteren Liste aktualisiert, in der oberen Liste ist immernoch das Bild das ich als erstes ausgesucht habe, wie funktioniert das Zusamenspiel zwischen den zwie Listen



    Schon etwas kompliziert die Sache, aber danke für die Hilfe.

    EDIT:
    Ich habe jetzt einen Filter erstellt vom Typ Einzelauswahl, ausgewählt hab ich meine Kategorien Tabelle, beim URL Paramenter weiss ich nicht was ich eingeben soll, kann ich da auto_item verwenden?
    Hast du das so gemeint?
    Geändert von Schnubi (06.06.2016 um 10:47 Uhr)

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    was hat die Suche ergeben...!

  8. #8
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Zonky so weit bin ich noch nicht, ich hab erstmal versucht das Nachzubauen was pju geschrieben hat

    Muss leider in einer halben Stunde wieder Arbeiten gehen, dann kann ich erst am Abend weiter testen!

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    auch eine Variante... meist recherchiere ich vorher, plane dann und im Anschluss teste ich... ;-) geht aber sicher auch anders..

  10. #10
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Das hab ich doch gemacht pju hat mir eine Variante beschrieben und diese hab ich versucht nazubauen.

    Ich hab jetzt auch Google und die Boardsuche benutzt aber trotzdem nichts gefunden mit dem ich genügend Stoff hab um irgendwas zu machen.
    Also mit Metamodels + Pagination jedenfalls.

    Ist es eigentlich nicht möglich bei meinem bestehenden Filter, der "Veröffentlichungsstatus" und Einfache Abfrage "auto_item" verwendet noch etwas hinzuzufügen damit ich keine zweite Liste benötige?
    Sobald ich das "auto_item" drin hab geht die Pagination nicht.

  11. #11

  12. #12
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Danke zonky,

    für mich ist nur der letzte Link verwertbar und da bekomme ich leider eine Fehklermeldung:
    Code:
    Deprecated notice: MetaModels\Factory::byTableName is deprecated and will get removed. Use method MetaModels\Factory::getMetaModel() instead. in composer/vendor/metamodels/core/src/MetaModels/Factory.php on line 188
    Die anderen Links übersteigen mein Verständnis.

    Ich such weiter vielleicht gibts schon eine Version mit aktuellem Code.

  13. #13
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    wie so oft: Handbuch hilft ;-)

    http://metamodels.readthedocs.io/de/...tory-interface

    und auf der Seite unten das Besipiel

  14. #14
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    So damit hab ich es hinbekommen das die Fehlermeldungen nun weg sind, jetzt hab ich nur noch das Problem das ich nicht weiss was ich im Filter angeben muss damit das funktioniert, mit meinen oben angegebenen Settings gehts schonmal nicht.

    Hier der Code:
    PHP-Code:
    <?
        $projectId = null;
        $nextProject = null;
        $prevProject = null;
        $currProject = null;
        $nextLink = null;
        $prevLink = null;
        if (count($this->items) > 0) {
            $projectId = $this->items[0]->get('id');
            
            $container = $GLOBALS['container']['metamodels-service-container'];
            $factory = $container->getFactory();
            //$projects = \MetaModels\Factory::byTableName('mm_bilder');
            $projects = $factory->getMetaModel('mm_bilder');
         
            $filter = $projects->prepareFilter(3,array()); //List filter Your filter ID = !ID!
            $res = $projects->findByFilter($filter, 'sorting');
            $nextIsNext = false;
            while (($item = $res->getItem()) && $item !== false) {
                if ($nextIsNext) {
                    $nextProject=$item;
                    break;
                }
                elseif ($item->get('id') === $projectId) {
                    $currProject = $item;
                    $nextIsNext = true;
                }
                elseif ($nextProject === null) {
                    $prevProject = $item;
                }
                $res->next();
            }

            $params = '';

            if ($nextProject !== null) {
                $nextLink = $this->generateFrontendUrl($GLOBALS['objPage']->row(), '/'.$nextProject->get('alias').$params);
            }

            if ($prevProject !== null) {
                $prevLink = $this->generateFrontendUrl($GLOBALS['objPage']->row(), '/'.$prevProject->get('alias').$params);
            }

        }
    ?>
     
    <div class="project-nav">
        <?php if($prevLink !== null): ?>
            <a href="<?php echo $prevLink;?>" class="prev">{{iflng::en}}previous{{iflng}}{{iflng::de}}zurück{{iflng}}</a>
        <?php endif; ?>
        <?php if($nextLink !== null): ?>
            <a href="<?php echo $nextLink;?>" class="next">{{iflng::en}}next{{iflng}}{{iflng::de}}vor{{iflng}}</a>
        <?php endif; ?>
    </div>


    EDIT:
    Ich habs jetzt hinbekommen das Vor und Zurük angezeigt wird, jetzt müsste ich das nur noch auf die Kategorie einschränken.
    Kan mir jemand noch bitte helfen den Filter entsprechende anzupassen das der noch zusätzlich die Kategorie filtert?
    Geändert von Schnubi (06.06.2016 um 20:43 Uhr)

  15. #15
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    guck mal hier https://community.contao.org/en/show...ll=1#post99119

    "addFilterRule"


    oder wieder im Handbuch

    """
    prepareFilter($intFilterSettings, $arrFilterUrl)
    erzeugt ein Filterobjekt aus einer gegebenen Filter-ID und einem optionalen Array mit Filterparametern z.B. für die Übernahme von GET-Werten aus einer URL
    """

    mit https://community.contao.org/de/show...l=1#post342182

  16. #16
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Danke zonky für die Links,

    aber das ist jetzt schon ziemlich harter Stoff, da blick ich jetzt nichtmehr durch!

    Ich hab jetzt einen Filter erstellt mit "Veröffentlichungsstatus" und Eigenes SQL
    PHP-Code:
    SELECT FROM mm_bilder
    WHERE alias
    ={{param::get?name=auto_item}}
    AND 
    select_kategorie='natur' 
    Das bringt mich dann zu:
    PHP-Code:
    Fatal errorCall to a member function get() on null in /www/htdocs/xxx/update.xxx.at/templates/metamodel_prerendered_detail_nav.html5 on line 86 
    Aber auch wenn das jetzt funktionieren würde hätte ich die Kategorie Hardcoded im SQl und wen dann jemand eine andere Kategorie aufruft würde es nicht funktionieren, ich glaub mein verusch ist genau 0 wert :/
    Geändert von Schnubi (06.06.2016 um 21:47 Uhr)

  17. #17
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    * mit "addFilterRule" erstellst Du einen eigenen Filter quasi "on the fly"

    * mit "prepareFilter" rufst Du ein bestehendes Filterset auf, wobei du in dem opt. Array Parameter (an einen Filter "Eig. SQL") übergeben kannst

  18. #18
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    * mit "addFilterRule" erstellst Du einen eigenen Filter quasi "on the fly"

    * mit "prepareFilter" rufst Du ein bestehendes Filterset auf, wobei du in dem opt. Array Parameter (an einen Filter "Eig. SQL") übergeben kannst

    addFilterRule: Wenn ich den im BE unter Filter erstelle brauch ich das nicht.

    prepareFilter: Ich kann im BE einen Filter erstellen und und zusätzlich ein Eigenes SQL mitgeben? Warum nicht gleich im Filter im BE einen Eintrag mit Eigenes SQL erstellen?


    Und das grösste Problem ist das ich nicht weiss wie das SQL aussehen muss und ich das dann noch zusätzlich mit Get abfragen kann.

  19. #19
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Neben dem SQL Feld ist ein kleines Schild, klick doch mal drauf.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  20. #20

  21. #21
    Contao-Fan
    Registriert seit
    14.09.2014.
    Beiträge
    269

    Standard

    Danke euch ich hab jetzt auch die Hilfe im Eigenen SQl gefunden, ist ausführlich beschrieben!

    Leider bin ich nicht in der Lage das zusamenhängend zu verstehen :/ wenn es ein beispile gäbe anhanden ich das langsam nachbauen könnte würde ichs vermutlich kapieren, das hat bei Metamodels ja gundsätzlich auch funktioniert aber ohne diese Möglichkeit tu ich mich brutal schwer.

    Ich verstehe nicht wie ich eine get Abfrage in der Seite erstelle (das SQL erstellt mir doch nur eine Abfrage an die DB und erstellt mir einen Querystring aber fragt diesen doch nicht ab) und ich verstehe auch nicht wie ich das SQL gestalten muss damit es beide Dinge prüft.

    Kann mir irgendjemand nochmal helfen ansonsten muss ich auf das Feature verzichen.

    Und ja ich hab mir alle Threads mehrmals durchgelesen aber das übersteigt einfach mein Verständnis!

  22. #22
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.763
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Schnubi Beitrag anzeigen
    Kann mir irgendjemand nochmal helfen ansonsten muss ich auf das Feature verzichten.
    ist drinn...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •