RSCE - Bild-Link-Box

von Bernhard Renner

Am 12.12.2024 fand Die Contao (Morning) Show #20 – Twig in der Praxis statt.

Hier wurde anhand von Codebeispielen Einblick in die Praxis mit Twig-Templates geplaudert. Meine Beispiele möchte ich hier nochmals bereit stellen und folge mit der Bild-Link-Box.

Es werden dazu 2 Dateien benötigt:
rsce_rsce_image-link-box_config.php
rsec_rsce_image-link-box.html.twig

// templates/theme/rsce_image-link-box_config.php  

<?php

return [
    'label' => ['Link-Box','Erstellt eine Linkbox mit Bild und Titel.'],
    'types' => ['content'],
    'standardFields' => ['cssID'], 
    'contentCategory' => 'texts', 
    'fields' => [ 
        'headline' => [
            'inputType' => 'standardField',
        ],
        'url' => [
            'label' => &$GLOBALS['TL_LANG']['MSC']['url'],
            'inputType' => 'text',
            'eval' => [
                'mandatory' => false, 
                'rgxp' => 'url',
                'decodeEntities' => true,
                'maxlength' => 2048,
                'dcaPicker' => true,
                'tl_class' => 'w33'
            ]
        ],
        'linkTitle' => [
            'label' => ['Link-Text','Der Link-Text wird anstelle der Link-Adresse angezeigt.'],
            'inputType' => 'text',
            'eval' => [
                'tl_class' => 'w33'
            ],
            'default' => 'Mehr erfahren',
        ],
        'titleText' => [
            'label' => ['Link-Titel','Der Link-Titel wird als title-Attribut im HTML-Markup eingefügt.'],
            'inputType' => 'text',
            'eval' => [
                'tl_class' => 'w33'
            ],
        ],
        'target' => [
            'label' => &$GLOBALS['TL_LANG']['MSC']['target'],
            'inputType' => 'checkbox',
            'eval' => [
                'tl_class' => 'w33 m12'
            ]
        ],
        'image' => [
            'label' => ['Quelldatei','Bitte wählen Sie eine Datei oder einen Ordner aus der Dateiübersicht.'],
            'inputType' => 'fileTree',
            'eval' => [
                'tl_class' => 'clr',
                'fieldType' => 'radio',
                'mandatory' => true,
                'filesOnly' => true,
                'extensions' => implode(',', Contao\System::getContainer()->getParameter('contao.image.valid_extensions')),
            ],
        ],
        'size' => [
            'inputType' => 'standardField',
        ],
    ],
];      
{# templates/theme/rsce_image-link-box.html.twig #}

{% if as_editor_view %}
    <span class="tl_gray limit_height">
    {{ headline }}
    </span>
{% else %}

<div class="{{ class }} linkbox slideUp" {{ cssID|raw }}>

    {# https://docs.contao.org/dev/framework/image-processing/image-studio/#setting-options #}
    {% set options = {} %}
    
    {% set figure = contao_figure(image, size, options) %}
    {{ figure|raw }}

    <div class="content-wrapper content-overlay">
    
        {% if url is defined and url %}
        <a href="{{ url|raw }}"
            {% if titleText is defined and titleText %} title="{{ titleText }}"{% endif %}
            {% if target is defined and target %} target="_blank"{% endif %}
        >
        {% endif %}
            <div class="content-headline">
                {% if headline is defined and headline %}
                <{{ hl }}>
                    {{ headline }}
                </{{ hl }}>
                {% endif %}
            </div>
            <div class="content-link">
                {% if linkTitle is defined and linkTitle %}
                    {{ linkTitle }}
                {% endif %}
            </div>
        {% if url is defined and url %}
        </a>
        {% endif %}   

    </div>


</div>

{% endif %}

Im Backend hast du nun die Möglichkeit die ein Bild, einen Link und die dazugehörige Bezeichnung auszuwählen und einzutragen.
Weiters ob der Link in einem neuen Fenster geöffnet werden soll.

Das Twig-Template ist so aufgebaut, dass im 1.Teil abgefragt wird, ob das Template im Backend oder Frontend aufgerufen wird.
Wird es im Backend aufgerufen, so wird anstatt des kompletten Inhaltes nur die Überschrift angeführt.

Das Backend sieht dann so aus:

Die Contao (Morning) Show #20 – Twig in der Praxis

zum Nachschauen könnt ihr über diesen Link auf Youtube erreichen.

https://www.youtube.com/watch?v=QcH4rdpU4oA

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 8 und 6?