Ergebnis 1 bis 6 von 6

Thema: Formatierter String / Seitenlayout verlinken

  1. #1
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard Formatierter String / Seitenlayout verlinken

    Weiß jemand, was hier falsch ist bzw. ob man das überhaupt so machen kann?

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['list']['label']['fields'] = array('title''id''layout:tl_layout.name');
    $GLOBALS['TL_DCA']['tl_page']['list']['label']['format'] = '
    %s 
    <a href="/contao/main.php?do=themes&table=tl_layout&act=edit&id=' 
    Contao\PageModel::findByPK( . '%s' . )->layout '&rt=' REQUEST_TOKEN '">%s</a>'
    Das Problem ist hier offenbar der Platzhalter %s innerhalb von Contao\PageModel::findByPK( . '%s' . )->layout. Steht der Platzhalter hier noch nicht zur Verfügung, sobald die Methode aufgerufen wird?

    Wenn ich beispielsweise direkt eine bestimmte Seiten-ID an die Methode übergebe, funktioniert es wie beabsichtigt:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['list']['label']['fields'] = array('title''layout:tl_layout.name');
    $GLOBALS['TL_DCA']['tl_page']['list']['label']['format'] = '
    %s 
    <a href="/contao/main.php?do=themes&table=tl_layout&act=edit&id=' 
    Contao\PageModel::findByPK(1)->layout '&rt=' REQUEST_TOKEN '">%s</a>'
    Vielleicht gibt es ja auch eine andere (bessere) Methode, um an die ID jenes Seitenlayouts zu kommen, welches einer bestimmten Seiten-ID zugewiesen ist.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  2. #2
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard

    Hallo xchs,

    ich habe es so noch nie versucht, mir ist aber aufgefallen, dass der Methodenaufruf nicht korrekt ist. Dort steht:

    PHP-Code:
    Contao\PageModel::findByPK( . '%s' . )->layout 
    Meiner Meinung nach kann es so nicht funktionieren, da es keine Stringverkettung ist. Der Aufruf müsste doch so aussehen:

    PHP-Code:
    Contao\PageModel::findByPK('%s')->layout 
    In diesem Fall würde aber vermutlich nach '%s' gesucht. Was auch nicht funktioniert.

    Da es sich hier im einen Formatstring für 'sprintf' handelt, kann ich mir nicht vorstellen, dass man einen Methodenaufruf "injecten" kann. So wie es jetzt ist, wird der Aufruf bei der Zuweisung im DCA gemacht, zu der Zeit wird aber '%s' nicht ersetzt. Baust Du den Aufruf in den String ein, ist es nur ein String und wird nicht ausgeführt.

    Wie gesagt, ich habe es nicht getestet und ich kann mich auch irren. Was spricht den gegen einen label_callback? Dort kannst Du genau das machen, was Du vorhast.
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

  3. #3
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Danke für Deine Antwort.

    Zitat Zitat von eS_IT Beitrag anzeigen
    Der Aufruf müsste doch so aussehen:

    PHP-Code:
    Contao\PageModel::findByPK('%s')->layout 
    In diesem Fall würde aber vermutlich nach '%s' gesucht. Was auch nicht funktioniert.
    Genau! So hatte ich es auch schon versucht. Funktioniert ebenfalls nicht, da in diesem Fall '%s' an die Methode übergeben wird, was klarerweise kein Resultat liefert.


    Zitat Zitat von eS_IT Beitrag anzeigen
    Was spricht den gegen einen label_callback?
    Vermutlich nichts. Ich schau mir das mal an. Und wenn's nicht klappt, ist es auch egal - so wichtig ist das nicht. Dann wird der Seitenlayoutname eben unverlinkt ausgegeben.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ein button_callback scheint mir die schönere Methode ;-)
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Ein button_callback scheint mir die schönere Methode ;-)
    Dann kann man aber nicht im Label verlinken, wie z.B. wenn man Module in Inhaltselemente einbindet. Aber wenn es ein Button auch tut, hast Du natürlich recht.
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

  6. #6
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Tatsächlich funktioniert es viel einfacher als gedacht, nämlich via Field Mapping:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['list']['label']['fields'] = array('title''layout:tl_layout.id''layout:tl_layout.name'); 
    $GLOBALS['TL_DCA']['tl_page']['list']['label']['format'] = 
    %s  
    <a href="/contao/main.php?do=themes&table=tl_layout&act=edit&id=%s&rt=' 
    REQUEST_TOKEN '">%s</a>'
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

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
  •