Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Template wechseln - aber wie?

Begonnen von Samson, 10. August 2010, 17:59:03

« vorheriges - nächstes »

Samson

Ich möchte mit einem Plugin das Template wechseln, d.h. für bestimmte Inhaltsseiten ein jeweils anderes Template benutzen. So trivial scheint das aber nicht zu sein. Wenn das Plugin abgearbeitet wird, ist das (normale) Template bereits eingelesen und das Wechseln wird unmöglich.

In phpCMS konnte man in den Contentdateien (= Inhaltsseiten) festlegen, mit welchem Template der Content zu verarbeiten ist. Hier mal ein phpCMS-Beispiel dieser Seite:
{PROJECT}/template/homepage.ini
{TITEL}Aktuelle Nachrichten
{SCRIPT}/news/index.php
{CONTENT0}
{CONTENT}
Mit PROJECT wird die Projektdatei festgelegt und die enthält u.a. den Dateinamen des zu verwendenden Templates. Um Fragen vorzubeugen: TITEL, CONTENT0 und CONTENT sind frei im Template plazierbare Platzhalter, die in der Contentdatei mit Inhalt gefüllt werden (können). SCRIPT verweist auf ein externes PHP-Skript, das abgearbeitet werden muß. Im Template steht ebenfalls ein Platzhalter SCRIPT, damit phpCMS weiß, wohin die Ausgabe muß.

Eine denkbare Anwendung wäre z.B. eine Druckversion einer Seite. Ich weiß, da gibt es CSS, aber bei komplizierten Templates hat man stundenlang zu kämpfen, bis man alles ausgeblendet hat. Das Ergebnis sieht dann auch meist in der Druckvorschau nicht so aus wie gewünscht.
Einfacher ginge das mit einem Templateswitcher-Plugin: In allen Templates baut man den Plugin-Aufruf ein und im normalen Template wird ein Link zur Druckversion gesetzt, z.B. mit dem Parameter print=1. Damit wird das Templateswitcher-Plugin aufgefordert, die aktuelle Inhaltsseite mit dem Drucktemplate zu laden.

Ergänzung: Sowas könnte natürlich auch fest eingebaut werden in mozilo - jedenfalls die Option mit print. Aber es gibt sicher auch andere denkbare Anwendungsgebiete, wo sich ein Plugin besser macht.

azett

#1
Zumindest das Stylesheet könntest du dynamisch laden: Tausch im Template den Platzhalter {LAYOUT_DIR} mit der Plugin-Variablen aus. Etwa so: <link rel="stylesheet" type="text/css" href="{CSSswitcher}/css/style.css" /> Das Plugin (hier bspw. "CSSswitcher") spuckt dann den Namen des Layoutverzeichnisses aus, dessen CSS geladen werden soll.
Hilft dir das bei deinem konkreten Anwendungsfall erstmal weiter?

hausl78

#2
Blöd, das hier hilft dir hier auch nicht weiter, weil jeder Aufruf hier immer die generelle CMS-Config. komplett überschreibt..

Seite im Flamingo-Kleid:
http://hausl.eu/web/index.php?cat=Plugi ... t=Flamingo

Seite im Bittesweet-Kleid:
http://hausl.eu/web/index.php?cat=Plugi ... ittersweet

Seite im mozilo-Kleid:
http://hausl.eu/web/index.php?cat=Plugi ... =moziloCMS

etc..

juergen

Samson

#3
Der Vorschlag mit dem Layout-Switcher wäre eine Alternative. Den hatte ich auch schon im Auge. Aber wie Du schon sagst: die Konfiguration darf nicht überschrieben werden. Ist ja nur ein temporärer Aufruf.

azett's Tip hatte ich mir auch schon kurz angeschaut (habe ja vorher hier im Forum gesucht). Aber bei der Variante hätte ich das schon beschriebene Problem, daß ich eine CSS für eine Druckausgabe machen müßte. Das geht dann aber auch ganz ohne Austausch von {LAYOUT_DIR}.

Beim Stöbern ist mir auch folgender Code in der index.php aufgefallen:
$TEMPLATE_FILE  = $LAYOUT_DIR."/template.html";

# wenn ein Plugin die gallerytemplate.html benutzten möchte und sie blank ist
if ($GALLERY_CONF->get("target") == "_blank" and getRequestParam("gal", false)) {
   $TEMPLATE_FILE  = $LAYOUT_DIR."/gallerytemplate.html";
}
Die Nutzung von gallerytemplate.html als Drucktemplate wäre noch eine Option. Aber wie komme ich mit einem Plugin da ran?

stefanbe

#4
eigendlich reicht in der template.html {meinPlugin|{CONTEND}} sonst nichts dann kanste mit dem Plugin alles machen

gruss stefanbe

Samson

#5
Na bitte - noch 'ne Variante. Ich fasse das allerdings eher als Scherz auf.  :shock:

stefanbe

#6
bin eigendlich nichz zum spassen aufgelegt

muste nur mal weiter denken

hast den content dardurch im plugin und kanst dann endscheiden wie du in verpacken wilst

gruss stefanbe