Verwendung: Template overwrite

Andreas's Avatar

Andreas

24 Oct, 2020 04:47 PM

Produkt: Custom Elements Contao
Contao-Version: 4.10

Hallo Rocksolid-Team,

erstmal ein großes Lob für die Produkte und vor allem für den erstklassigen Support und die Geduld mit uns Anwendern.

Ich habe mit den RSCE ein eigenes Inhaltselement gebaut mit mehreren Feldern.
Auf einer versteckten Seite gibt es nun viele Artikel, die jeweils nur aus diesem einen Inhaltelement bestehen.
Ein solcher Artikel (besser wäre: nur das Inhaltselement) soll dann an verschiedenen Stellen im FE verwendet/eingebunden werden, am liebsten mit jeweils anderen Templates, da z.B. an einer Stelle nicht alle Felder dargestellt werden sollen, an einer anderen Stelle in anderer Reihenfolge etc.

Das Contao-Standardinhaltselement "Include Elemente -> Artikel/Inhaltselement/..." wäre ja beinahe ausreichend, wenn ich damit jeweils auch ein alternatives Template an der Include-Position bestimmen könnte.

Ich habe gefunden, dass ich mit

'articleId' => array( 'label' => array('Artikel', ''), 'inputType' => 'select', 'options_callback' => array('tl_content', 'getArticleAlias'), ),

eine Artikelliste abrufen kann und mit

'customTpl' => array( 'inputType' => 'standardField', 'options_callback' => function() { return \Controller::getTemplateGroup('rsce_'); }, ),

eine Templateliste.
Kann ich mir damit ein eigenes RSCE Include-Element bauen?
Wie würde ich dann mit der "articleId" auch die Inhalte des Artikels ziehen, die ich dann im "customTpl" ausgeben möchte?
Oder denke ich zu kompliziert und es ist alles viel einfacher...?

Danke und herzliche Grüße
Andreas

  1. Support Staff 1 Posted by RockSolid Theme... on 26 Oct, 2020 10:14 AM

    RockSolid Themes's Avatar

    Vielen Dank für Ihre Frage.

    Das verwendete Template kann mit einem Include-Element nicht überschrieben werden. Dafür müsste ein eigenes Inhaltselement für diesen Fall programmiert werden.

    Eventuell hilft Ihnen auch folgender Beitrag weiter der beschreibt wie man auf die Daten eines anderen Custom Elements zugreifen kann: https://help.rocksolidthemes.com/discussions/contao/6668

  2. 2 Posted by Andreas on 26 Oct, 2020 05:13 PM

    Andreas's Avatar

    Der verlinkte Beitrag hilft mir sehr, vielen Dank.
    Trotzdem noch eine Frage, die allerdings nichts direkt mit den CustomElements zu tun hat. Insofern kein Problem, wenn's nicht beantwortet wird:

    Ich habe in meinem eigenen CustomElement auch ein "standardField" "headline":

    'headline' => array(
                'label' => array('Überschrift', ''),
                'inputType' => 'standardField',
                'eval' => array('tl_class' => 'clr'),
            ),
    
    Der Wert wird nicht in rsce_data abgelegt, sondern direkt in arrData. Darin steht dann sowas:
    ...
    "headline" => "a:2:{s:4:"unit";s:2:"h2";s:5:"value";s:15:"meineUeberschrift";}"
    ...
    
    Darf ich einen kurzen Tipp haben, wie ich daraus "meineUeberschrift" extrahiere? JSON ist das ja wohl nicht, oder? Sorry für meine Unkenntnis, als ich noch php-Scripts zusammengefrickelt habe, gab's noch kein JSON und so'n modernen Krams... ;)

    Danke und Gruß
    Andreas

  3. Support Staff 3 Posted by RockSolid Theme... on 27 Oct, 2020 08:09 AM

    RockSolid Themes's Avatar

    JSON ist das ja wohl nicht, oder?

    Nein, dabei handelt es sich um ein serialisiertes PHP-Array.

    Darf ich einen kurzen Tipp haben, wie ich daraus "meineUeberschrift" extrahiere?

    Dafür können Sie z. B. folgenden Code verwenden:

    $headline = \Contao\StringUtil::deserialize($this->headline, true);
    echo $headline['value']; // meineUeberschrift
    echo $headline['unit']; // h2
    

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac