Eigene Templates trotz fehlender Auswahlmöglichkeit: Unterschied zwischen den Versionen

Aus Contao Community Documentation

K
(Hinweis auf Erweiterung template_override ergänzt)
 
(8 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}
 
{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}
 
[[Category: Admin_HOWTOS]]
 
[[Category: Admin_HOWTOS]]
 +
[[Category: Dev_HOWTOS]]
  
 
Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.
 
Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.
Zeile 6: Zeile 7:
 
Da kann man sich mit einem kleinen Trick behelfen.
 
Da kann man sich mit einem kleinen Trick behelfen.
  
Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem läd man dann die passende eigene Template Datei.
+
Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem, läd man dann die passende eigene Template Datei.
  
Vorgehen:
+
=Vorgehen '''Möglichkeit 1'''=
  
 
# Kopie des Original Templates anlegen (siehe auch [[Templates_bearbeiten|Templates_bearbeiten]])
 
# Kopie des Original Templates anlegen (siehe auch [[Templates_bearbeiten|Templates_bearbeiten]])
Zeile 14: Zeile 15:
 
#* template_1.tpl mit dem Oringinal Code
 
#* template_1.tpl mit dem Oringinal Code
 
#* template_2.tpl mit dem geänderten
 
#* template_2.tpl mit dem geänderten
# Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein welches Template man nun wirklich laden möchte:
+
# Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein, welches Template man nun wirklich laden möchte:
 +
 
 
<source lang="php">
 
<source lang="php">
    <?php  
+
<?php
      $pos = strpos($this->class, 'klasse_die_man_abfragen_will');
+
 
      if ($pos === false) {include('template_1.tpl');}
+
  if(in_array('klasse_die_man_abfragen_will', explode(' ', $this->class)))
      else {include('template_2.tpl');}
+
  {
    ?>
+
    include('template_1.tpl');
 +
  }
 +
  else
 +
  {
 +
    include('template_2.tpl');
 +
  }
 +
?>
 +
</source>
 +
 
 +
=Vorgehen '''Möglichkeit 2''' (mit nur einer Datei)=
 +
 
 +
Man kopiert das entsprechende Core-Template in den Ordner '''roots/templates/''' (per FTP oder übers BE) und erzeugt darin folgende Struktur.
 +
 
 +
<source lang="php">
 +
<?php if(in_array('klasse_die_man_abfragen_will', explode(' ', $this->class))): ?>
 +
  eigenes Template
 +
<?php else: ?>
 +
  default Template
 +
<?php endif; ?>
 
</source>
 
</source>
  
 
Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)
 
Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)
  
{{msgImportant|noch nicht getestet.. auch noch nicht unter 2.9 mit Template Ordner getestet... Bitte PM o.ä. an mich wenn das jemand getestet hat und es funktioniert}}
+
'''Möglichkeit 2''' ist mehrfach getestet.
  
 +
=Vorgehen '''Möglichkeit 3''' (mit Erweiterung)=
 +
 +
Wer lieber eine Auswahlliste im Backend hat, kann alternativ die Erweiterung "template_override" einsetzen. Diese fügt an sehr vielen Stellen (z.B. in allen Content-Elementen) eine Auswahlmöglichkeit des Templates hinzu. Außerdem wird in der Template-Auswahl markiert, welche Templates vom Core verwendet werden und welche aus dem Theme stammen.
  
 
----
 
----
  
 
--[[Benutzer:MacKP|MacKP]] 17:36, 29. Sep. 2010 (CEST)
 
--[[Benutzer:MacKP|MacKP]] 17:36, 29. Sep. 2010 (CEST)
 +
 +
[[Benutzer:ways2web|ways2web]] 00:01, 02. Jun. 2011 (CEST) '''thx 2 Florian'''
 +
 +
--[[Benutzer:Andreas|Andreas Burg]] 01:48, 20. Aug. 2012 (CEST)

Aktuelle Version vom 12. September 2013, 12:39 Uhr

betrifft
TYPOlight Version Alle Versionen
Contao Version ab 2.9

Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.

Da kann man sich mit einem kleinen Trick behelfen.

Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem, läd man dann die passende eigene Template Datei.

Vorgehen Möglichkeit 1

  1. Kopie des Original Templates anlegen (siehe auch Templates_bearbeiten)
  2. Zwei neue Templates anlegen (oder mehr.. wenn man das braucht) die man dann später benutzen möchte:
    • template_1.tpl mit dem Oringinal Code
    • template_2.tpl mit dem geänderten
  3. Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein, welches Template man nun wirklich laden möchte:
<?php
 
  if(in_array('klasse_die_man_abfragen_will', explode(' ', $this->class)))
  {
    include('template_1.tpl');
  }
  else
  {
    include('template_2.tpl');
  }
?>

Vorgehen Möglichkeit 2 (mit nur einer Datei)

Man kopiert das entsprechende Core-Template in den Ordner roots/templates/ (per FTP oder übers BE) und erzeugt darin folgende Struktur.

<?php if(in_array('klasse_die_man_abfragen_will', explode(' ', $this->class))): ?>
  eigenes Template
<?php else: ?>
  default Template
<?php endif; ?>

Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)

Möglichkeit 2 ist mehrfach getestet.

Vorgehen Möglichkeit 3 (mit Erweiterung)

Wer lieber eine Auswahlliste im Backend hat, kann alternativ die Erweiterung "template_override" einsetzen. Diese fügt an sehr vielen Stellen (z.B. in allen Content-Elementen) eine Auswahlmöglichkeit des Templates hinzu. Außerdem wird in der Template-Auswahl markiert, welche Templates vom Core verwendet werden und welche aus dem Theme stammen.


--MacKP 17:36, 29. Sep. 2010 (CEST)

ways2web 00:01, 02. Jun. 2011 (CEST) thx 2 Florian

--Andreas Burg 01:48, 20. Aug. 2012 (CEST)

Ansichten
Meine Werkzeuge

Contao Community Documentation

Ich überlege gerade warum Contao Developer einen Hangout mit Bildübertragung machen... abgesehen von TheTril sind wir da alle relativ hässliche Typen wo Audio deutlich reichen würde. *g*

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge