Ergebnis 1 bis 8 von 8

Thema: Ersatz für {{page::mainAlias}} - gesucht: 3. Ebene und darunter

  1. #1
    Contao-Fan Avatar von herr rilke
    Registriert seit
    29.01.2011.
    Ort
    Münster
    Beiträge
    401

    Standard Ersatz für {{page::mainAlias}} - gesucht: 3. Ebene und darunter

    hallo

    bislang habe ich unterseiten eines navigations-astes durch den einsatz eines inserttags in der "Body-Klasse" des themes ansprechen können
    Code:
     {{page::mainAlias}}
    .
    ... hat mir brav eine klasse in den body-tag geschrieben. auch für unterseiten. und die konnte ich fein ansprechen und das layout verändern.

    nun soll dieser ast aus der ersten ebene auf die zweite oder dritte verschoben werden und mein inserttag funktioniert nicht mehr.

    kennt ihr eine elegantere methode als jede unterseite mit einer (der gleichen) klasse zu versehen.
    was ja auch fehleranfällig ist, weil der redakteur das vlcht vergisst.

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

    Standard

    Ich habe die Anforderung nicht ganz verstanden. Welche Body Klasse willst du automatisiert vergeben?
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan Avatar von herr rilke
    Registriert seit
    29.01.2011.
    Ort
    Münster
    Beiträge
    401

    Standard

    mh, verzwickt.

    also: der betreffende navigations-ast war in der ersten ebene.
    mit dem genannten inserttag konnte ich so auch auf seinen unterseiten stets auf die klasse im body-tag zurückgreifen.

    vorher:

    Code:
    startseite
    
    leistungen 
    	- unterseite 1
    		- unterseite 1.1
    		- unterseite 1.2
    	- unterseite 2
    
    produkte
    
    kontakt


    das geht dann nicht mehr, wenn der ast von der obersten ebene verschoben wird.
    {{page::mainAlias}} würde dann zu viele unterseiten erfassen.

    nachher:
    Code:
    startseite
    
    service 
    	- leistungen 
    		- unterseite 1
    			- unterseite 1.1
    			- unterseite 1.2
    		- unterseite 2
    		
    	- produkte
    
    
    kontakt
    wenn ich also nicht möchte, dass die {{page::mainAlias}} sich auch auf die seite "produkte" bezieht, bin ich etwas aufgeschmissen.

    wird die frage etwas klarer?

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

    Standard

    Nein

    Wenn du auf der Seite "unterseite 1.1" bist - welche Body Class hättest du da gerne?
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Fan Avatar von herr rilke
    Registriert seit
    29.01.2011.
    Ort
    Münster
    Beiträge
    401

    Beitrag



    "leistungen"

  6. #6
    Contao-Fan Avatar von herr rilke
    Registriert seit
    29.01.2011.
    Ort
    Münster
    Beiträge
    401

    Standard

    habe schon überlegt, ob man in contao irgendwie an den "pfad" kommt und überprüfen kann, ob "leistungen" im pfad enthalten ist.

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

    Standard

    Dazu nutzt du am besten einen parseTemplate Hook, der für das fe_page Template die entsprechende Body Class zu den Template Parametern hinzufügt. Im Hook kommst du mit $GLOBALS['objPage'] an die aktuelle Page und mit ->trail dann an den Trail (ist ein Array aus Page IDs, angefangen mit der aktuellen ID). Aus dem Trail kannst du dir dann die Seite aus dem gewünschten Level holen und somit deren Alias.
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Fan Avatar von herr rilke
    Registriert seit
    29.01.2011.
    Ort
    Münster
    Beiträge
    401

    Standard

    ach, wie cool das klappt!
    danke, wäre ich im leben nicht drauf gekommen.
    sehr gelernt heute:

    PHP-Code:
    <?php
    // src/EventListener/ParseTemplateListener.php

    namespace App\EventListener;

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

    #[AsHook('parseTemplate')]
    class ParseTemplateListener
    {
        public function 
    __invoke(Template $template): void {

        if (
    'fe_page' === $template->getName() || === strpos($template->getName(), 'fe_page_')) {
     
                if (
    in_array('88'$GLOBALS['objPage']->trail) ){
                    
    $template->class .=  ' leistungen ';
                }
            }

        }
    }

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
  •