Ich habe eine Site eingerichtet, in der die meisten Seiten durch ein Root-Template definiert sind, das Template nutzt dazu eine HTML- und CSS-Vorlage. Ein paar Seiten sollen aber anders dargestellt werden, z.B. 3 statt 2 spaltig. Im Root-Setup steht dazu
[globalVar = TSFE:id = 120][globalVar = TSFE:id = 65]
temp.mainTemplate.template.file = fileadmin/Templates/3-spalten.html
[else]
temp.mainTemplate.template.file = fileadmin/Templates/2-spalten.html
[end]
An anderer Stelle wähle ich nach gleichem Verfahren das entsprechende CSS aus. Das funktioniert auch bestens, nur die beiden Seiten mit der id 120 und 65 werden 3-spaltig dargestellt. Jetzt meine Frage: bei meinem Verfahren muss ich für jede Seite, die ich 3-spaltig darstellen will, im Setup die zusätzliche Condition einpflegen. Kann man das nicht eleganter lösen, so dass ich z.B. nur in Constants eine Liste von ids eingebe und den Rest übernimmt das Script? Ich bin nicht erfahren genug, ich komm nicht drauf.
Gruß,
Stefan
Hallo, Stefan,
Du hast die Lösung eigentlich schon selbst. Hier ein Beispiel.
Hier die TS-Constants:
#Defines globarVar-conditions in which NO left area should be created automatically, typically pages
#cat=PapaAndinaGeneral/links/noLeftAreaPages; type=string; label= Comma separated List Conditions where NO left Area should be created automatically, e. g. TSFE:id=47, TSFE:id=48 will ommit display at pages with IDs 47 and 48
noLeftAreaPages =
#Defines subbranches in page-tree where NO left area should be created automatically
#cat=PapaAndinaGeneral/links/noLeftAreaBranches; type=string; label= Comma separated List of integers significating page IDs, at which and their children pages the left Area should NOT be created automatically, e. g. 47, 48 will ommit display at pages with IDs 47 and 48 - as like as their children pages
noLeftAreaBranches = 14, 8, 9
#Defines the ID of the Page which serves as the Web site root
#cat=PapaAndinaGeneral/links/webSiteRootID; type=int+; label= ID of Web Site root
webSiteRootID = 3
Folgend das TS-Setup:
# Creates and fills left Area
lib.areaLeft = COA
lib.areaLeft.wrap = <div id="areaLeft">|</div>
#Fills in Patron Organization Box, if current page IS Web Site Root
[globalVar = TSFE:id = {$webSiteRootID}]
lib.areaLeft.10 < styles.content.getLeft
lib.areaLeft.20 < lib.patronOrganizationBox
# Fills in secondary navigation and sub pages, if current page is NOT Web Site Root (Home)
[else]
lib.areaLeft.30 < lib.secondaryNavigation
lib.areaLeft.40 < lib.subpages
[end]
#Removes left Area for certain Conditions (mostly pages or subtrees)
[globalVar = {$noLeftAreaPages}][PIDinRootline = {$noLeftAreaBranches}]
lib.areaLeft >
[end]
Wie Du siehst, habe ich bei mehreren Seiten auch die Variablen nochmals wiederholt. Leider hat ne einfache Integer-Liste bei mir nicht funktioniert.
Hoffe, das hilft,
Falk
also ich will noch eine Möglichkeit aufzeigen
Dies hat den Vorteil, das man nicht mehr ans TS muss sondern für jede Seite individuell über Layout wählen kann, welches Template greifen soll.
Hallo, Steffen,
das ist natürlich auch ne schöne Möglichkeit. Dann kann man halt "nur" fixe Layouts vordefinieren, die dann greifen. Wenn man nicht mehr als 4? Layouts hat, ist das bestimmt ausreichend. Bei mehr als 4 wirds dann wohl haarig.
Aber super Tipp von Dir. Viele Wege führen nach Rom.
Falk
-> FalkWalter: BINGO! Funktioniert, many thanks.
-> SteffenK: Na der ist der Hit, für meine Anwendung optimal. Super-Many Thanks.
@Falk
ich meine, man kann noch beliebige dazufügen. Das Array kann doch beliebig erweitert werden, so wie man auch die Namen der Labels neu definieren kann 😉
Hallöchen,
wir haben bei uns das ganze auch über Layouts bzw. Inhaltsvorlage im Seitenheader gelöst.
Haben dazu ein Layout und vier Inhaltsvorlagen.
So ist der Redakteuer felxibel genug um zu entscheiden, ob er jetzt links ne Spalte haben will oder nicht.
Greetings
Hallo, Steffen,
das wusste ich nicht, dass man das Array erweitern kann. Das klingt sehr interessant! Vielen Dank!
Grüßle
Falk