Seite 1 von 3

Frage zu Templates

Verfasst: 21 Sep 2004 14:39
von MathiasRR
Hallo,

ich möchte mir gerne die Tabelle (aktuell.htm) nachbauen, da ich ein eigenes Design verwende.
Das sollte mit dem Template "template_d.txt" ja normal auch kein großes Problem sein.
Wenn ich mir den Aufbau dieser Template-Datei (und auch der anderen) so anschaue, so finde ich dort zwar ein "%templatebegin%", aber kein "%templateend%" oder ähnlich.
Heißt dass, nur die eine Zeile wird berücksichtigt und ich muss dann allesn HTML-Code in eine Zeile schreiben ?
Das würde dann ja ne hammerlange Zeile mit Zellen und Design-Angaben.
Gibt es da keine andere Möglichkeit, oder habe ich noch was nicht so ganz verstanden ?
Vielleicht wäre es ansonsten mal zu überdenken, ob man nicht wirklich nen Tag "%templateend%" einfügt, so dass sich der Code auch über mehrere Zeilen erstrecken kann.

Viele Grüße
Mathias :wink:

Verfasst: 21 Sep 2004 15:30
von rolsch
Hallo,
da kann ich dir nur wärmstens diesen Link anbieten: http://www.wernerneudeck.de/wetter/faqt ... plate.html

- dort ist alles nötige incl. Beispiel erklärt :wink:

Code: Alles auswählen

3. Unterschiede innerhalb eines templates:
Beispiel:
Nehmen wir an, dass ein Teil eines Monatstemplates folgendermaßen lautet:

%templatebegin%%minvalday[2]% %minvaltime[2]%
---------------------------------------------------------------------------
gesamt: %minvalday[2]% %minvaltime[2]%

In Zeile 1 und Zeile 3 kommen dieselben Variablen vor, aber:
Hier liefert die 1. Zeile die Minimaltemperaturen. und Minimalzeiten für jeden Tag des Monats (wegen %templatebegin%), die 3. Zeile die Minimaltemperatur des gesamten Monats und die dazugehörige Zeit.

Stünde dasselbe dagegen in einem Jahrestemplates, so zeigt es sich folgendermaßen:
Hier liefert die 1. Zeile die Minimaltemperaturen. und Minimalzeiten für jeden Monat des Jahres, die 3. Zeile die Minimaltemperatur des gesamten Jahres und die dazugehörige Zeit.

Anders ausgedrückt:
Welchen Wert eine Variable ausgibt, hängt nicht nur von ihrem Namen ab, sondern

in welcher Art template sie verwendet wird (Monats- Jahrestemplate)
und ob sie auf die 

einleitende Variable %templatebegin% folgt
oder 

ob sie nur irgendwo im template steht  

Diese Zeile - beginnend mit %templatebegin% - ist eigentlich die wichtigste Zeile in einem template, denn dadurch werden fortlaufende Ausgaben ermöglicht. (fortlaufende Monats- oder Jahresdaten)
- dank nochmals an Werner Neudeck!

Verfasst: 21 Sep 2004 15:50
von weneu
Hallo Roland,
das hast du aber schön gesagt :)
Nebenbei:
Dieser Text war tatsächlich eine ganz schöne Latte an Arbeit.

Verfasst: 21 Sep 2004 17:35
von MathiasRR
Hallo Roland (und Werner),

jepp, diesen Text kenne ich und habe ich auch gelesen.

Eben weil ich diese Datei gelesen, sowie mir die original Templates angeschaut habe, stelle ich ja die Frage ob ich es korrekt verstanden habe dass man wirklich nur 1 Zeile nutzen kann.

Ich kann natürlich auch vor jede Zeile die "bearbeitet" werden soll %templatebegin% setzen, nach dem Muster:

Code: Alles auswählen

%templatebegin%<tr>
%templatebegin% <td>
%templatebegin%  <p>%curvaloutstemp%</p>
%templatebegin% </td<
%templatebegin% <td>
%templatebegin%  <p>%curvaloutshum%</p>
%templatebegin% </td<
%templatebegin%</tr>
Wollte halt nur nach einer Bestätigung fragen, ob ich es korrekt verstanden habe, bzw. ob man nicht mal drüber nachdenken sollte, das insofern zu ändern/ergänzen dass es auch ein %templateend% gibt.
"%templatebegin%" ist ja eigentlich keine Variable, sondern eher ein Tag in der Datei und wenn man ein Start- und ein Endtag hätte, würde das den Code schon verschlanken helfen.

Gruß
Mathias :wink:

Verfasst: 21 Sep 2004 18:45
von Werner
@Mathias,

