Haupttemplate nicht in DB speichern sondern in Datei
Haupttemplate nicht in DB speichern sondern in Datei
Hallo liebe Gemeinde.
Gibt es eigtl die Möglichkeit das Haupt-Template in eine HTML-Datei auszulagern und zu parsen, anstatt in der DB zu speichern, ohne alle Funktionsmöglichkeiten dadurch zu verlieren (Replacement-Tags etc) ?
Ich denke da besonders an die Möglichkeit der Versionierung, was auf dem "normalen" Weg ja nicht möglich ist
Für Tipps wäre ich dankbar
Viele Grüße aus LE
Gibt es eigtl die Möglichkeit das Haupt-Template in eine HTML-Datei auszulagern und zu parsen, anstatt in der DB zu speichern, ohne alle Funktionsmöglichkeiten dadurch zu verlieren (Replacement-Tags etc) ?
Ich denke da besonders an die Möglichkeit der Versionierung, was auf dem "normalen" Weg ja nicht möglich ist
Für Tipps wäre ich dankbar
Viele Grüße aus LE
There are 10 types of people in the world: Those who understand binary and those who don't
- Oliver Georgi
- Site Admin
- Posts: 9905
- Joined: Fri 3. Oct 2003, 22:22
- Contact:
Re: Haupttemplate nicht in DB speichern sondern in Datei
Bisher ist das auf einfachem Weg so nicht vorgesehen, aber mittels Replacement Tags lässt sich das über Frontend Render ganz gut abbilden. So löse ich vieles in Verbindung mit HTML Basiskonstrukt und diversen Ersetzern, häufig dann in Form von HTML-Kommentaren.
Dann ist es leichter, Template-Logik auszulagern, bzw. komplexer zu gestalten.
Nicht zu vergessen die Conditional Block-Elemente:
Das ermöglicht eben auch vieles der Form:
Dann ist es leichter, Template-Logik auszulagern, bzw. komplexer zu gestalten.
Nicht zu vergessen die Conditional Block-Elemente:
Code: Select all
[HEADER]{HEADER}[/HEADER][HEADER_ELSE]<!--NO-HEADER-->[/HEADER_ELSE]…
Code: Select all
<div class="row">
[LEFT]
<div class="col-md-4">
{LEFT}
</div>
[/LEFT]
<div class="[LEFT]col-md-8[/LEFT][LEFT_ELSE]col-md-12[/LEFT_ELSE]">
{CONTENT}
</div>
</div>
Re: Haupttemplate nicht in DB speichern sondern in Datei
Irgendwann hatte der "gute alte" Flip-Flop mal ein kleines Script bereitgestellt, welches ich für die Entwicklungszeit von Internetsites gerne benutze.
In den Ordner .../template/inc_sript/frontend_init kopiere ich folgende Datei inject-code-to-main.php
Zusätzlich erstelle ich im selben Ordner einen Unterordner mit Namen .../template/inc_sript/template , in den dann eine beliebig benannte tmpl-Datei gelegt wird (Name muss im Script natürlich angepasst sein!), die den HTML-Code enthält, der in den HAUPT-Bereich der Vorlage "gebeamt" werden soll.
In den HAUPT-Bereich der Vorlage trage ich noch das Replacement {INJECT_TO_MAIN} ein , damit der Inhalt der zugeordneten Datei gefunden wird.
Wenn ich mir mehrere Replacements {INJECT_TO_MAIN_VARIANTE_2} ... {INJECT_TO_MAIN_WAS_WEISS_ICH} ... und die zugehörenden Dateien anlege, kann ich mir mehrere Varianten parallelen jonglieren und bei Bedarf die Verschiedenen Replacements und damit Dateiinhalte nutzen!
So kann ich mit meinem FTP fähigen HTML-Editor flott arbeiten, bis alles steht! Da klappt nicht immer die Fensterbreite zusammen
CSS-Dateien und JS-Scripts spreche ich natürlich über
auch gleich in diesem externen Template an, sodass ich dazu nicht mehr ins Backend muss.
Ist alles fertig kopiere ich den Inhalt der genutzten Datei in den Hauptbereich des Backends und alles ist "übergabebereit"!
Ob das allerdings wirklich "wasserdicht" ist, weiss ich nicht, aber in den letzten Jahren hat es damit keine Probleme gegeben!
In den Ordner .../template/inc_sript/frontend_init kopiere ich folgende Datei inject-code-to-main.php
Code: Select all
<?php
/* ********************************************************************************************
Backend Template Replacer fuer den Bereich MAIN
Ersetzt das Haupt-Templates mit dem Inhalt der Datei:
template/inc_script/template/inject_to_main.tmpl
Wird im bereich HAUPT des Templates (LEDIGLICH) der Text
{INJECT_TO_MAIN}
eingetragen, sucht phpwcms die Datei
.../template/inc_script/template/inject_to_main.tmpl
und setzt den dort vorhandenen Quelltext in den HAUPT-Bereich des Templates ein.
So kann mit einem FTP-faehigen externen Editor diese Datei uebersichtlich bearbeitet werden.
Ist dann die Entwicklung des Haupt-Templates optimiert/abgeschlossen, wird der Datei-Inhalt
in das Template kopiert.
KH 07.01.2010
******************************************************************************************** */
// --------------------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
die("You Cannot Access This Script Directly, Have a Nice Day."); }
// --------------------------------------------------------------------------------------------
if ($block['maintext'] == '{INJECT_TO_MAIN}')
$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/inject_to_main.tmpl');
if ($block['maintext'] == '{INJECT_TO_MAIN_VARIANTE_2}')
$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/inject_to_main_variante_2.tmpl');
if ($block['maintext'] == '{INJECT_TO_MAIN_WAS-WEISS-ICH}')
$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/inject_to_main_was-weiss-ich.tmpl');
// Wenn der HAUPTBEREICH im Template absolut LEER ist, also kein RT verwendet wird!
if (!empty($block['maintext'])) { dumpVar($block['maintext']); }
$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/custom.tmpl');
?>
In den HAUPT-Bereich der Vorlage trage ich noch das Replacement {INJECT_TO_MAIN} ein , damit der Inhalt der zugeordneten Datei gefunden wird.
Wenn ich mir mehrere Replacements {INJECT_TO_MAIN_VARIANTE_2} ... {INJECT_TO_MAIN_WAS_WEISS_ICH} ... und die zugehörenden Dateien anlege, kann ich mir mehrere Varianten parallelen jonglieren und bei Bedarf die Verschiedenen Replacements und damit Dateiinhalte nutzen!
So kann ich mit meinem FTP fähigen HTML-Editor flott arbeiten, bis alles steht! Da klappt nicht immer die Fensterbreite zusammen
CSS-Dateien und JS-Scripts spreche ich natürlich über
Code: Select all
<!-- CSS: /* Hier muss der CSS-Dateiname oder die CSS-Anweisung rein */ -->
<!-- JS: /* Hier muss der JS-Dateiname oder die JS-Anweisung rein */ -->
Ist alles fertig kopiere ich den Inhalt der genutzten Datei in den Hauptbereich des Backends und alles ist "übergabebereit"!
Ob das allerdings wirklich "wasserdicht" ist, weiss ich nicht, aber in den letzten Jahren hat es damit keine Probleme gegeben!
Last edited by Old Boy on Sun 7. Jun 2015, 01:16, edited 7 times in total.
- Oliver Georgi
- Site Admin
- Posts: 9905
- Joined: Fri 3. Oct 2003, 22:22
- Contact:
Re: Haupttemplate nicht in DB speichern sondern in Datei
Nicht mit PHP Dateien an der Stelle arbeiten! Das ist falsch, da der Inhalt nur als Text übernommen wird.
Normalerweise reicht dann:
Normalerweise reicht dann:
Code: Select all
$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/custom.tmpl');
Re: Haupttemplate nicht in DB speichern sondern in Datei
Ich hatte das öfters auch auf die von Old Boy beschriebene Weise gemacht - die Änderung wird gleich mal getestet.
Jetzt ist das mal auf den Punkt gebracht!
(So wird da zwar immer noch kein Templatetransporter draus -der wäre schon ganz schön schrill- aber dennoch: Für die Entwicklung ist das prima.)
Jetzt ist das mal auf den Punkt gebracht!
(So wird da zwar immer noch kein Templatetransporter draus -der wäre schon ganz schön schrill- aber dennoch: Für die Entwicklung ist das prima.)
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Re: Haupttemplate nicht in DB speichern sondern in Datei
Was mir gerade auffällt: Geht das denn dann auch mit mehreren Templates? Manchmal braucht man sowas ja
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Re: Haupttemplate nicht in DB speichern sondern in Datei
Hmmm, ich glaube, das war doch noch nicht ausreichend auf den Punkt, jedenfalls nicht für Doofe... mit der neuen Methode will es nicht. Oder ich appliziere das nicht richtig. Vielleicht hat ja jemand einen Hinweis (den er/sie dann auch gleich hier abwirft)?
== Was wird wo wie eingetragen?
== Was wird wo wie eingetragen?
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Re: Haupttemplate nicht in DB speichern sondern in Datei
alles klar.
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Re: Haupttemplate nicht in DB speichern sondern in Datei
Diese Frage bleibt aber immer noch offenupdate wrote:Was mir gerade auffällt: Geht das denn dann auch mit mehreren Templates? Manchmal braucht man sowas ja
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
- Oliver Georgi
- Site Admin
- Posts: 9905
- Joined: Fri 3. Oct 2003, 22:22
- Contact:
Re: Haupttemplate nicht in DB speichern sondern in Datei
prüfe einfach, was bereits in der zu überschreibenden Variable enthalten ist, dann klärt sich Deine Frage von selbst.
Code: Select all
if(!empty($block['maintext'])) {
dumpVar($block['maintext']);
}
$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/custom.tmpl');
Re: Haupttemplate nicht in DB speichern sondern in Datei
Also, wenn ich das recht verstanden habe,
kann ich eigentlich alles so belassen, lediglich die Dateien bekommen die Endung ".tmpl" anstelle von ".php" ???
Das funktioniert - wie ich soeben getestet habe - natürlich prima!
Für verschiedene Einsatzfälle habe ich dann passende {ReplacemenTags} "kreiert" mit den entsprechenden zugehörigen "Dateien.tmpl"
Jetzt kann ich auch mit mehreren Vorlagen und unterschiedlichen Inhalten arbeiten,
ich brauche ja nur das passende {RT} zu setzen in das Hauptfeld der unterschiedlichen Vorlagen ...
die ziehen sich dann den erforderlichen Inhalt aus meiner zugehörigen .tmpl Datei!
kann ich eigentlich alles so belassen, lediglich die Dateien bekommen die Endung ".tmpl" anstelle von ".php" ???
Das funktioniert - wie ich soeben getestet habe - natürlich prima!
Für verschiedene Einsatzfälle habe ich dann passende {ReplacemenTags} "kreiert" mit den entsprechenden zugehörigen "Dateien.tmpl"
Jetzt kann ich auch mit mehreren Vorlagen und unterschiedlichen Inhalten arbeiten,
ich brauche ja nur das passende {RT} zu setzen in das Hauptfeld der unterschiedlichen Vorlagen ...
die ziehen sich dann den erforderlichen Inhalt aus meiner zugehörigen .tmpl Datei!
Last edited by Old Boy on Wed 13. May 2015, 23:31, edited 1 time in total.
Re: Haupttemplate nicht in DB speichern sondern in Datei
Da fällt mir doch gleich wieder ein, was ich eigentlich seit Jahren hatte fragen wollen:
Wenn ich Datei-Inhalte in den HAUPT Bereich einer Vorlage "einschleusen" kann mit dem Befehl:
Wie spreche ich denn dann die anderen Felder der Backenvorlagen an,
insbesondere den HEAD und den FEHLER Bereich
Das geht doch garantiert auch
Ach wie einfach wäre da die Zusammenstellung eines vernünftigen phpwcms-Layouts,
wenn man einen "richtig zackigen" HTML-Editor mit allen Snippets und "Pipapo" verwenden könnte!!!
phpwcms Template-Entwicklung "so fix wie Kuchenbacken mit Backmischungen"
Ja, ja, vom Template-Transporter will ich gar nicht mehr träumen ... das war mal, in einem anderen Jahrtausend !!!
Wenn ich Datei-Inhalte in den HAUPT Bereich einer Vorlage "einschleusen" kann mit dem Befehl:
Code: Select all
$block['maintext'] = ...
insbesondere den HEAD und den FEHLER Bereich
Das geht doch garantiert auch
Ach wie einfach wäre da die Zusammenstellung eines vernünftigen phpwcms-Layouts,
wenn man einen "richtig zackigen" HTML-Editor mit allen Snippets und "Pipapo" verwenden könnte!!!
phpwcms Template-Entwicklung "so fix wie Kuchenbacken mit Backmischungen"
Ja, ja, vom Template-Transporter will ich gar nicht mehr träumen ... das war mal, in einem anderen Jahrtausend !!!
Re: Haupttemplate nicht in DB speichern sondern in Datei
OK... nach Jahren endlich wieder gefunden: http://www.phpwcms-howto.de/wiki/doku.p ... n/vorlagen
Damit kann man ja mal probieren...
htmlhead
maintext
errortext
Na wunderbar, damit funktioniert's jetzt schonmal "super"
Tante EDIT meint:
Es wäre natürlich erstklassig, wenn man all die verschiedenen Blockinhalte über eine einzige externe Datei "einschleusen" könnte!
Damit kann man ja mal probieren...
htmlhead
maintext
errortext
Na wunderbar, damit funktioniert's jetzt schonmal "super"
Tante EDIT meint:
Es wäre natürlich erstklassig, wenn man all die verschiedenen Blockinhalte über eine einzige externe Datei "einschleusen" könnte!
- Oliver Georgi
- Site Admin
- Posts: 9905
- Joined: Fri 3. Oct 2003, 22:22
- Contact:
Re: Haupttemplate nicht in DB speichern sondern in Datei
Nur maintext hat am Ende Relevanz. Die anderen Felder aggregieren nur und brauchen nicht gefüllt zu werden — abgesehen von errortext, das einen Fallback darstellt.
Re: Haupttemplate nicht in DB speichern sondern in Datei
Ich hab' hier noch mal nachgearbeitet: http://forum.phpwcms.org/viewtopic.php?p=144706#p144706
Damit sollte "updates" Frage nach mehreren Varianten eigentlich beantwortet sein ... hoffe ich!?
Damit sollte "updates" Frage nach mehreren Varianten eigentlich beantwortet sein ... hoffe ich!?