Hinweis: Für die dynamisch erweiterbare Schlagwortliste wird ZMS ab Version 2.0beta benötigt.

Lösungsansatz: Grundlegender Ansatz ist es, für Select/Multiselect-Attribute anstatt fixer (monolingualer) Schlüssel-Listen Spezielle Objekte als Quellen für die Schlüssel zu verwenden.

Beispiel: Manuell erweiterbare Schlagwortliste für ZMS-Standardobjekte

Zunächst muss im Konfigurations-Menü ein Spezielles Objekt des Typs Daten-Tabelle angelegt werden, dass die Schlagworte erfassen soll. Dieses Objekt muss eine Eigenschaft "records" besitzen, einen Schlüssel ("key"), sowie den dazugehörigen Wert (z.B. "value") oder bei einer multilingualen Lösung Werte für die verschiedenen Sprachen (z.B. "value_ger" und "value_eng").

Beispielsweise:

Spezielles Object 'Schlagwortliste'


Dieses Objekt wird nun innerhalb der ZMS-Baumstruktur in ein Dokument integriert, dass auf den Typ "Resource" gesetzt wird, damit es nur über das Redaktionsinterface zugänglich ist.

Unter Metadaten wird anschließend im Konfigarationmenü ein interner Link auf die Datentabelle gesetzt, die die manuell erweiterbare Schlagwortliste enthält. Der Typ muss auf "multiselect" oder "select" gesetzt werden.

Beispielsweise:

Metadaten


Alle Schlagworte, die in die Daten-Tabelle "Schlagwortliste" eingetragen werden, erscheinen jetzt in den Eigenschaften der selektierten Objekte. Im Beispiel bei allen Dokumenten, Rubriken und auf der WWW-Seite.

Um die dynamische Schlagwortliste in einem Speziellen Objekt zu verwenden, kann auf die entsprechenden Metadaten und die Daten-Tabelle verwiesen werden:

Integration der dynamischen Schlagwortliste in ein Spezielles Objekt

Alle im Konfigurationsmenü erstellten Metadaten erscheinen automatisch im Head jeder HTML-Seite, der Sie zugewiesen sind. Möchte man von einer anderen Stelle auf die Werte in der Datentabelle zugreifen, so ist ist dies ebenfalls möglich. In folgendem Beispiel wird mit Hilfe der Funktion dict_list aus dem Metaattribut "DC.Subject" eine Schlagwortlisteliste erzeugt, die den Meta-Namen "keyword" erhält, da nicht alle Suchmaschinen die DC-Konventionen beherrschen.

Soll diese Schlagwortliste in allen Dokumenten enthalten sein, so ist folgender Code in ein Template "headMeta_Spec" einzufügen, dass im Template-Verzeichnis der ZMS-Instanz plaziert wird.

<dtml-let metadictAttr="getMetadictAttr('attr_dc_subject')"
          metadictValue="getObjProperty('attr_dc_subject',REQUEST)"
          ob="getLinkObj(metadictAttr['keys'][0],REQUEST)">
          
  <dtml-call "REQUEST.set('dict',[])">
  <dtml-in "ob.getObjProperty('records',REQUEST)">
    <dtml-let x=sequence-item>
      <dtml-call 
       "dict.extend([x['key'],x.get('value',x.get('value_%s'%lang))])">
    </dtml-let>
  </dtml-in>
  <dtml-call "REQUEST.set('dict',dict_list(dict))">
  <dtml-try>
    <meta name="keywords" content="
    <dtml-in metadictValue>
      <dtml-var "dict.get(_['sequence-item'],'')" html_quote>
      <dtml-unless sequence-end>; </dtml-unless>
    </dtml-in>" />
  <dtml-except>
    <meta name="keywords" content="<dtml-var "dict.get(metadictValue,'')" 
     html_quote>" />
  </dtml-try>
</dtml-let>

API-Referenz

Erstellt von: Silke Ebel , erstellt am:  27.06.2008 , zuletzt geändert: 27.06.2008