Contao-Camp 2024
Ergebnis 1 bis 11 von 11

Thema: Frage zu eigenem SQL (oder anderen Lösungsweg)

  1. #1
    Contao-Nutzer
    Registriert seit
    26.06.2009.
    Ort
    Aachen
    Beiträge
    195

    Frage Frage zu eigenem SQL (oder anderen Lösungsweg)

    Guten Morgen!
    Ich nutze MM mittlerweile sehr gerne und viel, habe aber momentan ein Problem, für das ich noch keine gute Lösung gefunden habe. Vielleicht habt ihr ja einen Tipp für mich!?

    Ich habe vereinfacht:
    MM Kategorie
    MM Projekt, wobei jedes Projekt einer Kategorie zugeordnet ist

    Jetzt möchte ich auf der Detailseite alle Projekte der Kategorie ausgeben, der das aktuell ausgegebene Projekt angehört. Ich habe das bisher per Url-Parameter gelöst (übergebe auf der Listenseite einen Url-Parameter für die Kategorie an die Detailseite), aber ich denke, es muss auch eine andere Lösung geben, oder?

    Hat jemand eine Idee oder einen Tipp für mich?
    Danke!

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Fwac,
    klar geht das anders. Mit der MM-API kannst du in dem einen MM (Projekte) alle Projekte ausgeben lassen, die die selbe Kategorie haben.
    Hier (ganz unten ist ein komplettes Beispiel) findest du die Infos zu API: https://metamodels.readthedocs.io/de...etamodels.html

    Verkürzt gesagt:
    Bau dir einen Filter, der alle Items raussucht anhand einer Kategorie.
    Nimm die API um alle Items von dem MM auszugeben, übergib darin die Aktuelle Kategorie und die Filter ID ->
    // vordefinierter Filter über die Filter-Id
    //$filter = $model->prepareFilter($filterId, []);

    Danach kannst du dann im Template die Ausgabe machen (ist im Beispiel ja auch mit einer foreach enthalten).

    Ich muss zugeben: Beim ersten mal ist das etwas frickelig.. aber Frag einfach hier mit konkreten Angaben und dann können wir dir da weiter helfen.

    Viele Grüße

    PS: Für den FIlter am besten mal im Backend beim FIlter (Eigenes SQL) mal auf das Symbol zur Erklärung klicken. Dort kannst du dann nachlesen, wie man dynamische Werte dort hinein bekommt (dafür gibt es extra Inserttags)
    Geändert von MacKP (11.10.2021 um 09:02 Uhr)
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

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

    Standard

    Zitat Zitat von Fwac Beitrag anzeigen
    Jetzt möchte ich auf der Detailseite alle Projekte der Kategorie ausgeben, der das aktuell ausgegebene Projekt angehört.
    ggf. übersehe ich was - aber eigentlich nicht so schwierig

    Du machst auf die Seite zwei MM-Listen
    * MM Liste Detail des Projektes und
    * MM Liste Projekte die auch zu der Kategorie von Projekt-Detail gehören

    Für letztere brauchst Du einen Filter der
    * alle Projekte der selben Kategorie ermittelt
    * ggf. das Projekt aus der Detailansicht übergeht

    Als Parameter hast Du das, womit die Detailansicht aufgerufen wird - sicherlich ein Alias - den kannst Du auch in der zweiten Liste verwenden.

    Am Besten Du machst die Abfrage erstmal per phpMyAdmin (o.Ä.) und erstmal mit festen Werten, die Du dann ersetzt - z.B.

    * suche in Projekte alle Items mit kategorie = 42 AND id != 24 (ggf. auch noch published = 1 o.ä.)
    * die id ersetzt Du durch ein (Sub)Select mit Parameter Alias - das Subselect machst Du erstmal separat um zu gucken, ob Du auch 24 ermittelst.
    * die Kategorie-ID ersetzt Du durch ein (Sub)Select mit der ID der Kategorie und Suche mit Parameter Alias

    Beispiele siehe: https://metamodels.readthedocs.io/de...ustom-sql.html

    Tipp zu Subselects: LIMIT 1 nicht vergessen

  4. #4
    Contao-Nutzer
    Registriert seit
    26.06.2009.
    Ort
    Aachen
    Beiträge
    195

    Computer Danke!

    Danke euch beiden, es hat auf Anhieb geklappt :-)

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

    Standard

    welche Variante hast Du genommen?

  6. #6
    Contao-Nutzer
    Registriert seit
    26.06.2009.
    Ort
    Aachen
    Beiträge
    195

    Daumen hoch

    Ich hab deinen Lösungsvorschlag genommen.

    Das SQL sieht im Endeffekt so aus:
    Code:
    SELECT * 
    FROM mm_project
    WHERE alias <> {{param::get?name=auto_item}} AND
    category = (
      SELECT category
      FROM mm_project
      WHERE
      alias = {{param::get?name=auto_item}}
      LIMIT 1
    )

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

    Standard

    prima! - btw: wenn man eine Mehrfachauswahl [tags] hat, geht das auch - man muss dann über die Relationstabelle hüpfen... siehe Beispiel(e) im Handbuch

  8. #8
    Contao-Nutzer
    Registriert seit
    26.06.2009.
    Ort
    Aachen
    Beiträge
    195

    Daumen hoch

    Vielen vielen Dank. Mir war ja klar, dass es irgendwie gehen muss, aber ich hätte das ohne euch noch länger nicht gefunden ...

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

    Standard

    bist nicht der Erste der nicht gesehen hat, dass man auch mehr als eine MM-Liste pro Seite haben darf... ;-)

    ab MM 2.2 haben die Listen auch unabhängige Paginierungen

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

    Standard

    wenn man eine weitere Liste mitten im Template der ersten Liste haben "muss" - weil sich irgendein Grafiker mal wieder was hübsches hat einfallen lassen ;-) - kann man die Liste auch als FE-Modul erstellen und per Inserttag reinwurschteln...

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

    Standard

    wenn wir schonmal beim Thema Templating sind: ab und an sollen auch andere CEs ausgegeben werden aber nur dann, wenn z.B. auf der Detailseite auch was ausgegeben wird oder Details sind da, aber es solle eine Prüfung auf ein Attribut wie Checkbox oder Datum erfolgen ...

    dann die CEs in die "foreach-Schleife" packen oder ggf. noch in eine "if-Abfrage" kapseln - Ausgaben dann als Inserttags oder besser die direkten Aufrufe wie z.B. "<?= $this->getForm('42') ?>" für ein Formular

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
  •