Ergebnis 1 bis 5 von 5

Thema: Via InsertTag aktuelle Theme-ID (Name/ID) auslesen?

  1. #1
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard Via InsertTag aktuelle Theme-ID (Name/ID) auslesen?

    Wie kann ich den aktuellen Namen des eingesetzten Themes oder die ID des Themes der jeweiligen Seite im Template (z.B. fe_page.tpl) auslesen ?

    Hier wird leider nichts aufgeführt: http://www.contao.org/inserttags.html#new-name

  2. #2
    Contao-Nutzer Avatar von mae
    Registriert seit
    20.07.2011.
    Beiträge
    99

    Standard

    edit:

    Hab eine passende Lösung hierfür erstellt, wobei man das sicherlich irgendwie optimieren kann.

    template: fe_page.(tpl/html5)

    PHP-Code:
    <?php 

       
    //## get name of layout's theme ##

        
    $theme
        
    $query $this->layout->pid;
        
    $this->import('Database');

        
    $result $this->Database->prepare("SELECT name FROM tl_theme WHERE id=?")
                                           ->
    execute($query);

        
    $result $result->fetchAssoc(); //cleanup!

        
    $theme $result['name']; // = final
    ?>

    <?php echo $theme ?> //= MySuperThemeName
    Soweit ich das sehe, wird das ja bei jedem Seitenaufruf abgefragt ?
    Geändert von mae (12.08.2011 um 14:07 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    11.08.2010.
    Beiträge
    113

    Standard

    Hallo,
    es geht auch etwas kürzer:
    PHP-Code:
    <?php 
        
    // get name of layout's theme
        
    $pid $this->layout->pid;
        
    $this->import('Database');
        
    $theme $this->Database->prepare("SELECT name FROM tl_theme WHERE id=?")->limit(1)->execute($pid);
        echo 
    $theme->name//= MySuperThemeName
    ?>
    Keine Ahnung, ob es so auch schneller ist.
    MfG
    Ulrike
    Geändert von Ulrike (12.08.2011 um 21:37 Uhr)

  4. #4
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    DB-Abfragen sollten niemals einfach im Template eingefügt werden! Erstellt lieber eine kleine Extension!!!

  5. #5
    Contao-Nutzer
    Registriert seit
    11.08.2010.
    Beiträge
    113

    Standard

    Hallo,

    ist natürlich besser, eine kleine Erweiterung zu erstellen. Der erforderliche Hook ist replaceInsertTags, als Vorlage für die Erweiterung kann man moreTags nehmen. Ist schnell erledigt, und man kann dann im Template z.B. eingeben:
    PHP-Code:
    <div>{{theme::<?php echo $this->layout->pid?>}}</div>
    Dabei ist 'theme' der Teil des InsertTags, der in der Erweiterung definiert werden muss.

    Die Datenabfrage von weiter oben kann man dann in der Erweiterung verwenden.

    MfG
    Ulrike

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
  •