Du bringst hier Template (allgemein) und die Variablen Templatebegin/End durcheinander!

Die Variable Templatebegin ist nur erforderlich wenn man Wiederholungen möchte
und macht nur Sinn bei Monat und Jahr. Bei Tagesdateien nur im Zusammenhang mit hour_only.

Was Du meinst, sind ganz normale benutzerdefinierte Html/WML-Seiten

Warum wurde nun für die custom.html eine Template-Datei verwendet und nicht eine normale benutzerdef. Datei?

Deshalb:
<PRE>%justify_on%%hour_only%<font size="1">
Aussen- Aussen Wind Sonnen Sonnen
Zeit tempera. Feuchte Luftdruck Taupunkt Windchill Regen Wind richtung Sonne Elevation Azimuth
----------------------------------------------------------------------------------------------------------------------------------------
%templatebegin%%ws_time% %curvaloutstemp%%curvaloutshum%%curval[33]%%curval[43]%%curval[44]%%curval[34]%%curval[35]%%wind_txt% %curval[42]% %ws_sunpos_el% %ws_sunpos_az%
...

Ausserdem solltest Du unbedingt beachten: es ist nur ein Zeileninhalt je Templatebegin erlaubt

Werner

Verfasst: 21 Sep 2004 18:57
von weneu
Hallo Mathias,
ergänzend zu dem von Werner Gesagten:
Die Zeile, die mit "templatebegin" anfängt, darf nur eine Zeile lang sein (klingt blöd) und deswegen braucht man auch kein templateend, denn wenn die Zeile zu Ende ist, ist auch die Template-Zeile zu Ende.
Außerdem werden in einem template (s.Programmhilfe) maximal 5 Templatezeilen ausgewertet.
Du wirst aber in der Regel nur eine Templatezeile brauchen, denn wenn du beispielsweise die Daten jedes Tages eines Monats ausgeben willst, dann reicht dafür ja eine einzige Templatezeile. (denn das, was in dieser Zeile steht, wird dann ja 30 oder 31 mal ausgegeben).

Verfasst: 21 Sep 2004 19:29
von MathiasRR
Hallo Werners :-)

Danke zunächst recht herzlich für eure Antworten !

@Werner K:
Ich möchte ja Wiederholungen haben, da ich die Tabelle (aktuell.htm) in meinem eigenen Design nachbilden möchte.
D.h. abhängig von der Tageszeit (ich rede erstmal nur vom aktuellen Tag), kommen dann ja x-Zeilen zusammen.
Das Original-Template "template_d.txt" liefert dazu schon eine recht gute Grundlage in der Datei "/text/dayX.txt".
Allerdings sollten die ausgegebenen Werte nicht einfach nur hintereinander in einer Zeile ausgegeben werden, sondern schon in einzelnen Zellen einer Tabelle. Hinzu kommt, dass ich auch die Schriftart und die Formatierungen weiterhin anhand meiner CSS-Datei vornehmen möchte. Um jede Vatiable kommt dann eine Zeile wie z.B.:

Code: Alles auswählen

