Zum Inhalt springen

Extension Template funktioniert nicht

Erstellt am 20. Januar 2006 · 7 Antworten · letzte Antwort am 21. Januar 2006

Tags: Frage

petewulf ·

Hallo Leute!

Ich hab da ein Problem mit den Extension Templates. Ich habe auf einer existierenden Seite ein paar Subdomains, die dann in anderen Farben dargestellt werden sollen. Daher dachte ich mir ich leg einfach ein Extension Template an und überschreib genau die entsprechenden Werte:

Haupt-Template-Menüdefinition:

####################[ Defining the Main-Menue]###############

#--Defining the cObj for the HMENU
temp.mmenue = HMENU

temp.mmenue{
  #Display the Menue Type Directory 
  #Display the Main Menue Links from Menue-Level 1
  entryLevel = 1
  #--Menuelevel 1 should be a from the Type Textmenue
  1 = TMENU

  }

#--Define Level1 for the Menue
temp.mmenue.1{
  #--Normal State Properties
  NO.ATagParams = class="mmenue_lnk mmenue"

  #--Enable active state and set properties:
  ACT = 1
  ACT.ATagParams = class="mmenue1_lnk_act mmenue_act"
  }


####################[ Defining the Sub-Menue]###############

#--Defining the cObj for the HMENU
temp.smenue_lvl1 = HMENU

temp.smenue_lvl1{
  #Display the Menue Type Directory from Level 1
  entryLevel = 2
  #--Menuelevel 1 should be a from the Type Textmenue
  1 = TMENU
  }


#--Define Level2 for the Menue
temp.smenue_lvl1.1{
  #--Normal State Properties
  NO.ATagParams = class="smenue1_lnk smenue_1"
  NO.linkWrap =     
  #--Enable active state and set properties:
  ACT = 1
  ACT.ATagParams = class="smenue1_lnk smenue_1"
  ACT.linkWrap =     
  }

...und hier im Extension Template sollte einfach nur die Klassenzuweisung überschrieben werden:

#--Define Level1 for the Menue
temp.mmenue.1{
  NO.ATagParams = class="neue_klasse"
  ACT.ATagParams = class="neue_klasse"
  }

#--Define Level2 for the Menue
temp.smenue_lvl1.1{
  NO.ATagParams = class="neue_klasse"
  ACT.ATagParams = class="neue_klasse"
  }

Es funktioniert aber leider nicht, die Ausgabe der neuen Klassen erfolgt nicht, es werden immer die alten Klassen ausgegeben. (Die Seite bleibt absolut ident mit aktiviertem Extention Template)

Grundsätzlich wird das Extension Template schon angesprochen, d.h. wenn ich testweise z.b. folgendes eintrage, wird dies auch ausgegeben:

page = PAGE
page.10 = TEXT
page.10.value = Diese Seite befindet sich zurzeit im Aufbau!

Ich hab keinen Rat mehr wieso das nicht funktioniert, das sollte doch schon ausgereift sein oder gibt es da noch etwas zu beachten?

Vielen Dank,
pete

petewulf ·

Servus freyherr,

Ja, die 3 Häckchen sind alle deaktiviert.

Das komische ist, dass im Extension Template eigentlich sonst alles funktioniert bis auf das Menü. Kann es sein, dass ein Menü im Extension Template _nicht_ überschrieben bzw. erweitert werden kann?

LG,
Daniel

steffenk ·

das liegt daran, das die Variable temp im anderen Template nicht mehr bekannt ist (so wie styles auch).
Versuch es mal mit dem Objekt "lib"

theo ·

Ich denke mal, ihr habt das Prinzip nicht verstanden.

Das temp-Objekt kann ich definieren und ablegen wo ich will. Das ist vollkommen schnuppe.

Wenn ich Änderungen über ein Extension-Template in Kraft setzen möchte, dann muß ich die gewünschten Objekte auch in die Marker einbinden, d.h. ich überschreibe das Kopieren der Objekte in den Marker.

