MSXFAQ-Skript

Für die Umstellung der Webseite und spätere einfache Pflege hatte ich zuerst ein VBScript gebaut, mit welchem ich die Webseite quasi an meinen "Standard" anpasse. Allerdings habe ich nach einiger Zeit doch gelernt, dass die gleiche Aufgabe als VBA in Frontpage mit dem dort vorhandenen Objektmodell viel einfacher und kompatibler zu realisieren ist. Das Script macht dabei alle notwendigen Dinge, damit die Webseiten statisch passend sind. Es im wesentlichen das gleiche, was ansonsten ein Serverscript (PHP, ASP etc.) zur Laufzeit machen müsste.

ACHTUNG: Es handelt sich dabei nicht um eine fertige Software zum direkten Einsatz. Verstehen Sie das Skript eher als Muster und Vorlage für eigene Entwicklungen. Sie müssen die Dateien auf jeden Fall anpassen (Konstanten etc.)

Folgende Makros und Funktionen verwende ich zum automatischen Erstellen erforderlicher Dateien und Inhalte der MSXFAQ.

Wenn Sie selbst mit Frontpage und VBA arbeiten wollen, dann sollten Sie sich die entsprechende VBA-Hilfedateien herunter laden und installieren:

main.bas, Logbuch.bas

Globale Einstellungen und Routinen zur Protokollierung, Konvertierung und Prüfung. Fast alle folgenden Funktionen bauen auf diesen global bereit gestellten Komponenten auf.

pagework

Hauptskript, welches jede einzelne Seite durcharbeitet, formatiert, das Menü, die Breadcrumb und die Links für die Übersetzunge erstellt.

MakeRSS

Dieser Codeteil sorgt dafür. dass die ersten 10 Aufzählungen auf der Seite "Verzeichnis der Änderungen" extrahiert und als XML-Datei gespeichert werden. Diese wird als RSS-Feed (MSXFAQ mit RSS) bereit gestellt. Damit muss ich nur noch (manuell) die Datei "Verzeichnis der Änderungen" pflegen und das Script erstellt fehlerfrei die XML-Datei.

Sitemap

Natürlich gehört zu jeder Webseite auch eine schicke Sitemap. Doch auch diese will erstellt und aktuell gehalten werden. Auch diese Seite wird über eine eigene Routine anhand der aktuellen Navigation erstellt.

Damit das Skript eventuell bei ihnen funktioniert muss gelten:

Eine Beschreibung des angehenden Standards finden Sie auf http://www.sitemaps.org und http://www.sitemaps.org/protocol.php#informing.

MissinginNav

Dieses Skript mit Hilfe von Christoph Schneegans (MVP Frontpage) hat mir sehr deutlich gemacht, wie leistungsfähig VBA mit dem Frontpage Objektmodell ist. Für die gleiche Funktion hätte ich in VBScript sicher mehrere Tage und vielen Lines of Code benötigt. Dieses Skript war die Initialzündung, mit VBA statt VBScript zu arbeiten. Nebenbei nutzen ich es eben um "vergessene" Seiten in der Navigation aufzuspüren.

Ich habe dazu nämlich ALLE Seiten in die Navigation aufgenommen. Allerdings kann man Seiten, die in der Navigation sind, durchaus "deaktivieren", d.h. damit sie nicht bei der Erstellung der Menüs, Sitemap etc. berücksichtigt werden.

Gogglemap

Google ist ja quasi ein Standard für Suchmaschinen und die Macher von Google haben sich wieder was einfallen lassen. Viele Webseiten werden von Suchmaschinen nur teilweise oder unvollständig geladen, weil einige Links und Seiten nur per JavaScript und andere Verbindungen zu erreichen sind. Meine MSXFAQ habe ich absichtlich so gestaltet, dass alle Links statisch ohne Skripte funktionieren und daher von Google und anderen Suchmaschinen problemlos zu lesen sind. Allerdings ist auch das keine Garantie, dass es immer funktioniert.

Zudem ist es für einen Crawler eine größere Aufgabe, alle Seiten immer wieder abzurufen, um Veränderungen festzustellen. Daher hat Google einen neuen Weg definiert, wie Webmaster einer Webseite der Suchmaschine einfach geänderte Seiten anzeigen können.

Im Basisverzeichnis des Webs wird eine XML-Datei (bzw. mit GZip gepackt) abgelegt, in der eine Sitemap mit den Veränderungen enthalten ist. Google und andere Suchmaschinen können dann einfach diese Datei einlesen und damit ihren Crawler füttern.

Google XML-Datei

Die XML-Datei sollte etwa folgende Form haben

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
   <url>
      <loc>http://www.msxfaq.de/</loc>
      <lastmod>2005-01-01</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.8</priority>
   </url>
   <url>
      <loc>http://www.msxfaq.de/admin/default.htm</loc>
   </url>
 </urlset>

Das XML-Elemente "<url>" wird dabei je Seite immer wieder wiederholt. Das Element "<loc>" ist verpflichtend, während alle anderen Elemente optional sind.

Sitemap zu XML aufbereiten

Natürlich helfe ich gerne Google, auch wenn die MSXFAQ mittlerweile sehr gut zu finden ist. Es hat nur kurz gedauert, bis ich in Fronpage ein entsprechendes VBA-Makro gebaut habe, um diese Datei automatisch zu erzeugen. Mit Hilfe von Christoph Schneegans (www.schneegans.de) konnte ich meine erste Version mit String-Verarbeitung auf die Nutzung von MSXML2 umstellen und das Datum addieren.

Sie können das Skript problemlos bei sich einsetzen, solange Sie natürlich die Konstanten für ihre Web entsprechend anpassen. Das Script ist in 10 Minuten entstanden und funktioniert mit meiner Seite ganz gut.

Zudem ist das Skript ausbaufähig. Sicher könnte ich mit dem MSXML2.DOMDocument50" Object das XML-File viel schöner erstellen als durch einfache String-Funktionen. Und im nächsten Schritt möchte ich natürlich auf das Attribut "<lastmod>" mit den Seiteneigenschaften füllen.

Sitemap anmelden

Nachdem die Sitemap dann erstellt ist, müssen Sie diese Google auch bekannt geben. Leider hat sich Google nicht dazu durchgerungen, einen Standardnamen ähnlich der "robots.txt" zu nutzen, sondern jeder Webmaster kann den Dateinamen nach gut dünken aussuchen und meldet ihn bei Google an. Das ist in sofern schade, da andere Suchmaschinen diese Datei dann nicht automatisch verwenden können, sondern ebenfalls angemeldet werden müssten. Denkbar wäre auch eine Information in der robots.txt, die auf die Sitemap verweist.

Auf https://www.google.com/webmasters/sitemaps/stats?hl=en können Sie nach der Anmeldung mit einem Google Account die XML-Datei hinzu fügen und einige Stunden später auch die Verarbeitung kontrollieren. Allerdings ist dazu ein Google Account erforderlich.

Nach der Eintragung sollte einige Stunden später dann auch der Erfolg sichtbar sein. Leider sendet Google aktuell wohl keine Informationsnachricht an die mit dem Google Account verbundene Mailadresse über Erfolg oder Misserfolg des Imports.

Links zu Googlemaps

Links zur robots.txt

Kleine GUI

Damit ich die Skripte nun nicht mühselig aufrufen muss, habe ich mir einen Button in die Taskleiste gelegt, der ein kleines Form aufruft. Von hier habe ich dann direkten Zugang zu den Menüs. Während der Laufzeit wird der entsprechende Button dann "grau" und nach dem Durchlauf steht der Zeitpunkt des Abschluss drin.

Ich muss natürlich daran denken, eben diese  Script vor einer Veröffentlichung auch auszuführen. Daher haben ich auch die Funktion "Upload Web" eingebaut. Dazu muss ich nur noch das Kennwort eingeben.

Das Logging zeigt mir an, was die Skripte durchgeführt haben. Die gleiche Ausgabe landet natürlich noch mal in einer Protokolldatei. "PageWork" ist die umfangreichste Funktion, die in jeder Seite die BreadCrumb, das Menü etc. anpasst aber auch dafür sorgt, dass z.B. alle Bilder ein ALT-Tag haben, der Titel mit einem "MSXFAQ" beginnt und vieles mehr.

Download

Alle Skripte und Forms stehen hier in einer mehr oder minder aktuellen Version zum Download bereit. Viel Spaß beim darauf "lernen"

vba-msxfaq20061101.zip

Inhalt des ZIP-Archivs:

Folgende Code sind noch vorhanden, aber werden nicht mehr aktiv genutzt

Mögliche Erweiterungen

Natürlich ist zukünftig noch mehr möglich. Wobei sich das ganze dann immer weiter Richtung Content Management System entwickeln würde. Vielleicht wird irgendwann mal auch was daraus:

Aber aktuell bin ich mit der Art, wie ich die MSXFAQ mit FrontPage 2003 verwalten und aktualisieren kann schon ganz zufrieden.

Keywords:Backstage Frontpage VBA Script Skript