Verwendung: Mehr als eine "headline" als Gruppe in einem Custom Element, mit h1-h6 zur Auswahl

Maik Heindrichs's Avatar

Maik Heindrichs

06 Aug, 2019 01:24 PM

Produkt: Custom Elements Contao

Ich hätte ein frage, wie kann man eine Custom Element mit mehrere Überschriften erstellen? Beide sollen jeweils ein Optionsfeld mit h1-h6 zur Auswahl haben.

Mit freundlichen Grüßen
Maik

  1. Support Staff 1 Posted by RockSolid Theme... on 06 Aug, 2019 02:07 PM

    RockSolid Themes's Avatar

    Vielen Dank für Ihre Frage.

    Eine Konfiguration für zwei Überschriften-Felder kann z. B. folgendermaßen aussehen:

    'headline1' => array(
        'inputType' => 'inputUnit',
        'options' => array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'),
    ),
    'headline2' => array(
        'inputType' => 'inputUnit',
        'options' => array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'),
    ),
    
  2. 2 Posted by Maik on 06 Aug, 2019 07:34 PM

    Maik's Avatar

    Die Ausgabe im Backend funktioniert jetzt soweit, doch es wird nur der wert "Array" im Frontend ausgegeben.

    Vielen Dank für die Hilfe.

  3. Support Staff 3 Posted by RockSolid Theme... on 07 Aug, 2019 06:15 AM

    RockSolid Themes's Avatar

    Für die Ausgabe im Frontend können Sie folgenden Code verwenden:

    <<?= $this->headline1['unit'] ?>>
        <?= $this->headline1['value'] ?>
    </<?= $this->headline1['unit'] ?>>
    <<?= $this->headline2['unit'] ?>>
        <?= $this->headline2['value'] ?>
    </<?= $this->headline2['unit'] ?>>
    
  4. 4 Posted by Flo on 06 Dec, 2022 11:12 AM

    Flo's Avatar

    Ich setze es seit Jahren genau so ein.
    Ich habe gerade ein Update eines Contao 4.4 auf 4.13 gemacht und bekomme nun die Meldung Undefined constant "unit".
    Sowohl im Backend als auch im Frontend.
    Hat sich etwas geändert?

  5. Support Staff 5 Posted by RockSolid Theme... on 06 Dec, 2022 03:07 PM

    RockSolid Themes's Avatar

    Hat sich etwas geändert?

    Eventuell haben Sie ein Update der PHP-Version vorgenommen. Den Fehler Undefined constant gibt es erst seit PHP 8.0.

    Undefined constant "unit".

    Diese Fehlermeldung deutet drauf hin, dass die Anführungszeichen rund um das Wort unit fehlen. Damit wir Ihnen zielgerichteter weiterhelfen können, schicken Sie uns bitte den PHP-Code den Sie einsetzen.

  6. 6 Posted by Flo on 06 Dec, 2022 04:03 PM

    Flo's Avatar

    ha, das mit den Anführungszeichen war es! Super. :)

  7. 7 Posted by Marco on 28 Feb, 2025 12:20 PM

    Marco's Avatar

    Gem. dieser Anleitung habe ich bis Contao 4.13 folgende Funktion erfolgreich verwendet:

    <?php
    if ($this->headline['value']):
      $headline = '<'.$this->headline['unit'].'>'.$this->headline['value'].'</'.$this->headline['unit'].'>';
    endif;
    ?>

    [...]

    <?= $headline ?>

    Seit dem Update auf Contao 5.3 wird ein Fehler ausgegeben: Cannot access offset of type string on string

    Muss dies jetzt angepasst werden? Ich habe dazu nirgendwo etwas finden können.

  8. Support Staff 8 Posted by RockSolid Theme... on 28 Feb, 2025 01:13 PM

    RockSolid Themes's Avatar

    Vielen Dank für Ihre Frage.

    Die Fehlermeldung Cannot access offset of type string on string deutet darauf hin, dass Sie für das Feld headline kein inputUnit verwenden (oder verwendet haben zum Zeitpunkt an dem das Inhaltselement gespeichert wurde).

    Sie können die Abfrage wie folgt ergänzen um den Fehler zu beheben:

    if ($this->headline['value'] ?? null):
    
  9. 9 Posted by Marco on 01 Mar, 2025 09:01 AM

    Marco's Avatar

    Vielen Dank für die schnelle Antwort. Wie der ursprüngliche Post ja suggeriert, wollte ich damals kein Stadard-Headline nuntzen, sondern habe das ganze wie folgt umgesetzt:

    'headline' => array(
    'label' => array('Überschrift', 'Hier können Sie dem Inhaltselement eine Überschrift hinzufügen. Sie können HTML-Tags verwenden, um den Text zu formatieren.'),
    'inputType' => 'inputUnit',
    'options' => array(
    'h1' => 'h1',
    'h2' => 'h2',
    'h3' => 'h3',
    'h4' => 'h4',
    'h5' => 'h5',
    'h6' => 'h6'
    ),
    'eval' => array(
    'tl_class' => 'w50',
    'allowHtml' => true
    )
    ),

    Das 'inputType' => 'inputUnit', habe ich dabei verwendet. In der Datenbank ist folgender Inhalt gespeichert:

    a:2:{s:4:"unit";s:2:"h1";s:5:"value";s:19:"Überschrift";}

    Die Ausgabe sollte ja dann eben so erfolgen:

    <?php
    if ($this->headline['value'] ?? null): // kein Fehler mehr, ja, aber auch keine Ausgabe der Überschrift
      $headline = '<'.$this->headline['unit'].'>'.$this->headline['value'].'</'.$this->headline['unit'].'>';
    endif;
    ?>

  10. Support Staff 10 Posted by RockSolid Theme... on 03 Mar, 2025 09:03 AM

    RockSolid Themes's Avatar

    Beachten Sie bitte, dass die Daten des Custom-Elements nicht in der Spalte headline gespeichert werden. In der Datenbank sollten sich in der Spalte rsce_data eigentlich JSON-Daten befinden die folgendermaßen aussehen: {"headline":"a:2:{s:4:\"unit\";s:2:\"h1\";s:5:\"value\";s:19:\"Überschrift\";}"}

    Welche Version der Custom Elements Erweiterung haben Sie im Einsatz?

    Damit wir Ihnen zielgerichteter weiterhelfen können, schicken Sie uns bitte die gesamte _config.php-Datei und .html5-Datei Ihres Custom Elements.

  11. 11 Posted by Marco on 03 Mar, 2025 10:18 AM

    Marco's Avatar

    .html5

    <?php
    // Überschrift
    if ($this->headline['value']):
      $headline = '<'.$this->headline['unit'].' class="ce_headline">'.$this->headline['value'].'</'.$this->headline['unit'].'>';
    endif;
    ?>

    <div><?= $headline ?></div>
    _config.php

    <?php
    return array(
    'label' => array('Überschrift', 'Erzeugt eine Überschrift.'),
    'types' => array('content'),
    'contentCategory' => 'texts',
    'fields' => array(
    'legendHeadline' => array(
    'label' => array('Überschrift', ''),
    'inputType' => 'group'
    ),
    'headline' => array(
    'label' => array('Überschrift', 'Hier können Sie dem Inhaltselement eine Überschrift hinzufügen. Sie können HTML-Tags verwenden, um den Text zu formatieren.'),
    'inputType' => 'inputUnit',
    'options' => array(
    'h1' => 'h1',
    'h2' => 'h2',
    'h3' => 'h3',
    'h4' => 'h4',
    'h5' => 'h5',
    'h6' => 'h6'
    ),
    'eval' => array(
    'tl_class' => 'w50',
    'allowHtml' => true
    )
    )
    )
    );

  12. Support Staff 12 Posted by RockSolid Theme... on 03 Mar, 2025 10:49 AM

    RockSolid Themes's Avatar

    Wir haben Ihr Element soeben getestet und konnten keine Probleme in Contao 5.3 feststellen. Im Frontend wird wie erwartet folgender Quelltext ausgegeben: <div><h1 class="ce_headline">Überschrift</h1></div>

    Welche Version der Custom Elements Erweiterung haben Sie im Einsatz?

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