{"issue":{"state":"open","created_at":"2011-11-29T18:36:26Z","updated_at":"2011-11-29T18:36:34Z","user":{"gravatar_id":"02c8f3c5cd56551b510e61ab671abc87","id":1224532,"url":"https://api.github.com/users/jantheofel","avatar_url":"https://secure.gravatar.com/avatar/02c8f3c5cd56551b510e61ab671abc87?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"jantheofel"},"comments":7,"body":"Ich halte die Nutzung von mehreren Templatesets innerhalb einer TYPOlight-Installation für wünschenswert. Im Folgenden will ich kurz beschreiben, was ich darunter verstehe, warum wir sie brauchen und wie man sie implementieren könnte.\n\n**Ausgangssituation:**\n\nZur Zeit kann nur das fe_* Template einem Seitenlayout zugewiesen werden. Das ist hilfreich um verschiedene Seitenlayouts zu erzeugen. Wir haben aber immer wieder Fälle, bei denen wir gerne andere Templates abhängig von dem Seitenlayout ändern würden. Bei manchen werden zusätzliche DIVs benötigt, andere sollen schlanker gestaltet werden, bei einigen wünschen wir einen reduzierten XML-Output. Die Änderung an solchen Templates greift aber immer systemweit. Nur bei wenigen Modulen kann das zu verwendende Template ausgewählt und so die Ausgabe steueren.\n\nEinziger Workaround ist zur Zeit innerhalb des Templates eine Abfrage einzubauen \"wo\" man sich befindet und dann verschiedene Varianten davon auszugeben. Dies ist relativ umständlich und vor allem fehleranfällig.\n\n**Templatesets:**\n\nUnter einem Templateset verstehe ich eine Reihe von modifizierten Templates, die zusammengehören. Es könnte also ein modifiziertes fe_page-Template zusammen mit einer speziellen Artikelansicht sein. Diese sollten im Seitenlayout zuweisbar sein als Alternative zur Zuordnung eines fe_page-Templates.\n\n**Wozu dienen Templatesets?**\n\nMittels Templatesets könnten innerhalb einer Seite komplett verschiedene Seitenausgaben realisiert werden. Diese könnten grundlegend andere Seitenstrukturen definieren während Teile der Seite weiter das TYPOlight interne Framework verwenden sollen.\n\nSogar Ausgaben, die nicht auf HTML basieren wären so für bestimmte Seiten möglich. Dies betrifft beispielsweise auf eine allgemeine XML-Ausgabe wie sie in Ticket #440 angefragt wurde.\n\nEs würde auch den im Forum immer wieder aufkeimenden Wunsch nach kostenlosen/kostenfreien \"üblichen\" Templates bedienen, weil man hier eigene Templatedateien zusammen mit passenden CSS ausliefern könnte. Ob das technisch immer sinnvoll ist sei dahingestellt, aber es wäre zumindest möglich.\n\n**Wie kann man es implementieren?**\n\nDie Implementierung ist in meinen Augen relativ einfach möglich. Ich würde vorschlagen, dass alle Templates eines Templatesets in einem Ordner gesammelt werden. Diese sollte idealer Weise ein Unterordner des bestehenden Template-Ordner \"templates\" sein.\n\nIn der Seitenstruktur könnte ein solcher Template-Ordner ausgewählt werden. Dabei sollten die Templates für dieses Seitenlayout nun bevorzugt aus dem Templateset-Ordner, dann aus dem Template-Ordner (dort könnten allgemein gültige Templates für alle Seitenlayouts definiert werden) und schließlich die Standardtemplates aus dem System herangezogen werden. \n\nZu Implementieren wäre also (wenn ich nichts übersehen habe) ein neues Feld zur Template-Ordner-Auswahl im Seitenlayout und eine zusätzliche Abfrage ob dieser Ordner gesetzt ist beim Einlesen der Templates.\n\n--- _Originally created on April 15th, 2010, at 06:15pm (ID 1840)_","assignee":{"gravatar_id":"87d2e5aefadcb310f9155df28c2b3582","id":1192057,"url":"https://api.github.com/users/leofeyer","avatar_url":"https://secure.gravatar.com/avatar/87d2e5aefadcb310f9155df28c2b3582?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"leofeyer"},"id":2389773,"labels":[{"name":"Feature","color":"4183c4","url":"https://api.github.com/repos/contao/import/labels/Feature"},{"name":"framework","color":"e6e6e6","url":"https://api.github.com/repos/contao/import/labels/framework"}],"pull_request":{"patch_url":null,"html_url":null,"diff_url":null},"number":1840,"title":"Templatesets ermöglichen","closed_at":null,"html_url":"https://github.com/contao/import/issues/1840","url":"https://api.github.com/repos/contao/import/issues/1840","milestone":{"state":"open","created_at":"2011-11-29T15:29:48Z","due_on":null,"closed_issues":21,"creator":{"gravatar_id":"87d2e5aefadcb310f9155df28c2b3582","id":1192057,"url":"https://api.github.com/users/leofeyer","avatar_url":"https://secure.gravatar.com/avatar/87d2e5aefadcb310f9155df28c2b3582?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"leofeyer"},"number":25,"description":"Contao 2.9.0 (minor release)","title":"2.9.0","url":"https://api.github.com/repos/contao/import/milestones/25","open_issues":1}},"action":"created","comment":{"created_at":"2011-11-29T18:36:34Z","updated_at":"2011-11-29T18:36:34Z","user":{"gravatar_id":"02c8f3c5cd56551b510e61ab671abc87","id":1224532,"url":"https://api.github.com/users/jantheofel","avatar_url":"https://secure.gravatar.com/avatar/02c8f3c5cd56551b510e61ab671abc87?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"jantheofel"},"body":"Ich befürchte, dass entgegen meiner ersten Annahme mit der Implementierung in 2.9.0 diese Anforderung leider doch noch nicht vollständig vorhanden ist. Mit den Themes sind zwar grundlegend andere Layouts möglich. Aber was, wenn ich eigentlich nur ein einzelnes Template für einen Teil der Seitenstruktur austauschen möchte? In diesem Fall müsste ich hingehen, alle CSS-Dateien, (anderen) Templates, etc. eines Themes manuell kopieren, ein neues Theme anlegen, darin ein Layout und dieses einer Seite zuweisen. Ziemlich viel Aufwand, wenn man bedenkt, dass ich vielleicht nur zwei Zeilen Code in einem Template ändern möchte...\n\nDaher war mein Vorschlag, den Templateordner (zusätzlich) in der Seitenstruktur anzugeben. Zusammen mit den Themes würde sich dann beim Einlesen eines Templates folgendes zur Emittelung der Quelle des Template-Files ergeben: \n1. Ist in der Seitenstrutur ein Template-Ordner angegeben? Wenn ja: Ist das Templatefile dort vorhanden? Wenn ja: Einlesen.\n2. Ist im Theme ein Template-Ordner angeben? Wenn ja: Ist das Templatefile dort vorhanden? Wenn ja: Einlesen.\n3. Ist im Verzeichnis /templates das Templatefile dort vorhanden? Wenn ja: Einlesen.\n4. Fallback auf das Standardtemplate aus dem Core bzw. Modul.\n\nNeu in der Logik käme dabei nur der erste Punkt hinzu. Der Rest müsste so (oder so ähnlich) bereits implementiert sein.\n\nAlternativ würde ich um einen Hook bitten, der vor dem Einlesen des Template-Files greift und als Rückgabewert den Template-Code hat. Liefert der Hook etwas zurück wird das als Template verwendet statt es wie üblich einzulesen. Dann könnte man so etwas einfach über ein Modul lösen. Ich kann mir aber vorstellen, dass diese Implementierung kaum mehr Aufwand ist als das eigentliche Feature.\n\n--- _Originally created on June 23rd, 2010, at 04:09pm_","id":2940621,"url":"https://api.github.com/repos/contao/import/issues/comments/2940621"}}