petewulf ·

Hallo,

@theo: Ich hab das mit dem Marker schon versucht, zuerst nur den Marker alleine und dann das komplette Template Setup erneut definiert, die gewünschte Ausgabe erfolgt einfach nicht.

Sollte es eigentlich nicht so sein, dass wirklich nur die Objekte die anders sind, neu zu definieren, denn gerade darin liegt ja die Erleichterung eines Extension Templates - ansonst ist es ja vollkommen umsonst wenn man viele Sachen wieder neu definieren bzw. überschreiben muss? Ab dem Marker weg ändert sich ja nichts mehr.

Muss ich da vielleicht den kompletten Weg des Markers bis ins Dokument überschreiben? (Menüdefinition->Template->Marker->Page)

@steffenK: Dies hatte ich mir auch schon gedacht und ich hab es mit einem eigenen Objekt versucht ist aber leider dasselbe 🙁

freundliche Grüße,
Daniel

theo ·
petewulf schrieb

Sollte es eigentlich nicht so sein, dass wirklich nur die Objekte die anders sind, neu zu definieren, denn gerade darin liegt ja die Erleichterung eines Extension Templates -

Stimmt. Genauso funktioniert es ja auch.

Beispiel:
Du legst irgendwo zwei temp-Objekte an, also temp.1 und temp.2

Im Haupttemplate kopierst Du temp.1 in den Marker MENU

page.10.marks.MENU < temp.1

Wenn Du den Marker Menu irgendwo mit temp.2 anstatt temp.1 füllen willst, dann legst Du ein extension-Template für die entsprechende Seite an, also

page.10.marks.MENU < temp.2

Hierdurch wird die Angabe aus dem Haupttemplate überschrieben
temp-Objekte (oder auch lib-Objekte, das is wurscht) sind ja immer solange funktionslos, solange sie nicht irgendwo in einen Marker (oder einen Subpart) hineinkopiert werden.

Wenn das bei Dir aber so nicht funktioniert, dann liegt das Problem irgendwo anders...

petewulf ·

Hi theo,

Deine Antwort hat mir nun zur Lösung des Problems verholfen.
Ich habe den Marker nur im Template selbst neu zugewiesen, nicht aber an die page weitergereicht:

falsch:

temp.mainTemplate.marks.MMENUE < temp.mmenue
temp.mainTemplate.marks.SMENUE < temp.smenue_lvl1

richtig:

page.10.marks.MMENUE < temp.mmenue
page.10.marks.SMENUE < temp.smenue_lvl1

Ich dachte in meinem Grundansatz eben, da die Zuweisung des Templates an das page Objekt eh schon im Haupttemplate erfolgt ist, wird das auch ins Subtemplate übernommen, dem ist aber anscheinend nicht so. Wie es scheint muss zwingend der komplette Weg bis zum page Objekt angegeben werden.

Meinen Überlegungen zufolge bin ich zu diesem Entschluss gekommen (da das TS ja als riesiges Array aufgebaut ist) - dass beim parsen in der Rootline begonnen wird, und Level für Level bis zur entsprechenden Seite alle TS-Objekte und Variablen die den gleichen Bezeichner haben einfach überschrieben werden. Da sich aber nur ein kleiner Wert innerhalb einer Menüdefinition ändert, müsste dies eigentlich auch ohne der doppelten Zuweisung des Markers funktionieren, da dieser ja schon in einem darüberliegendem Template definiert wurde und nicht überschrieben wurde.

Das wäre dann einfach so, als würde man mehrere Schablonen(jede Schablone ist eine Ebene) übereinanderlegen, wobei jede tieferliegendere Ebene als oberstes daraufgelegt wird und sich gleiche Objekte verdecken, sodass am Schluß nur die oberste, sichtbare Schicht relevant ist.

Danke für die Hilfe.

freundliche Grüße,
Daniel