Ergebnis 1 bis 1 von 1

Thema: CSS-Klasse bei Rootseiten und Abfrage in fe_page.html5 je nach CSS-Klasse

  1. #1
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    496

    Standard CSS-Klasse bei Rootseiten und Abfrage in fe_page.html5 je nach CSS-Klasse

    Falls man auch der Rootseite eine CSS-Klasse vergeben will und diese dann im Template fe_page.html5 abfragen will und den zugehörigen Seiten eine CSS-Klasse zuweisen will, ist dieser Tutorial dafür gedacht.

    1. Hinzufügen des Standardfeldes für die Rootseit(en) für Backend

    Folgende Datei unter folgendem Pfad anlegen

    Code:
    contao/dca/tl_page.php
    PHP-Code:
    <?php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    PaletteManipulator::create()
        ->
    addLegend('expert_legend''chmod_legend'PaletteManipulator::POSITION_AFTER)
        ->
    addField('cssClass''expert_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('root''tl_page')
        ->
    applyToPalette('rootfallback''tl_page');
    2. Abfrage für fe_page.html5 vorbereiten

    Folgende Datei unter folgendem Pfad anlegen

    Code:
    src/EventListener/LoadPageDetailsListener.php
    PHP-Code:
    <?php
    // src/EventListener/LoadPageDetailsListener.php
    namespace App\EventListener;

    use 
    Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
    use 
    Contao\PageModel;

    #[AsHook('loadPageDetails')]
    class LoadPageDetailsListener
    {
        public function 
    __invoke(array $parentModelsPageModel $page): void
        
    {
            
    // Add additional data from the root page to the processed page
            
    if (count($parentModels) > 0) {
                
    $rootPage end($parentModels);
                
    $page->rootCssClass $rootPage->cssClass;
            }
        }
    }
    3. Abfrage in fe_page.html5

    folgendes in fe_page.html5 eintragen

    PHP-Code:
    <?php

    $classes 
    array_filter(explode(' '$this->class ?? ''));

    if (
    'rootCustomClass' === $GLOBALS['objPage']?->rootCssClass) {
        
    $classes[] = 'frontendCustomClass';
    }

    $this->class implode(' '$classes);

    ?>

    <?php $this->extend('fe_page'?>
    Danach muss man den Applikationscache löschen und neu aufbauen lassen.
    Geändert von jenda (04.06.2024 um 10:15 Uhr)

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
  •