In Zusammenarbeit mit der Uni Bern wurde ab 2015/16 die Link-Persistenz revidiert, u.a. weil die alte Korrektur-Funktion bei sehr großen (Multi-) Sites zu viel Performance gekostet hat. Das Link-Management basiert nun u.a. auf dem ZCatalog-basierten Objekt-Index "ZMSIndexZCatalog". Der Index arbeitet mit dem ZODB-Datenbank-IDs und kann diese performant in Pfade auflösen. Zu diesem Zweck erhalten die inline-Links ein zusätzliches HTML-Attribut "data-id", was beim Rendern validiert wird.
Dieser HTML-konforme Ansatz ist eleganter als die damit obsolet gewordere Implantation von DTML-Code. Generell geschieht nun die Verlinkung mit aktivem Index prinzipiell auf Basis der ZODB-Datenbank-IDs anstatt der (labilen) Objekt-Pfade.

INSTALLATION:

  1. Importieren Sie als spezielles Content-Objekt die Standard-Lib com.zms.index 1.2.0
  2. Indizieren und aktivieren Sie den Index als Eigenschaft des ZMS-Objektes (root-Node)
  3. Voraussetzung für die Wirksamkeit der Index-Mimik ist, dass Sie die aktuellen Content-Objekt-Definitionen (com.zms.foundation) einsetzen.


Um eine bestehende ZMS-Instanz um den neuen ZMS-Index zu erweitern, wird das spezielle Content-Objekt "com.zms.index 1.2.0" in das Admin-Menu "Content-Objekte" importiert.

 

Dann steht der ZMSIndex auf dem Root-Objekt ("ZMS-Knoten") als neue Eigenschaft zur Verfügung: zunächst wird das ZMSIndex-Element initialisiert bzw. eingefügt ...

 

... anschliessend wird die REINDEX-Funktion ausgeführt, damit alle ZMS-Objekte erstmalig in den Index aufgenommen werden.

 

Wenn der Index komplett ist, kann die Funktion aktivert werden

 

Wenn der ZMSIndex einmal aktiviert wurde, wird er automatisch bei jeder Dokument-Änderung im Hintergrund aktualisiert. In der Regel ist also explizite Reindizierung nicht mehr nötig. Sollte der Inhalt jedoch einmal massiv reorganisiert werden mit Änderung zahlreicher Dokument-Pfade, z.B. im Rahmen eines Website-Relaunches, dann ist die Reindizierung durchaus empfehlenswert. Achtung: bei sehr großen Dokument-Mengen bzw. Multisites kann die Reindizierung sehr lange dauern und erhebliche System-Ressourcen beanspruchen. Der ZMS-Index erstreckt sich grundsätzlich über die gesamte Hierarchie einer ZMS-Multisite. Wenn also in die Multisite ein neuer ZMS-Client eingesetzt wird, so ist dieser nach Aktivierung der ZMS-Index-Funktion stets automatisch eingebunden. Eine explizite Reindizierung ist nur dann erforderlich, wenn dieser Client nicht neu aufgebaut wird, sondern bereits einen Content-Baum mitbringt bzw. von einem anderen System importiert wird.


Bei der Bedienung ändert sich nichts: man wählt einfach das Linkziel aus.

 

Bei allen Links, ob sich um Inline-Links innerhalb von Textabschnitten oder Linkobjekte handelt, nicht nur der Link-Pfad sondern auch stets die Zope-Objekt-ID des Linkziels mitgespeichert. Anhand dieser eindeutigen ID kann ZMS den Zielpfad stets automatisch korrekt aufgelösen, selbst wenn der Strukturbaum der Inhalte komplett reorganisiert wurde.