Ergebnis 1 bis 5 von 5

Thema: Optionale Klasse an mod_article.html5 anfügen

  1. #1
    Contao-Nutzer Avatar von worxer
    Registriert seit
    29.04.2011.
    Beiträge
    53

    Standard Optionale Klasse an mod_article.html5 anfügen

    Im Template mod_article.html5 möchte ich es Redakteuren ermöglichen, den bereits vorhandenen Klassen (class="mod_article block") eine optionale Klasse anzufügen.

    Dazu habe ich in "contao/dca/tl_article.php" ein Select-Feld "background_select" hinzugefügt und dort 3 Optionen hinterlegt:

    PHP-Code:
    <?php

    // Import PaletteManipulator class
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    // Add the new field configuration
    $GLOBALS['TL_DCA']['tl_article']['fields']['background_select'] = [
        
    'label'     => &$GLOBALS['TL_LANG']['tl_article']['background_select'],
        
    'inputType' => 'select',
        
    'options'   => ['option1''option2''option3'], // replace with actual options
        
    'eval'      => ['mandatory' => false'tl_class' => 'w50'],
        
    'sql'       => "varchar(255) NOT NULL default ''"
    ];

    // Use PaletteManipulator to add the field to a new legend
    PaletteManipulator::create()
        ->
    addLegend('background_legend''template_legend'PaletteManipulator::POSITION_AFTER)
        ->
    addField('background_select''background_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_article');

    <?
    php

    $this
    ->wrapperAttributes $this
        
    ->attr($this->cssID)
        ->
    addClass([$this->class'block'])
        ->
    addStyle($this->style)
        ->
    mergeWith($this->wrapperAttributes)
    ;

    ?>
    contao/languages/de/tl_article.php

    PHP-Code:
    <?php

    $GLOBALS
    ['TL_LANG']['tl_article']['background_select'] = ['Hintergrund wählen''Bitte wählen Sie einen Hintergrund.'];
    Mein Template sieht derzeit so aus. "background_select" habe ich unter ->addClass angefügt.

    PHP-Code:
    <?php $this->extend('mod_article'); ?>

    <?php

    $this
    ->wrapperAttributes $this
        
    ->attr($this->cssID)
        ->
    addClass([$this->class'block'$this->background_select])
        ->
    addStyle($this->style)
        ->
    mergeWith($this->wrapperAttributes)
    ;

    ?>

    <?php if (!$this->noMarkup): ?>
    <?php $this
    ->block('content'); ?>
    <div class="container_inner">
        <?= $this->parent(); ?>
    </div>
    <?php $this->endblock(); ?>
    <?php 
    endif; ?>
    Das scheint so nicht richtig zu sein, zumindest sehe ich die Klasse über diese Weise nicht im Quellcode. Liegt hier der Hund bei "<?php $this->extend('mod_article'); ?>" begraben? Eigentlich wollte ich es vermeiden, das gesamte Original-Template zu verwenden weil ich es charmant finde, nur den betreffenden Teil zu verändern.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.473
    Partner-ID
    10107

    Standard

    Die Unterstützung für $this->wrapperAttributes kommt erst in Contao 5.4.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    595
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wo im Template setzt zu $this->wrapperAttributes ?
    ___

    Du kannst das mod_article überschreiben und auch auf den StyleManager mit seinen "Templatevariablen" setzen.
    Dann brauchst du es dir nicht programmieren und machst es über die StyleManager-Optionen

    Es sei denn, du möchtest es als Freitext-Feld.
    Geändert von zoglo (27.05.2024 um 08:47 Uhr)

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.473
    Partner-ID
    10107

    Standard

    So sollte es funktionieren:
    PHP-Code:
    <?php

    $this
    ->extend('mod_article');

    $this->class trim($this->class.' '.$this->background_select);
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer Avatar von worxer
    Registriert seit
    29.04.2011.
    Beiträge
    53

    Standard

    Das hat funktioniert, besten Dank!

    Mein Template sieht nun so aus:

    PHP-Code:
    <?php
    $this
    ->extend('mod_article');
    $this->class trim($this->class.' '.$this->background_select);
    ?>

    <?php if (!$this->noMarkup): ?>
    <?php $this
    ->block('content'); ?>
    <div class="container_inner">
        <?= $this->parent(); ?>
    </div>
    <?php $this->endblock(); ?>
    <?php 
    endif; ?>
    zoglo, den StlyeManager schau ich mir bei Gelegenheit auch einmal an.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 4 (Registrierte Benutzer: 0, Gäste: 4)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •