Drucken
Zugriffe: 16128

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

Wer nach einem (Open Source) Tool sucht, mit dem man "schnell einmal" einen kleinen Webauftritt zusammen basteln kann, der ist mit einem HTML-Präprozessor wie GTML gut bedient.

Warum kein CMS ?

Für eine Website, die nur aus wenigen Seiten besteht, benötigt man kein Content Management System (CMS), sondern man ist in der Regel schneller, wenn man statische HTML-Seiten erstellt.

Als WYSIWIG Editor kann ich nvu nur wärmstens empfehlen.

Lästig ist hierbei allerdings die Tatsache, dass man Kopf- und Fusszeilen "n-mal" kopieren muss (pro Seite) - und wenn sich dann etwas ändert - die ganze Prozedur zu wiederholen ist.

Das gleiche gilt auch für das Menu.

In Zeiten, wo jeder Webauftritt gleich mit dem neuesten CMS realsiert wird, vergisst man leicht, dass es auch etwas einfacher geht.
Ein HTML-Präprozessor ist zwar nicht besonders "hip", aber für so eine Aufgabe sehr gut geeignet.

Was ist eigentlich ein Präprozessor ?

Jeder C-Programmierer kennt den Präprozessor. Bevor der Source-Code vom Compiler verarbeitet wird, startet der Präprozessor und durchsucht den Code nach Zeilen, die mit "#" beginnen, z.B. #include "stderr.h" und ersetzt dieses Präprozessor-Kommando mit dem Inhalt einer Datei "stderr.h".
Es gibt auch andere Kommandos, die den Programmfluss steuern: "#ifdef ... #else".

Zurück zu gtml: Das Prinzip des Präprozessors wird einfach auf HTML-Seiten angewendet: dort werden Variablen definiert und abgefragt, der Programmfluss gesteuert und Ersetzungen vorgenommen.

Konkret sieht das so aus: 

Zuerst wird ein Verzeichnis "gtml" angelegt. Darin enthalten ist die zentrale Konfigurationsdatei "gtml.conf". Dort werden die Sourcefiles und die Menustruktur definiert (die folgenden Konfigurationsdateien habe ich zur Erstellung meiner Website kraus-consult.com verwendet):

gtml.conf 

// Project file to construct kraus-consult.com

define OPEN_DELIMITER  [[
define CLOSE_DELIMITER ]]

// Basic shortcuts
definechar _www_        http://kraus-consult.com/

define __VERSION__ 3.5.4

// Process control
define OUTPUT_DIR ../html

mtimestamp Letzte Änderung: $dd.$MM.$yyyy um $hh:$mm

definechar ü                                            ü
definechar Ü                                            Ü
definechar ä                                            ä
definechar Ä                                            Ä
definechar ö                                            ö
definechar Ö                                            Ö

// Source files.
filename MAIN            index.gtm
filename ANGEBOT     angebot.gtm
filename ERFAHRUNG erfahrung.gtm
filename REF              referenzen.gtm
filename LINKS            links.gtm
filename IMPRESSUM  impressum.gtm
//filename SITEMAP       sitemap.gtm
filename STYLE           kraus-consult.css

// Documentation hierarchy
[[MAIN]]          1 Home
[[ANGEBOT]]   1 Angebot
[[ERFAHRUNG]] 1 Erfahrung
[[REF]]            1 Referenzen
[[LINKS]]         1 Links
[[IMPRESSUM]] 1 Impressum
//[[SITEMAP]]

Ausserdem sind noch die "header.txt und "footer.txt" Dateien wichtig. In der "header.txt" werden z.B. die Menus dargestellt und ein Hyperlink auf die nächste Seite erzeugt:

header.txt 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html>
  <head>
   <title>[[TITLE]]</title>
   <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
   <meta name="Generator" content="GTML [[__VERSION__]]">
   <meta name="robots" content="INDEX,FOLLOW">
   <link rel="stylesheet" href="/[[STYLE]]" type="text/css" media="screen" />
#ifndef TEXT_ONLY
   <link rel="Begin" type="text/html" href="/_www_">
#ifdef LINK_NEXT
   <link rel="Next" type="text/html" href="/[[LINK_NEXT]]">
#endif
#ifdef LINK_PREV
   <link rel="Prev" href="/[[LINK_PREV]]">
#endif
#endif
  </head>

  <body>
      <div class="header">
        <div class="logo1">
           <a href="/index.html"><img src="/media/kc_banner1.gif" border="0" alt="logo"></a>
        </div>
      </div>

      <div class="treeCollapsable">
                <a href="/[[ANGEBOT]]" title="[[MENU]]"
#if [[MENU]] == Angebot
                        class="itemSelected1"
#else
                        class="item1"
#endif
                        style="display:block">Angebot</a>
                <a href="/[[ERFAHRUNG]]" title="Erfahrungen und Kenntnisse"
#if [[MENU]] == Erfahrung
                        class="itemSelected1"
#else
                        class="item1"
#endif
...

index.gtm 

Alle restlichen Dateien haben die Endung ".gtm" und werden nach dem Programmdurchlauf in ".html" Dateien umgewandelt.

Als Beispiel hier die Startseite "index.gtm":

#define MENU Home
#define TITLE kraus-consult.com - Home
#include "header.txt"

    <h2 class="bighead">Tätigkeitsschwerpunkte:</h2>
    <p class="point">Consulting</p>
    <p class="indent"> Informationssysteme (Business Intelligence, DataWarehouse, Mobile Reporting)</p>
    <p class="indent"> Einsatz von Open Source Software</p>
    <p class="indent"> Coaching / Seminare für "Personal Knowledge Management"</p>
    <p class="point">Programmierung</p>
    <p class="indent"> XSLT</p>
    ...
#include "footer.txt"

Programmaufruf 

Zum Starten des Präprozessors einfach in das "gtml" Verzeichnis wechseln und "gtml" eingeben. 

Installation 

Unter Debian-Linux wird gtml einfach mit dem Kommando "apt-get install gtml" installiert.

Weitere Features

sitemap.gtm

Falls eine Sitemap "sitemap.gtm" gewünscht wird, kann diese automatisch generiert werden:

#define MENU Sitemap
#define TITLE kraus-consult.com - Sitemap
#include "header.txt"

#toc

#include "footer.txt"

Sollte es Probleme bereiten, die ".gtm" Dateien im Web-Editor zu bearbeiten, weil die Präprozessor Kommandos als fehlerhafte HTML-Befehle erkannt werden, dann kann man z.B. statt #include "header.txt"  auch  <!-- ###include "header.txt"  --> schreiben.

gtml kann noch viel mehr, so ist es auch möglich, Perl Code direkt in die HTML-Datei zu schreiben.

Ich hoffe, ich konnte einen kurzen Überblick über die Möglichkeiten von GTML geben. Eine ausführliche Dokumentation plus Erklärung der einzelnen Befehle hat der Autor Bruno Beaufils auf der GTML Homepage, die übrigens auch mit GTML erstellt wurde, hinterlegt.

Ein weiteres Beispiel für ein sehr leistungsfähiges HTML-Template-System ist Clearsilver