<td><p class="irgendwas>%variable%</p></td>
Anders als über eine Template-Datei komme ich doch an die Werte in 5-Minutenintervallen (in denen lese ich meine Daten aus und so werden sie auch in der "aktuell.htm" dargestellt, nicht heran, oder ?
Mit einer normalen benutzerdefinierten Datei dürfte mir da nicht geholfen sein, oder ?
weneu hat geschrieben:Die Zeile, die mit "templatebegin" anfängt, darf nur eine Zeile lang sein (klingt blöd) und deswegen braucht man auch kein templateend, denn wenn die Zeile zu Ende ist, ist auch die Template-Zeile zu Ende.
Iss schon klar, das habe ich inzwischen auch gemerkt. Aber das ist dann halt der Kasus Knacktus wenn man umfangreichere Sachen in den Templates machen möchte (siehe oben).
Außerdem werden in einem template (s.Programmhilfe) maximal 5 Templatezeilen ausgewertet.
Das wäre dann ja das Aus für mein Vorhaben die aktuell.html selber nachzubilden, denn aufgrund der Formatierungen werde ich wohl mehrere Zeilen benötigen, oder ich müsste eine Zeile mit 967 Zeichen basteln.
Du wirst aber in der Regel nur eine Templatezeile brauchen, denn wenn du beispielsweise die Daten jedes Tages eines Monats ausgeben willst, dann reicht dafür ja eine einzige Templatezeile. (denn das, was in dieser Zeile steht, wird dann ja 30 oder 31 mal ausgegeben).
Schon klar, wenn aber eine Zeile z.B. 10 Werte enthält und diese in einzelne Zellen geschrieben werden sollen (immer mit einem <td> am Anfang der Zelle und einem </td> am Zellenende) und zu den Schriften noch die Font-Tags kommen, dann würde diese eine Zeile sehr sehr lang und fast unlesbar werden.

Daher würde es die Gestaltung umfangreicher Templates sehr vereinfachen, wenn es halt auch ein %templateend% geben würde. Es sei denn, ich habe die Sache immernoch nicht verstanden....

Viele Grüße
Mathias :wink:

Verfasst: 22 Sep 2004 06:43
von Werner
@Mathias,

was spricht gegen diese Verwendung:

%templatebegin%<td><p class="irgendwas1>%variable1%</p></td><td><p class="irgendwas2>%variable2%</p></td><td><p class="irgendwas3>%variable3%</p></td><td><p class="irgendwas4>%variable4%</p></td><td><p class="irgendwas5>%variable5%</p></td>

alles in einer Zeile. Ja ich weiß, Du willst nicht alles in einer Zeile stehen haben.
Du kannst die Zeile ja herkömmlich aufbauen und wenn fertig die Zeilenvorschübe danach entfernen.

Es gibt aber noch diese Möglichkeit: (Auszug Programmhilfe)
Es werden maximal fünf Template-Zeilen in einer Template-Datei ausgewertet – änderbar nur in der wswin.cfg auf max. zwanzig (20).

Noch vergessen - warum alles in einer Zeile:
Wenn nicht, müßte erst einmal die Datei durchsucht und ausgewertet werden, das würde das Ganze ungemein verlangsamen.

Werner

Verfasst: 22 Sep 2004 08:44
von weneu
Hallo Mathias,
ich habe unter den unten genannten Links ein (allerdings sehr einfaches) Beispiel eingestellt, wie eine template-Datei und die daraus erzeugte html-Datei aussehen können:
die Template-Datei:
http://www.wernerneudeck.de/forum/template_m.txt
die erzeugte html-Datei
http://www.wernerneudeck.de/forum/tabelle.html
Übrigens ein kleiner Trick für das Erstellen der template-Datei:
Wenn man die Datei template_m.txt umbenennt in template_m.htm, kann man sie mit einem HTML-Editor laden und hier etwas bequemer bearbeiten als im reinen Texteditor, bei dem dann doch gewisse html-Kenntnisse erforderlich sind. Anschließend nach der Bearbeitung natürlich wieder umbenennen, damit WSWIN etwas damit anfangen kann.
Auf diese Weise (Werner hat ja auch ein Beispiel geliefert) solltest du doch deine Seite entsprechend gestalten können.

Verfasst: 22 Sep 2004 18:06
von MathiasRR
Hallo Werner's...:-)
weneu hat geschrieben:ich habe unter den unten genannten Links ein (allerdings sehr einfaches) Beispiel eingestellt, wie eine template-Datei und die daraus erzeugte html-Datei aussehen können:
Ups, danke dir recht herzlich für deine Mühe !
So in etwa hatte ich mir das auch vorgestellt, allerdings haste da ja nen bissel "gemogelt":
Einmal stehen bei dir nicht so viele Werte in einer Zeile wie in der aktuell.htm, zum anderen haste die Font-Anweisungen <p class="irgendwas"></p> um die Variablen weggelassen.
Das verkürzt die Zeile natürlich enorm und hält sie auch noch halbwegs lesbar.
Übrigens ein kleiner Trick für das Erstellen der template-Datei:
Wenn man die Datei template_m.txt umbenennt in template_m.htm, kann man sie mit einem HTML-Editor laden und hier etwas bequemer bearbeiten als im reinen Texteditor, bei dem dann doch gewisse html-Kenntnisse erforderlich sind.
Auch hier danke für den Tipp, aber ich erstelle meine Seiten lieber "zu Fuß", dann weiss ich wenigstens dass mir kein HTML-Editor irgendwelchen Müll einbaut.
Außerdem hilft ein HTML-Editor bei Verwendung einer externen StyleSheet-Datei auch nur bedingt, da in der Vorschau die Formatanweisungen in der Regel nicht mit angezeigt werden.

Sicherlich kann ich damit auch eine entsprechende Seite erstellen.
Wer sich jedoch mal eine Zeile mit 10 oder mehr Werten mit Formatanweisungen für die Schrift und ggf. auch noch Klassen für die Tabellenzellen angeschaut hat, bei dem wird sicherlich schnell der Wunsch nach einer anderen Umsetzung aufkommen.

@Werner K.: Deine Anmerkung zur Verlangsamung der Abarbeitung bei Verwendung eines Start- und eines End-Tags für die Templatezeile(n) kann ich so nicht ganz nachvollziehen.
Ob ich nun alles in eine Zeile schreibe (da muss ja auch der Anfang und das Zeilenende gesucht werden), oder alles schön formatiert untereinander mit z.B. <templatebeginn> und am Ende <templateend>, sollte doch für die Abarbeitungsgeschwindigkeit in der Software nahezu identisch sein, oder ?

Viele Grüße
Mathias :wink:

Verfasst: 23 Sep 2004 07:01
von Werner
@Mathias,

es wäre ein gewaltiger Unterschied, wenn die Templatezeilen-Daten nicht in einer Zeile stehen würden.

Eine Zeile kann immer komplett eingelesen werden und sofort verarbeitet werden.

Bei mehreren Zeilen, muß erst die Datei untersucht werden, wo Templatebegin/end steht, wenn gefunden, alles in einen Buffer geschrieben, dann mit Anzahl der Wiederholungen die Variablen ersetzen und dann erst ausgeben.

Werner

Verfasst: 23 Sep 2004 17:54
von MathiasRR
Hi Werner,

danke dass du dich so tief mit der Materie beschäftigt hast und auch noch eine ausfühliche Erklärung postest.

Dann werde ich wohl zunächst einmal mit der 1-Zeilenversion leben müssen.
Sollte ja auch klappen, auch wenn die Zeile bir mir wohl ellenlang wird und eine evtl. Fehlersuche damit arg schwierig.

Vielleicht lässt sich ja nochmal drüber nachdenken, wenn die Rechner unter 1 GHz alle im deutschen Museum stehen.... :lol:

Liebe Grüße
Mathias :wink:

Verfasst: 23 Sep 2004 22:10
von Werner
@Mathias,

Du kannst aber trotzdem bis 20 eigene Templatezeilen nutzen,
wenn Dir die Gesamt-Einzeilige-Art nicht so gefällt.

Sollte vielleicht bei Dir in diesem Fall sogar ausreichen.


Werner

Verfasst: 25 Sep 2004 14:35
von MathiasRR
Hallo,

so, ich habe meine Tabellenseite (aktuell.htm) nun per Template selbt erstellt.
Die Tips mit dem Aufteilen der Zeile in mehrere Zeilen war zwar lieb gemeint, funktioniert aber leider nicht.

Schreibe ich:

Code: Alles auswählen

<tr>
%templatebegin%<td><p>%variable1%</p></tr><td><p>%variable2</p></td>
</tr>
schaut die Ausgabe so aus, dass der Inhalt der Variablen des kompletten Tages in eine Zeile hintereinander weggeschrieben werden. Klar auch, wird doch das <tr> und </tr> nicht in die Abarbeitung des Templates mit einbezogen.

Schreibe ich:

Code: Alles auswählen

%templatebegin%<tr>
%templatebegin%<td><p>%variable1%</p></tr><td><p>%variable2</p></td>
%templatebegin%</tr>
schaut die Ausgabe so aus, dass wenn z.B. 20 Datensätze vorliegen, zunächst 20 mal <tr>, dann 20 mal die eigentliche Templatezeile mit den Werten und dann 20mal </tr> ausgegeben wird.
Also:

Code: Alles auswählen

<tr>
<tr>
<tr>
<tr>
….
….
<td><p>Wert Variable1</p></td><td><p>Wert Variable2</p></td>
</tr>
</tr>
</tr>
….
….
Also leider nicht wirklich hilfreich das mit der Aufteilung. Trenne ich die ausgabe des Wertes der Variable1 und Variable2 in seperate Zeilen, dann wird halt erst 20mal die Zeile mit dem Wert der Variable1 und dann 20mal der Wert der Variable2 ausgegeben.
Vernünftiger HTML-Code lässt sich damit leider nicht erzeugen.

Es bleibt wirklich nur, alles in eine Zeile zu schreiben.
In meinem Fall besteht die eine Templatezeile so aus 682 Zeichen (!). :cry:

Viele Grüße
Mathias :wink:

P.S.: Wer mal schauen möchte: http://www.ruhrpottwetter.de/aktuell/tabelle.html

Verfasst: 25 Sep 2004 14:55
von Epfenbachwetter
MathiasRR hat geschrieben: P.S.: Wer mal schauen möchte: http://www.ruhrpottwetter.de/aktuell/tabelle.html
Mannmannmann, sieht aber echt klasse aus. Auch die Homepage als ganzes gefällt mir sehr gut. *lob*

Gruß,
Dirk