FrontPage und Sharepoint Designer Struktur

Archiv:
Diese Seite wird nicht mehr weiter gepflegt, da beim Zugriff über das Objektmodell von Sharepoint Designer bzw. Frontpage kein direkter Dateizugriff mehr erforderlich ist.

Eine wichtige Funktion bei allen Skripten ist die Nutzung der Frontpage Navigationsstruktur. In Frontpage kann sehr einfach die logische Abfolge der Seiten definiert werden. Diese Informationen nutzt normalerweise die Frontpage Navigationskomponente zur Erstellung der Navigation.

Da mit das nicht reicht, musste ich das Format der Datei "structure.cnf" analysieren und dann mit einem VBScript verarbeiten. Vermutlich wäre das auch mit VBA in Frontpage gegangen, aber mir war ein VBScript dann doch flexibler. Außerdem kenne ich mich damit erst mal besser aus. Auch andere Autoren wie http://www.arsharpe.co.uk/personal/Software/FrontPage/navFileFmt.htm haben ähnliches gemacht.

Die Datei liegt immer im Verzeichnis  "\_vti_pvt\structure.cnf" und ist UTF-8 codiert.

Zukünftig könnte die ASP.NET-Sitemaps eine neue Option darstelle. Details finden Sie dazu unter "ASP.NET  ASP.NET-Siteübersichten" http://msdn2.microsoft.com/de-de/library/yy2ykkab(VS.80).aspx

Dateiaufbau

Früher habe ich die Datei per VBScript ausgelesen und die HTML-Dateien gepatched. Das mache ich mittlerweile nicht mehr, da ich entsprechende VBA-Makros habe.

Die Datei hat einen einfachen Aufbau:

  • Zeile 1: Enthält wohl die Versionsnummer
  • Zeile 2: Nummer der nächsten verfügbaren Seitennummer
  • Zeile 3 und folgende: Definition einer Seite bestehend aus sieben Feldern

Die sieben Felder haben wiederum eine eigene Bedeutung:

  1. Nummer der Seite
    Jede Seite hat eine eigene Nummer und beginnt bei 1000
  2. Relative URL
    Der Pfad zu der Datei relativ vom Web
  3. Unbekannt
    Ich weiß noch nicht, wozu dieses Feld dient
  4. Titel
    Dies ist nicht zwingend der Titelseite im HTML. sondern in der Navigation. Details siehe weiter unten
  5. Parentpage
    Dies ist die Nummer der übergeordneten Seite Ist dies eine "0", dann ist es eine der höchsten Seiten.
  6. vermutlich Checksumme oder Version/Zeittempel
    Der genaue Aufbau ist mir nicht bekannt
  7. Folgezeilen
    Zu einer Seite kann es weitere Definitionen geben, z.B. ob die Seite in der Navigation "unsichtbar" ist oder ob es eine globale Startseite ist. In diesem Feld ist definiert, wie viele Folgezeilen noch zu dieser Seite gehören. mögliche Inhalte sind z.B. "vti_nonnavpage:BW|false" oder "vti_globalpage:BW|false"

Das wird sehr einfach sichtbar, wenn man eine Musternavigation betrachtet

3.0.0.507
1016
1000,default.htm,0,Homepage,0,1088363818,1
vti_globalpage:BW|true
1001,bereich1/default.htm,0,B1D,1000,1088363818,0
1002,bereich2/default.htm,0,B2D,1000,1090698284,0
1003,bereich3/default.htm,0,B3D,1000,1088363770,0
1009,bereich1/b1s2.htm,0,B1S2,1001,1090697626,0
1014,bereich1/b1s3.htm,0,B1S3,1001,1090697626,0
1008,bereich1/b1s1.htm,0,B1S1,1001,1090697675,0
1013,bereich2/b2s1.htm,0,B2S1,1002,1090697626,0
1015,bereich2/b2s2.htm,0,B2S2c,1002,1090698284,0
1010,bereich3/b3s1.htm,0,B3S1,1003,1090697626,0
1011,bereich3/b3s2.htm,0,B3S2,1003,1090697626,0

Die Reihenfolge der Seiten in der Datei ist vorgegeben:

  • Erst alle Seiten der 1. Ebene
  • dann alle Seiten der 2. Ebene
  • dann alle Seiten der 3. Ebene etc.

Dabei ist die physikalische Struktur der Dateien irrelevant.

Titelbesonderheiten

Wenn Sie eine HTML-Seite in Frontpage erstellen, geben Sie meist auch den Titel mit ein. Wird diese Seite nun in die Navigation addiert, dann übernimmt Frontpage den Titel der Seite in die Navigation. Sie können nun nachträglich sowohl in der Seite als auch in der Navigation den Titel ändern. Frontpage versucht unter bestimmten umständen, die beiden Einträge synchron halten.

  • Bei der Aufnahme einer neuen Seite wird der Titel zur Beschreibung der Navigation
  • Rename in FP des Titel in der HTML-Seite ändert NICHT die Navigationsbeschreibung
  • Rename in FP in der Navigation ändert den Titel in der HTML-Seite, aber nur, wenn diese vorher identisch waren, ansonsten nicht. ändern Sie daher am besten nicht in der Navigation den Text, der später im Menü auftaucht. Frontpage ändert auch den Titel damit
  • Rename direkt in der Datei Structure.cnf ändert aber NICHT den Titel der Seite
  • Rebuild Links ändert ebenfalls keine Einträge
  • Sonderzeichen (z.B. Komma) werden mit einem "\" escaped

Daraus habe ich für mich gefolgert

  • Ich ändere die Beschreibung in der Frontpage Navigationsansicht
    Ich weiß aber, dass sich damit auch der Seitentitel ändert
  • Ich ändere den Seitentitel erst dann manuell oder noch besser mit einem Skript (z.B. indem ich den Text aus dem <h1>-Tag übernehme.
  • Manuelle Änderungen an der Datei sind erlaubt ebenfalls erlaubt. So könnte man auch noch das manuelle ändern der Navigationsbezeichnung z.B. aus dem Titel extrahieren.

ACHTUNG: Diese Beschreibung ist noch vorhanden, aber ist nicht erforderlich, wenn ich die Verarbeitung in Frontpage mit VBA durchführe. Ich benutze die hier genannten Informationen nicht mehr.

API für Sitemaps

Eine direkter Zugriff auf die Textdatei ist natürlich nicht die ideale Variante. Die Struktur einer Webseite wird sowohl in Frontpage als auch im Sharepoint Designer kann man in VBA-Makros sehr bequem auf die die Navigationsstruktur zugreifen. Ich nutze selbst diese Schnittstelle sowohl in MSXFAQ-Skripte um meine Webseite zu pflegen.

Mittlerweile gibt es auf ASP.NET Sitemap auch ein VBA-Makro, welches die Sitemap von Frontpage/Sharepoint Designer in einer ASPX-kompatible Struktur überführt.