Haupttemplate nicht in DB speichern sondern in Datei

Bitte alle templatebezogenen Beiträge in diesem Forum veröffentlichen.
User avatar
Marceau
Posts: 201
Joined: Sun 23. Apr 2006, 01:52
Location: Leipzig, Germany
Contact:

Haupttemplate nicht in DB speichern sondern in Datei

Post by Marceau » Wed 13. May 2015, 11:04

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
There are 10 types of people in the world: Those who understand binary and those who don't

User avatar
Oliver Georgi
Site Admin
Posts: 9560
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Oliver Georgi » Wed 13. May 2015, 12:26

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:

Code: Select all

[HEADER]{HEADER}[/HEADER][HEADER_ELSE]<!--NO-HEADER-->[/HEADER_ELSE]…
Das ermöglicht eben auch vieles der Form:

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>
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

Old Boy
Posts: 1110
Joined: Fri 23. Nov 2012, 13:52

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Old Boy » Wed 13. May 2015, 15:04

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

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');

?>
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

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 */ -->
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!
Last edited by Old Boy on Sun 7. Jun 2015, 01:16, edited 7 times in total.

User avatar
Oliver Georgi
Site Admin
Posts: 9560
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Oliver Georgi » Wed 13. May 2015, 16:27

Nicht mit PHP Dateien an der Stelle arbeiten! Das ist falsch, da der Inhalt nur als Text übernommen wird.

Normalerweise reicht dann:

Code: Select all

$block['maintext'] = file_get_contents(PHPWCMS_TEMPLATE.'/inc_script/template/custom.tmpl');
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by update » Wed 13. May 2015, 16:49

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.)
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by update » Wed 13. May 2015, 17:37

Was mir gerade auffällt: Geht das denn dann auch mit mehreren Templates? Manchmal braucht man sowas ja ;)
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by update » Wed 13. May 2015, 18:02

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?
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by update » Wed 13. May 2015, 18:27

alles klar. :)
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
update
Moderator
Posts: 6394
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by update » Wed 13. May 2015, 18:47

update wrote:Was mir gerade auffällt: Geht das denn dann auch mit mehreren Templates? Manchmal braucht man sowas ja ;)
Diese Frage bleibt aber immer noch offen
It's mostly all about webdesign, logo design, new and old pages refresh, print BUT slowly switching to be supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.

User avatar
Oliver Georgi
Site Admin
Posts: 9560
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Oliver Georgi » Wed 13. May 2015, 20:02

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');
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

Old Boy
Posts: 1110
Joined: Fri 23. Nov 2012, 13:52

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Old Boy » Wed 13. May 2015, 23:12

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!

:D
Last edited by Old Boy on Wed 13. May 2015, 23:31, edited 1 time in total.

Old Boy
Posts: 1110
Joined: Fri 23. Nov 2012, 13:52

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Old Boy » Wed 13. May 2015, 23:16

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:

Code: Select all

$block['maintext'] = ...
Wie spreche ich denn dann die anderen Felder der Backenvorlagen an,
insbesondere den HEAD und den FEHLER Bereich :?:
Das geht doch garantiert auch :idea:

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" :lol:

Ja, ja, vom Template-Transporter will ich gar nicht mehr träumen ... das war mal, in einem anderen Jahrtausend !!!

Old Boy
Posts: 1110
Joined: Fri 23. Nov 2012, 13:52

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Old Boy » Thu 14. May 2015, 00:28

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" :D


Tante EDIT meint:
Es wäre natürlich erstklassig, wenn man all die verschiedenen Blockinhalte über eine einzige externe Datei "einschleusen" könnte!

User avatar
Oliver Georgi
Site Admin
Posts: 9560
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Oliver Georgi » Thu 14. May 2015, 06:19

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.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

Old Boy
Posts: 1110
Joined: Fri 23. Nov 2012, 13:52

Re: Haupttemplate nicht in DB speichern sondern in Datei

Post by Old Boy » Sun 7. Jun 2015, 00:26

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!?

Post Reply