Ergebnis 1 bis 18 von 18

Thema: DEV-TNG attribute_file: Zugriff auf jumpto ("zu den Details") des Eintrages

  1. #1
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Frage DEV-TNG attribute_file: Zugriff auf jumpto ("zu den Details") des Eintrages

    Hi,

    ich konnte in einer früheren Version von MM (dev-tng) per

    PHP-Code:
    $this->settings->get('jumpTo'
    innerhalb des Templates mm_attr_file_alternative.html5 auf das Sprungziel des jeweiligen Eintrages zugreifen, um das ein Bild als "Klick zu der Detailseite" zu verwenden. In der letzten Version scheint aber kein Zugriff mehr auf "jumpto" möglich zu sein - wie komme ich denn da heute dran?

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

    Standard

    Ich habe mir $this im mm_attr_file_alternative.html5 mal angesehen und keine direkte URL gefunden.

    Man könnte sich den Link sicher selbst zusammensetzen, aber wie wär's mit einer einfacheren Lösung:
    einem minimalen mm_attr_file_alternative.html5, das nur das img-Tag ausgibt und dann im Listen-Template das File-Attribut abfangen und mit einem Link mit
    PHP-Code:
    $arrItem['jumpTo']['url'
    umklammern?

  3. #3
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    Ja das funktioniert (so macht es ja das prerendered template), allerdings ist das für mich nicht gut gekapselt. Da ich das angepasste mm_attr_file_alternative.html5 in mehreren unterschiedlichen "prerendered" Templates nutze, müsste ich alle Templates anpassen.

    Es ging ja im MM2.x development Pfad schon mal in für mich perfekte Form. Leider im anktuellen Stand heute nicht mehr.

    Ergänzung:
    Zudem möchte im mm_attr_file_alternative.html5 die Einstellungen für "Großansicht" in Kombination mit "jumpto-deep" abfangen --- das ist über das prerendered template wiederrum schwer zugänglich.
    Geändert von Cyberlussi (04.07.2015 um 07:48 Uhr)

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

    Standard

    Zitat Zitat von Cyberlussi Beitrag anzeigen
    Hi,

    ich konnte in einer früheren Version von MM (dev-tng) per

    PHP-Code:
    $this->settings->get('jumpTo'
    innerhalb des Templates mm_attr_file_alternative.html5 auf das Sprungziel des jeweiligen Eintrages zugreifen, um das ein Bild als "Klick zu der Detailseite" zu verwenden. In der letzten Version scheint aber kein Zugriff mehr auf "jumpto" möglich zu sein - wie komme ich denn da heute dran?
    was passierten bei der Templateversion? Fehler? wenn ja welcher - oder nix? was steht in $this->settings?

  5. #5
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    $this->settings->get('jumpTo') liefert im mm_attr template nun "null" (was ich in meinem Template als nicht vorhanden bewerte), also kein Fehler. Früher (wann welche Version genau, weiß ich nicht mehr, war aber MM2.x) konnte ich auch per $this->settings->get('jumpTo')['deep'] zugreifen, ob es eine weiterführende Seite gibt. Wenn ich nun mit aktuellem Stand debugge ... beinhaltet das Array $this->arrBase kein "jumpTo" Element ...

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

    Standard

    Zitat Zitat von Cyberlussi Beitrag anzeigen
    Wenn ich nun mit aktuellem Stand debugge ... beinhaltet das Array $this->arrBase kein "jumpTo" Element ...
    ... was steht den da so drin..? ist den ein jumpTo definiert?

  7. #7
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    So schaut es (brakepoint im template)

    Edit: es gibt noch ein parent parallel zu arrBase ... wie ich daran aber komme, weiß ich auch nicht. Die API von MM unter der Haube ist mir nicht voll erschlossen

    2015-07-06 debug.png

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

    Standard

    was steht in dem
    ... [jumpTo][0]...
    ...[raw]...
    ...[row]...

  9. #9
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    ja ... unter parent ... jumpto[0] ... steht das Ziel schon drin (13), aber wie komme per API ran?

    2015-07-07 debug.jpg
    Geändert von Cyberlussi (07.07.2015 um 20:05 Uhr) Grund: typo

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

    Standard

    sowas wie
    PHP-Code:
    ...['jumpTo']['0']['value']; 

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

    Standard

    Ähm, was siehst du da im 'value'?
    Das Problem ist doch, dass das nur die ID der Seite ist sowie 'filter' die ID des Filters. Aber damit hast du noch nicht die URL. Da fehlt unter anderem das auto_item, oder?
    Geändert von pju (07.07.2015 um 21:01 Uhr)

  12. #12
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    @zonky
    Ei ne ... das wäre ja zu einfach ... $this->settings->get('parent') liefert NULL - die Frage: Bug oder Feature ... die __get() Methode der MM Template Class greift nur auf $this->arrData ... und nicht auf $this->parent.

    Überhaupt stört mich, dass ich den Eintrag parent in meinem debugger sehe, weil das ja ein PHP keyword ist ...

    @pju
    Früher (s.o.) konnte ich per $this->settings->get('jumpTo')['url'] auf die URL und die direkt in ein <a> packen. Aber ich kann ja auch mit einem CTO inserttag die Zielseite per ID anspringen (13).

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

    Standard

    Wie das früher ging, hast du ja schon erwähnt, aber offensichtlich geht das jetzt ja nichtmehr.

    Um an das jumpTo-Array zu kommen:
    PHP-Code:
    $this->settings->getParent()->get('jumpTo'
    Contao-Inserttag schön und gut, Aber die PageId ist ja nur ein Teil des ganzen. Eventuell langcode plus Item-Parameter fehlen dann ja noch?

    Es gibt auch ein Insert-Tag für das jumpTo, vielleicht bringt dir das was? Bin grad nicht sicher, ob die geparst werden, wenn sie direkt im Template auftauchen. Ansonsten schau dir mal MetaModels\FrontendIntegration\InsertTags->jumpTo an. Die Funktion ist protected, aber da könntest du dir mal anschauen, wie das zusammengebaut ist.

    Du brauchst: die ID vom Model, die ID vom Item und die ID vom Rendersetting. Die müssten eigentlich irgendwo in $this liegen. Das Item direkt als Objekt würde dir ne Menge Umweg sparen, aber im Attribut-Template ist das leider nicht direkt verfügbar (warum, hat xtra gerade unten erklärt).
    Geändert von pju (07.07.2015 um 21:18 Uhr)

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

    Standard

    Geaendert habe ich es in https://github.com/MetaModels/core/c...fb3902a7fe8473.

    Mein Beweggrund war, dass die jumpTo Urls NICHTS mit dem Item zu tun haben, sondern mit dem render setting.
    Besonders negativ hierbei war, dass die jumpTo Url bei jedem(!) Item komplett neu berechnet wurde, inkl. nachschlagen der Seite (und aller trails bis zur root page) um die gesamten Informationen zur Hand zu haben.
    Durch das Verschieben derGenerierung ins Rendersetting haben wir mehrere DB Queries pro Item eingespart und auch einiges anderes an Rechenzeit.

    Bislang bist du wirklich der Einzige, der die jumpTo Url im Attributstemplate verwendet hat, sorry dass dir das nun vor die Fysse gefallen ist.
    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.

  15. #15
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    Ah,

    ich muss mir doch mal eine gescheite IDE zulegen, um alle Methoden zu sehen. Danke @pju. Langcode brauche ich aktuell nicht.

    @xtra
    Verstanden. Wenn ich doch noch dran komme, bin ich ja zufrieden. Ich finde es halt einfach passend bei einem MM-Eintrag auf das dazugehörige Bild klicken zu können ... das ist irgendwie intuitiver.

    Kannst du mir verraten, wie ich nun ohne viele Verenkungen an die URL komme?

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

    Standard

    Im Attributstemplate nicht so ohne weiteres, sorry. Das war ja der ganze Sinn, dass eben die URL nicht bei jedem attribut neu berechnet wird sondern nur einmal im item (wovon das Attribut beim parsen jedoch logischerweise nichts weiss).
    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.

  17. #17
    Contao-Nutzer
    Registriert seit
    20.02.2012.
    Beiträge
    123

    Standard

    Oh,

    verstehe schon, dass man nicht unnötig URLs berechnet, aber wäre nicht eine API, die man optional in einem Attributstemplate aufrufen kann, eine schöne Lösung?

    Sowas wie $this->settings->getParent()->getJumpToUrl() o.ä.?!

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

    Standard

    An sich durchaus, und eine solche API existiert auch.

    Das Einzige Problem ist, dass du diese API nicht nutzen kannst, da du die notwendigen Werte nicht zur Verfygung hast, naemlich das Item.
    Du hast lediglich die "Raw" Werte zur Verfygung, was jedoch nicht passt.

    Ad-hoc und "dirty" kannst du es wie folgt machen (aber erwarte nicht dass das ewig so geht, es ist ein inoffizieller Weg):
    PHP-Code:
    $url $this->settings->getParent()->buildJumpToUrlFor(new \MetaModels\Item($this->attribute->getMetaModel(), $this->row)); 
    Schreib dir aber bitte DICK dahinter "Don't try this at home kids!".

    Die Grundproblematik ist hierbei leider, dass die ganze rendering API ein bisschen schnell gewachsen ist und somit immer noch hinter her hinkt und wir die nicht einfach mal eben so umschmeissen koennen und "gerade ziehen" da dann alles zusammen bricht.
    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.

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
  •