1.8 Mehrere Goobi viewer

Allgemein

Wenn zwei oder mehr Goobi viewer Instanzen aus einem Goobi workflow beliefert werden sollen, sind verschiedene Voraussetzungen zu erfüllen. An dieser Stelle ist die Konfiguration von gängigen Fragen für Goobi workflow und Goobi viewer beschrieben.

Erfassen und Auswerten der Instanz

Goobi workflow

In Goobi workflow muss erfasst werden in welcher Instanz das Werk angezeigt werden soll. Dafür muss im Regelsatz ein neues Metadatum ViewerInstance hinzugefügt werden. Dieses wird dann bei DocStructs, die das Metadatum CatalogIDDigital als Pflichtmetadatum konfiguriert hatten, ebenfalls hinzugefügt.

Die relevanten Teile aus dem Regelsatz sind:

<MetadataType>
    <Name>ViewerInstance</Name>
    <language name="de">Anzeige in</language>
    <language name="en">Show in</language>
</MetadataType>

<!-- [...] -->

<metadata num="1o" DefaultDisplay="true">ViewerInstance</metadata>

<!-- [...] -->

<NamespaceDefinition>
    <URI>https://intranda.com/MODS/</URI>
    <prefix>intranda</prefix>
</NamespaceDefinition>

<!-- [...] -->

<Metadata>
    <InternalName>ViewerInstance</InternalName>
    <WriteXPath>./mods:mods/mods:extension/#intranda:viewerinstance</WriteXPath>
</Metadata>

In der Konfigurationsdatei goobi_metadataDisplayRules.xml wird ein DropDown Menü mit den gewünschten Goobi viewer Instanzen vergeben:

<context projectName="*">
    <select1 ref="ViewerInstance">
        <item selected="true">
            <label>Viewer 1</label>
            <value>viewer1</value>
        </item>
        <item selected="false">
            <label>Viewer 2</label>
            <value>viewer2</value>
        </item>
        <item selected="false">
            <label>Viewer 3</label>
            <value>viewer3</value>
        </item>
        <item selected="false">
            <label>Viewer 1 and Viewer 2</label>
            <value>viewer1_and_viewer2</value>
        </item>
        <item selected="false">
            <label>Viewer 1 and Viewer 3</label>
            <value>viewer1_and_viewer3</value>
        </item>
        <item selected="false">
            <label>Viewer 2 and Viewer 3</label>
            <value>viewer2_and_viewer3</value>
        </item>
        <item selected="false">
            <label>All instances</label>
            <value>all</value>
        </item>
    </select1>
</context>

Goobi viewer Indexer

Das Metadatum ViewerInstance wird innerhalb des Solr Index in ein eigenständiges Feld geschrieben. Dafür muss in der Konfigurationsdatei config_indexer.xml folgende Felddefinition hinzugefügt werden:

<init>
    <namespaces>
        <list>
            <intranda>https://intranda.com/MODS/</intranda>
        </list>
    </namespaces>
<init>

<!-- [...] -->

<fields>
    <MD2_VIEWERINSTANCE>
        <list>
            <item>
                <xpath>mets:xmlData/mods:mods/mods:extension/intranda:viewerinstance</xpath>
                <addToDefault>false</addToDefault>
                <addUntokenizedVersion>false</addUntokenizedVersion>
                <addToChildren>true</addToChildren>
                <addToPages>true</addToPages>
            </item>
        </list>
    </MD2_VIEWERINSTANCE>
</fields>

Mit addToChildren=true und addToPages=true wird sichergestellt, dass nach Metadaten in Unterelementen und Seiten weiterhin gesucht werden kann, wenn die Instanz-Einschränkung gesetzt ist.

Goobi viewer Core

Pro Goobi viewer Instanz muss nun ein staticQuerySuffix definiert werden, der angibt welche Bedingung erfüllt sein muss damit Werke angezeigt werden:

<search>
    <staticQuerySuffix>+(MD2_VIEWERINSTANCE:viewer1 MD2_VIEWERINSTANCE:viewer1_and_viewer2 MD2_VIEWERINSTANCE:viewer1_and_viewer3 MD2_VIEWERINSTANCE:all)</staticQuerySuffix>
</search>

Das + steht für ein "UND". Die Klammern fassen alles darin stehende zusammen. Wenn innerhalb einer Query Bedingungen nicht explizit miteinander verknüpft sind, dann entspricht das automatisch einem "ODER".

Erfassen und Anzeigen individueller Sammlungen

Goobi workflow

