Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: dca-Anpassungen: Text-Element um Link erweitern

  1. #1
    Contao-Fan Avatar von k-webdesign
    Registriert seit
    07.06.2010.
    Ort
    Karlsruhe
    Beiträge
    644
    Partner-ID
    5911
    User beschenken
    Wunschliste

    Standard dca-Anpassungen: Text-Element um Link erweitern

    Hey,

    so oft wünsche ich mir beim Textelement einen separaten Link/Button einbinden zu können. Oder das gesamte Element sollte verlinkt werden. Daher hab ich nun endlich eine DCA-Anpassung dafür gemacht, die ihr euch gerne übernehmen könnt:

    Contao 4.9.x: ggf. Ordnerstruktur anlegen, falls nicht vorhanden:

    DCA-Felder:
    contao/dca/tl_content.php
    Code:
    <?php
    
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    
    PaletteManipulator::create()
        ->addLegend('link_legend', 'image_legend', PaletteManipulator::POSITION_AFTER)
        ->addField('button_linkurl', 'link_legend', PaletteManipulator::POSITION_APPEND)
        ->addField('button_linktitle', 'link_legend', PaletteManipulator::POSITION_APPEND)
        ->addField('link_all', 'link_legend', PaletteManipulator::POSITION_APPEND)
        ->applyToPalette('text', 'tl_content')
    ;
    
    /**
     * Fields
     */
    $GLOBALS['TL_DCA']['tl_content']['fields']['button_linkurl'] = [
        'label'     => &$GLOBALS['TL_LANG']['tl_content']['button_linkurl'],
        'exclude'   => true,
        'inputType'               => 'text',
        'eval'                    => array('mandatory'=>false, 'rgxp'=>'url', 'decodeEntities'=>true, 'maxlength'=>255, 'dcaPicker'=>true, 'addWizardClass'=>false, 'tl_class'=>'w50'),
        'sql'       => "varchar(255) NOT NULL default ''",
    ];
    $GLOBALS['TL_DCA']['tl_content']['fields']['button_linktitle'] = [
        'label'     => &$GLOBALS['TL_LANG']['tl_content']['button_linktitle'],
        'exclude'   => true,
        'inputType' => 'text',
        'eval'      => ['maxlength' => 255, 'tl_class' => 'w50 clr'],
        'sql'       => "varchar(255) NOT NULL default ''",
    ];
    $GLOBALS['TL_DCA']['tl_content']['fields']['link_all'] = [
        'label'     => &$GLOBALS['TL_LANG']['tl_content']['link_all'],
        'exclude'   => true,
        'inputType' => 'checkbox',
        'eval'      => ['tl_class' => 'w50'],
        'sql'       => "varchar(255) NOT NULL default ''",
    ];
    Sprach-Labels:
    contao/languages/de/tl_content.php
    Code:
    <?php
    $GLOBALS['TL_LANG']['tl_content']['link_legend'] = 'Link-Einstellungen';
    
    $GLOBALS['TL_LANG']['tl_content']['button_linkurl'][0] 		= 'Link-URL';
    $GLOBALS['TL_LANG']['tl_content']['button_linkurl'][1]		= 'Linkziel, intern oder mit https://';
    
    $GLOBALS['TL_LANG']['tl_content']['button_linktitle'][0] 		= 'Link-Bezeichnung';
    $GLOBALS['TL_LANG']['tl_content']['button_linktitle'][1]		= 'Der Text, der verlinkt wird';
    
    $GLOBALS['TL_LANG']['tl_content']['link_all'][0] 		= 'Gesamtes Element verlinken';
    $GLOBALS['TL_LANG']['tl_content']['link_all'][1]		= 'Der Link erstreckt sich über das gesamte Element';
    Danach müsst ihr ins Installtool um die Felder in die Datenbank aufzunehmen.
    Geändert von k-webdesign (12.07.2022 um 20:27 Uhr)

  2. #2
    Contao-Nutzer
    Registriert seit
    01.12.2017.
    Beiträge
    32

    Standard

    Hallo,
    wie schaut das dann im Backend aus und wie gibst du den Link im Template aus?
    Grüße

  3. #3
    Contao-Fan Avatar von k-webdesign
    Registriert seit
    07.06.2010.
    Ort
    Karlsruhe
    Beiträge
    644
    Partner-ID
    5911
    User beschenken
    Wunschliste

    Standard

    Die Ausgabe erfolgt nach das Schema
    PHP-Code:
    <?= $this->button_linkurl
    Also abfragen, ob ein Link gesetzt wurde, dann das Link-Tag aufbauen und alles ausgeben.

    PHP-Code:
    <?php if ($this->button_linktitle): ?>
        <a href="<?= $this->button_linkurl ?>" title="<?= $this->button_linktitle ?>" class="button"><?= $this->button_linktitle ?></a>
    <?php endif; ?>
    So in etwa sieht es aus:
    Bildschirmfoto 2022-07-12 um 20.10.00.png

  4. #4
    Contao-Nutzer
    Registriert seit
    01.12.2017.
    Beiträge
    32

    Standard

    Vielen Dank, werde ich mal ausprobieren

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
  •