Page 1 of 1

Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Fri Feb 27, 2009 10:22 am
by antibart
Hi,

Um diverse Abweichungen des Basistemplate in einer Templatedatei zu verwalten, wurde mir ja hier das Modul CGSimpleSmarty empfohlen, was auch sehr gute Dienste tut.



Meine Kenntisse hören allerdings ab da auf, wo ich innerhalb eines Menülevels das Template flexibel (also ohne es einzelnen Seiten zuzuordnen) wechseln will.

Also zum Beispiel so:

1.
....1.1 Template 1
....1.2 Template 2
....1.3 Template 2


Ich dachte an sectionheader oder separator. Was allerdings mit den mir bekannten Operatoren nicht so recht gelingen will.
Abweichende Templates eine Ebene "nach unten" zu verschieben, wäre eine Möglichkeit, aber angesichts der Menge an Inhalten nur eine Notlösung.

Kann mir jemand einen Tipp geben, wie ich Sectionheader oder Separator als Bedingung zuweisen kann?

Falls es nicht geht: wie kann ich array-ähnlich mehreren page_alias am kürzesten ein identisches Template zuweisen, ohne immer die ganze Zeile  mit || (oder) zu wiederholen?

Also kürzer als so

Code: Select all

{if $page_alias == 'home' || $page_alias == 'impressum'} tüdelüt {/if} 

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Fri Feb 27, 2009 1:45 pm
by cyberman
Um wie viele Templates geht es denn?

Mit CMSms kannst du ja den Page-Alias und mit CGSimpleSmarty den root- und den parent-alias abdecken.

Und dir ist klar, dass du damit das bereits vorhandene CMSms-Handling, jeder Seite ein separates Template zuweisen zu können, quasi noch mal erfinden willst ;)?

Für den Separator oder Sectionheader fällt mir auf die Schnelle nix ein.

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Sat Feb 28, 2009 7:04 am
by antibart
cyberman wrote: Um wie viele Templates geht es denn?
grob geschätzt etwa 6-7.
cyberman wrote: Mit CMSms kannst du ja den Page-Alias und mit CGSimpleSmarty den root- und den parent-alias abdecken.
Klar ... die Templates wechseln aber auch innerhalb einer Ebene und die Anzahl der Seiten ist flexibel.
cyberman wrote: Und dir ist klar, dass du damit das bereits vorhandene CMSms-Handling, jeder Seite ein separates Template zuweisen zu können, quasi noch mal erfinden willst ;)?
Ja, das ist klar. Ich würde dem Redakteur diese Arbeit gern ersparen, da diese Seite seeehr umfangreich wird und es evtl wechselnde Redakteure geben wird. Außerdem ändern sich nur bestimmte Teile des Layouts, nicht das komplette Template. Mal vier Kästen ohne Submenü, mal klassiche drei Spalen mit Submenü...
cyberman wrote: Für den Separator oder Sectionheader fällt mir auf die Schnelle nix ein.
Ich könnte mit einer Lösung leben, deren genaue Syntax ich aber noch nicht erfasst habe. Meist wechselt das Template innherhalb einer Ebene nur einmal.

So etwas wie

{if $cgsimple->get_parent_alias() == 'magazin' && $page_alias !="irgendwas" }

Also: alle Seiten unterhalb dieser Root-Ebene AUSSER der einen sollen dieses Template bekommen.

...

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Sat Feb 28, 2009 8:16 am
by antibart
Ich hätte noch ne Idee. Mir fehlt nur der passende Operator.

Die Alias-Namen für bestimmte Templates beginnen alle ähnlich. Zb immer "ausgabe" dann -01, -02, -03 usw...

Wenn die Abfrage also nur den Teil des Alias anwenden würde, dann wäer es leicht.

{if $page_alias == 'ausgabe%'} funktioniert natürlich nicht...

Gibt es so einen "Platzhalter", der nur auf teilweise Übereinstimmung abfragt...

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Sat Feb 28, 2009 9:10 am
by antibart
Einen vorläufige Lösung habe ich gefunden.

Die Seitentitel werden nicht überall gezeigt und heißen immer gleich... sie können also damit die Ausnahmen der Regel definiern.

Also etwa so

Code: Select all

{if $cgsimple->get_parent_alias() == 'magazin' && $cgsimple->get_page_title() != 'Interaktiv'}

<div id ="xxx"></div>

{else}

<div id ="yyy"></div>

{/if}
Damit sind alle Seiten mit dem Titel "Interaktiv", der in jedem Submenü einmal vorkommt, ausgeschlossen und haben eine eigenes Template.

Ich lass das [gelöst] aber erstmal weg.. den zum einen glaube ich noch an eine praktischere Lösung ... zum anderen: wer weiß, was noch kommt.

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Sat Feb 28, 2009 4:01 pm
by Andiministrator
So was in der Form geht nicht?:
{if $page_alias|truncate:7 eq 'ausgabe'}

Oder die regulären Ausdrücke von Smarty?

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Thu Mar 05, 2009 6:51 am
by antibart
Andiministrator wrote: So was in der Form geht nicht?:
{if $page_alias|truncate:7 eq 'ausgabe'}

Oder die regulären Ausdrücke von Smarty?
Sorry: ich kenne Smartys reguläre Ausdrücke noch nicht. Das oben kann ich inhaltlich nachvollziehen und demenstprechend auch fuinktionsfähig einsetzen. Aber "truncate:7 eq 'ausgabe'" verstehe ich auch nicht, wenn ich es mir übersetze.  Truncate bedeutet abbrechen/abschneiden. Aber für was steht dort die 7. Mir erschließt sich der Sinn dieser Zeile nicht. Ich kann leider nichts programmieren, was ich nicht verstehe.

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Thu Mar 05, 2009 9:31 am
by Andiministrator
truncate:7 schneidet die ersten 7 Zeichen des Inhalts von $page_alias ab.
Wenn also $page_alias = "ausgabe1234" ist, so ist nach der Behandlung mit truncate:7 nur noch "ausgabe" übrig.
Das kannst Du nun mit einer if-Anweisung prüfen.

Mehr über truncate findest Du hier:
http://www.smarty.net/manual/de/languag ... uncate.php

Zu den regulären Ausdrücen von Smarty kannst Du Dich hier informieren:
http://www.smarty.net/manual/de/languag ... eplace.php

Re: Templateverwaltung mit CGSimpleSmarty - Frage

Posted: Fri Mar 06, 2009 8:24 am
by antibart
Andiministrator wrote: truncate:7 schneidet die ersten 7 Zeichen des Inhalts von $page_alias ab.
Das lauchtet ein ... Danke für die Erläuterung...