Um pro Goobi viewer Instanz eigene Sammlungen zu erfassen müssen diese als Metadatum eingepflegt werden. Dafür wird im Regelsatz pro Instanz ein neues Metadatum hinzugefügt.

Die relevanten Teile für einen weiteren Sammlungsbaum aus dem Regelsatz sind:

<MetadataType>
    <Name>Viewer2Collection</Name>
    <language name="de">Viewer 2 Kollektion</language>
    <language name="en">Viewer 2 collection</language>
</MetadataType>

<!-- [...] -->

<metadata num="*">Viewer2Collection</metadata>

<!-- [...] -->

<Metadata>
    <InternalName>Viewer2Collection</InternalName>
    <WriteXPath>./mods:mods/#mods:classification[@authority='z']</WriteXPath>
</Metadata>

Bei Bedarf kann in der goobi_metadataDisplayRules.xml ein DropDown Menü mit vorgegebenen Sammlungsnamen und Werten definiert werden.

Goobi viewer Indexer

Zuerst müssen die exportierten Sammlungen innerhalb des Solr Index in ein eigenständiges Feld geschrieben werden. Dafür muss in der Konfigurationsdatei config_indexer.xml folgende Felddefinition hinzugefügt werden:

<fields>
    <MD2_DC_VIEWER2>
        <list>
            <item>
                <xpath>mets:xmlData/mods:mods/mods:classification[@authority='z']</xpath>
                <getparents>all</getparents>
                <onetoken>true</onetoken>
                <onefield>false</onefield>
                <urlEncoding>false</urlEncoding>
                <addToDefault>false</addToDefault>
                <splittingCharacter>#</splittingCharacter>
                <addUntokenizedVersion>false</addUntokenizedVersion>
                <lowercase>true</lowercase>
                <addToChildren>true</addToChildren>
                <addToPages>true</addToPages>
            </item>
        </list>
    </MD2_DC_VIEWER2>
</fields>

Goobi viewer Core

Dieses Feld muss nun anstelle des sonst üblichen Feldes DC in der lokalen config_viewer.xml konfiguriert werden. Zum Beispiel:

<!-- Show MD2_DC_VIEWER2 instead of DC as collection field at the metadata page -->
<metadata>
    <mainMetadataList>
        <template name="_DEFAULT">
            <metadata label="MD2_DC_VIEWER2" value="">
                <param type="translatedfield" key="MD2_DC_VIEWER2_UNTOKENIZED" />
            </metadata>
        </template>
    </mainMetadataList>
</metadata>

<!-- Use MD2_DC_VIEWER2 instead of DC for facetting and in advanced search -->
<search>
    <drillDown>
        <field initialElementNumber="3">YEAR</field>
        <hierarchicalField initialElementNumber="3">MD2_DC_VIEWER2</hierarchicalField>
        <field initialElementNumber="3">DOCSTRCT_TOP</field>
        <field initialElementNumber="3">DOCSTRCT_SUB</field>
        <field initialElementNumber="3" sortOrder="alphabetical_asc">MD_PLACEPUBLISH</field>
    </drillDown>
    
    <advanced>
        <searchFields>
            <field>DEFAULT</field>
            <field>FULLTEXT</field>
            <field>CMS_TEXT_ALL</field>
            <field>PI_TOPSTRUCT</field>
            <field hierarchical="true">MD2_DC_VIEWER2</field>
            <field>DOCSTRCT_TOP</field>
            <field>DOCSTRCT_SUB</field>
            <field>MD_TITLE</field>
            <field>MD_CREATOR</field>
            <field>MD_PUBLISHER</field>
            <field>MD_PLACEPUBLISH</field>
            <field>MD_YEARPUBLISH</field>
            <field untokenizeForPhraseSearch="true">MD_SHELFMARK</field>
        </searchFields>
    </advanced>
</search>

<!-- Additional configuration such as for the breadcrumbs for MD_DC_VIEWER2 -->
<collections>
    <collection field="MD2_DC_VIEWER2">
        <addHierarchyToBreadcrumbs>true</addHierarchyToBreadcrumbs>
    </collection>
    <redirectToWork>false</redirectToWork>
</collections>

Außerdem muss der Feldname natürlich in den messages Dateien entsprechend übersetzt werden. Zum Beispiel:

MD2_DC_VIEWER2=Sammlung

Goobi viewer Backend

Für die Anzeige einer Sammlungsseite mit eigenem Baum muss nun im Goobi viewer Backend eine neue CMS Seite basierend auf dem Template "Sammlungsanzeige" angelegt, konfigurier, als überschriebene statische Seite sowie im Menü verlinken werden:

Last updated