TYPO3 Plugin:

find

Find

Diese TYPO3-Erweiterung soll die Abfrage und Anzeige beliebiger Solr-Indizes ermöglichen.

Es bietet die Möglichkeit, viele Aspekte der Abfrage zu konfigurieren ? z.B. Abfragefelder, Facetten, Filtern durch TypoScript ? und Einrichten der Anzeige durch Fluid-Vorlagen. Partiale für Standardanzeigefunktionen sowie eine Reihe von View Helpern, die bei der Erstellung dieser Vorlagen helfen, sind in der Erweiterung enthalten.

Ziele

Die Erweiterungsziele sind die Bereitstellung:

  • zugriff auf beliebige Solr-Indizes in TYPO3
  • minimale Konfiguration für eine Grundanzeige
  • umfangreiche Template-Fähigkeiten zur Erstellung komplexer Displays

Einfaches Beispiel

Für das einfachste Beispiel, das du brauchst:

. das find Plug-in zu einer TYPO3-Seite hinzufügen

. füge das find Plug-in?s Template in deine Website / Seite?s Template ein

. konfigurieren Sie Ihre Indexinformationen in der TypoScript-Vorlage für diese Seite. Mindestens sollten Sie die Adresse Ihres Solr-Index und die Felder, die in der Ergebnisliste angezeigt werden sollen, festlegen::

plugin.tx_find.settings {
    verbindung {
        host = solr.local
        anschluss = 8080
        pfad = /solr/myIndex
    }
    standardFelder {
        title = title
        ausschnitt = Herausgeber
    }
}

Mit dieser Einrichtung stellt find Ihnen eine Suchmaske für Ihr index? Standard-Suchfeld zur Verfügung und zeigt eine Ergebnisliste mit dem Feld "Titel" des Dokuments als Überschrift des Artikels und dem Feld "Publisher" als Ausschnitt darunter an. Jedes Ergebnis kann angeklickt werden, um die Detailansicht für dieses Dokument anzuzeigen, die eine Definitionsliste der Felder im Solr-Dokument enthält.

. Sie können dann Facetten für Textfelder und numerische Bereichsauswahl hinzufügen, z.B.::

plugin.tx_find.settings {
    facetten {
        10 {
            id = Format
            feld = Format
        }
        20 {
            id = Jahr
            typ = Histogramm
            feld = publishDateSort veröffentlichen
        }
    }
}

. zusätzliche Suchfelder für eine erweiterte Suchoption können ebenfalls hinzugefügt werden::

plugin.tx_find.settings {
    queryFields {
        10 {
            id = Titel
            typ = Text
            erweitert = 1
        }
    }
}

Es gibt noch viele weitere TypoScript-Konfigurationsoptionen. Bitte lesen Sie den Rest dieses Dokuments und die Beispielkonfigurationen im Ordner Projects, um mehr darüber zu erfahren.

Beispielprojekte

Einige Beispielprojekte sind mit der Erweiterung im Ordner Projects enthalten. Obwohl Sie nicht über die Solr-Indizes verfügen, für die sie bestimmt sind, können sie Ihnen eine Vorstellung davon vermitteln, wie komplexere Konfigurationen aussehen können und wie ihre Vorlagen aufgebaut sind. Die Projekte sind:

  • gbv: Grundkonfiguration für einen großen Bibliotheksindex mit mehreren Suchfeldern und Facetten, aber ohne individuelle Darstellung
  • hans: einfache Konfiguration für einen kleineren Bibliotheksindex mit mehreren Suchfeldern, Facetten und leicht angepassten Vorlagen
  • jfk-institut-zeitungen: einfache Konfiguration mit einem einzigen Suchfeld, einer nicht trivialen Facette und einer benutzerdefinierten Vorlage ohne Detailansicht
  • edfu: Aufwändige Konfiguration mit zwei Suchfeldern, zwei Facetten und hochindividueller Anzeige
  • germania-sacra: durchdachte Konfiguration mit vielen Suchfeldern, Facetten, Datenexport, komplexen Abfragen und hochindividueller Darstellung
  • test: Konfiguration zur Demonstration der Einstellungen dieser Readme sowie der enthaltenen View Helpers

Diese Projekte sind auf eine gemeinsame Art und Weise strukturiert (mit möglicherweise nur einer Teilmenge der vorhandenen Ordner / Dateien)

  • projectname.ts: TypoScript-Konfiguration für das Setup
  • EXT-Private: Symlink zum Ordner Resources/Private der Erweiterung?s; dies wird als Schema verwendet, um die Partiale und Vorlagen der Erweiterung?s in die benutzerdefinierte Konfiguration zu verlinken, damit sie in der benutzerdefinierten Konfiguration verwendet werden können
  • Vorlagen/Suche: Typischerweise sind einige von ihnen mit den Originalen verknüpft
    • Index.html und Detail.html für die Anzeige
    • Index.data und Detail.data zum Laden von Daten
    • Daten für die automatische Vervollständigung vorschlagen / Antworten vorschlagen
  • Partiale: Enthält Symlinks zu den Ordnern innerhalb des Ordners "Partials" der Erweiterung?s. Wenn die voreingestellten Teiltöne überschrieben werden sollen, kann hier ein aktueller Ordner mit Teiltöne platziert werden. Sie können hier auch Ihre eigenen Teiltöne / Ordner der Teiltöne hinzufügen. Die von der Erweiterung bereitgestellten Standard-Teiltöne befinden sich in den Ordnern
    • Komponenten: Elemente, die zur Erstellung der Seite verwendet werden
    • Anzeige: Markup für Felder im Dokument anlegen
    • Facetten: Facetten erstellen
    • Formate: verschiedene Ausgabeformate, die vom Datenformat verwendet werden
    • Seite: Standardelemente, die der Seite hinzugefügt werden sollen
    • Pager: erstellt den Pager für Ergebnislisten
  • Sprache: Lokalisierungsdateien oder Symlinks zu den Lokalisierungsdateien der Erweiterung?
  • Ressourcen: JavaScript, CSS, Bilder, die von den Vorlagen des Projekts verwendet werden, und Teilbilder

TypoScript-Konfigurationsoptionen

Alle in diesem Abschnitt beschriebenen Einstellungen befinden sich im array plugin.tx_find.settings der TypoScript-Konfiguration.

Verbindung zum Solr-Index ::::::::::::::::::::::::::::

Das Array Verbindungseinstellungen wird verwendet, um den Zugriff auf den Solr-Index zu konfigurieren. Es enthält:

  • host[127.0.0.0.0.1]: Hostname des Servers, auf dem der Index läuft
  • port[8080]: Port des Solr-Dienstes auf dem Server
  • path [/solr/]: Pfad des Index auf dem Solr-Server
  • timeout[5]: Anzahl der Sekunden, bevor eine Solr-Anforderung abläuft
  • schema[http]: URI-Schema der Verbindung

Solr Shard Nutzung ::::::::::::::::::::::::::::

Das Array mit den Shard-Einstellungen wird verwendet, um das Solarium für die Verwendung einer verteilten Suche zu konfigurieren. Das Array enthält Datensätze eines Shard-Schlüssels und des Shards selbst.

Beispiel::

plugin.tx_find.settings.shards {
    shard1 = localhost:8983/solr
    shard2 = localhost:7574/solr
}

Weitere Informationen zur verteilten Suche finden Sie unter https://wiki.apache.org/solr/DistributedSearch

Das Suchformular :::::::::::::::

Die Einstellung queryFields konfiguriert das Suchformular. Es ist ein nummeriertes Array von Arrays, eines für jedes Suchfeld, das verwendet werden kann. Die Query-Felder haben je nach Typ eine Reihe von Parametern:

  • id (erforderlich): die id für das Suchfeld; diese wird in URL-Parametern (tx_find_find_find[q][myID]) verwendet und dient zur Identifizierung des lokalisierten Labels für das Suchfeld
  • typ (erforderlich): der Typ des Suchfeldes; der Teil mit diesem Namen in Partials/Form/Fields wird verwendet, um das Feld für das Eingabeformular zu erstellen; der Standardsatz von Partialen enthält die Optionen Text, Range, Hidden, Select, Select, SelectFacet und Radio, von denen einige vom spezifischen Code in der Steuerung abhängen, um die richtigen Abfragen zu erstellen
  • query: eine sprintf-Zeichenkette mit der Solr-Abfrage für dieses Feld, z.B. title_search:%s; wenn nicht, wird die Standardabfrage $id:%s verwendet (wobei $id der Wert des id-Feldes ist); dies ermöglicht komplexere Abfragen (z.B. mehrere Felder gleichzeitig abfragen oder {!join} zu einer Abfrage hinzufügen), es unterstützt auch mehrere Parameter (siehe Range-Typ);
  • extended[0]: wenn true, ist das Suchfeld nur im erweiterten Suchformular sichtbar
  • noescape[0]: wenn wahr, wird die Erweiterung nicht aus der Benutzereingabe entkommen, bevor der Index abgefragt wird; dies ermöglicht technisch orientierten Benutzern, ihre eigenen Solr-Abfragen auszuführen; es besteht jedoch das Risiko, dass Benutzer versehentlich ungültige Abfragen eingeben, was zu Solr-Ausnahmen führt (die im Standard-Setup abgefangen werden und dem Benutzer einen Link zum Ausführen einer entkommenen Abfrage anbieten)
  • phrase[0]: wenn wahr, wird die Zeichenkette im Feld phrase escaped ? und nicht term escaped ?, bevor sie in die Solr-Abfrage platziert wird
  • hidden[0]: wenn true, wird das Eingabefeld nicht angezeigt; das Feld wird jedoch angezeigt, wenn ein Begriff dafür in einem Suchparameter übergeben wird

Die Standardkonfiguration richtet eine allgemeine Textabfrage für Index 0 mit id default ein, sowie ein Hidden-Feld zum Transportieren des Zustands des Suchformulars mit für Index 10001 mit id extended und ein Textfeld für raw Solr-Abfragen für Index 10002 mit id raw. Bitte beachten Sie diese Konfigurationen, damit Sie sie bei Bedarf überschreiben oder löschen können.

Einige der Suchfeldtypen haben ein eigenes Verhalten und spezifische Konfigurationsoptionen.

Text ....

Das Textfeld kann das einfachste verfügbare Feld sein. Es ermöglicht auch fortgeschrittenes Verhalten, indem es Autovervollständigung oder ein Kontrollkästchen hinzufügt, um einen alternativen Abfragestil auszuwählen.

  • queryAlternate: ein Array von alternativen Abfragen, die für den Typ Text konfiguriert werden können; es erstellt ein Kontrollkästchen neben dem Eingabefeld, das zwischen der bereitgestellten Abfrage und der ersten queryAlternate umschaltet
  • autocomplete[0]: wenn wahr, wird ein Feld vom Typ Text für die Autovervollständigung mit Solr vorgeschlagene Abfrage angehängt
  • autocompleteDictionary: Name des Wörterbuchs, das die von Solr vorgeschlagene Abfrage verwenden soll
  • default: Standardwerte, die in der Abfrage verwendet werden sollen, wenn (noch) kein Wert vom Benutzer angegeben wird; kann eine Einzelwertzeichenkette (z.B. für den Standardzustand von Kontrollkästchen) oder ein Array sein (besonders nützlich für Bereichsabfragen)

Beispiele::

plugin.tx_find.settings.queryFields {
    10 {
        id = Name
        typ = Text
    }
    11 {
        id = name2
        typ = Text
        query = name:%1$s
        queryAlternate.1 = name:%1$s~0.7
        noescape = 1
    }
    12 {
        id = name3
        typ = Text
        autovervollständigung = 1
        autocompleteDictionary = Name
    }
}

Bereich .....

Das Feld Range erzeugt zwei Texteingaben für die Argumente q.{fieldInfo.id}.0 und q.{fieldInfo.id}.1. Dies kann mit einer Abfrage wie von:[* TO %2$s] UND bis:[%1$s TO *] verwendet werden, wenn Ihr Index Felder von und bis hat. Z.B.::

plugin.tx_find.settings.queryFields.20 { {
    id = Jahr
    typ = Bereich
    abfrage = von:[* TO %2$s] UND zu:[%1$s TO *]
    default.0 = * *
    default.1 = * *
}

Versteckt ......

Das Feld Hidden erzeugt ein Eingabeelement vom Typ hidden, um zusätzliche Parameter durch das Formular zu übergeben. Z.B.::

plugin.tx_find.settings.queryFields.30 { {
    id = versteckt
    typ = Versteckt
    standard = Überraschung
}

Auswählen ......

Das Feld Select erzeugt ein Popup-Menü. Das Popup-Menü wird über Optionen eingerichtet, wobei die Standardauswahl?s-Taste in der Taste steht. Z.B.::

plugin.tx_find.settings.queryFields.40 { {
    id = Land
    typ = Auswählen
    optionen {
        leer =
        schlüssel = Wert
        schlüssel2 = Wert2
    }
    default = Schlüssel
}

SelectFacet auswählen ...........

Das Feld SelectFacet erstellt ein Popup-Menü mit den Daten einer geladenen Facette. Damit dies funktioniert, muss die Facette konfiguriert und ihre ID als FacettenID-Parameter eingestellt sein. Z.B.::

plugin.tx_find.settings {
    queryFields.50 { {
        id = Status
        typ = SelectFacet auswählen
        facetID = Status
        query = status_facet:%s
    }
    facetten.50 { {
        id = Status
        feld = status_facet
        versteckt = 1
        fetchMinimum = 0
    }
}

Radio .....

Erstellt Auswahlknöpfe für das Array, das im Options-Array festgelegt ist. Z.B.::

plugin.tx_find.settings {
    60 {
        id = Version
        erweitert = 1
        typ = Radio
        optionen {
            1 = Steak
            2 = Huhn
            3 = Pfannkuchen
        }
        standard = 2
    }
}

Standard-Anzeigefelder ::::::::::::::::::::::

Zwei Felder im Indexdokument können als Titel des Dokuments und als Ausschnitt bezeichnet werden, die zur Anzeige der Ergebnisliste verwendet werden. Dies ermöglicht eine einfache Erstkonfiguration und sollte viele Fälle abdecken. Wenn Sie komplexere Informationen in der Ergebnisliste anzeigen müssen, kann dies durch Ersetzen des Teils Display/Result oder ? der Indexvorlage erreicht werden...::

plugin.tx_find.settings {
    standardFelder {
        title = title
        ausschnitt = Detail
    }
}

Standardabfrage :::::::::::::

Standardmäßig werden alle Datensätze im Index angezeigt, wenn kein Suchbegriff angegeben ist: Hierfür wird die Abfrage *:* verwendet. Sie können diese Standardabfrage ändern (z.B. in eine Abfrage ohne Ergebnisse)::

plugin.tx_find.settings {
    defaultQuery = *:*
}

Facetten ::::::

Facettierung kann in TypoScript mit der Facetteneinstellung konfiguriert werden. Es ist eine nummerierte Liste von Arrays. Jedes Array kann die Schlüssel haben:

  • id (erforderlich): ID, die zur Identifizierung der Facette verwendet wird
  • typ[Liste]: der Typ der zu verwendenden Facette (siehe unten für die Typen, die von der Erweiterung bereitgestellt werden)
  • feld: das Solr-Feld, das für die Facette verwendet werden soll, wird verwendet, wenn nicht das Feld, das durch die ID gegeben ist
  • sortOrder[count]: Mit dem Index werden die Facetteneinträge alphabetisch sortiert, standardmäßig werden Facetteneinträge nach der Anzahl der Ergebnisse sortiert
  • fetchMinimum[1]: die minimale Anzahl von Facetteneinträgen, die benötigt werden, um die Facette anzuzeigen; die Facette wird überhaupt nicht angezeigt, wenn es weniger Einträge als diese gibt
  • fetchMaximum[100]: die maximale Anzahl der Facetteneinträge, die geladen werden sollen
  • query: sprintf style formatierte Zeichenkette, die als Filterabfrage verwendet werden kann, wenn die Facette ausgewählt ist; standardmäßig wird das facet?s Feld mit dem ausgewählten Begriff verwendet
  • facetQuery: Array von Facettenabfrage-Konfigurationsarrays, die zum Erstellen bestimmter Facetten verwendet werden können; jedes der Arrays hat die Schlüssel-ID, um die Facettenabfrage zu identifizieren und die Solr-Abfrage abzufragen, um die Facette zu erstellen für
  • selectedByDefault: Array mit Schlüsselfeldwert und Werten 1 zur Angabe von Facettenbegriffen, die ausgewählt werden sollen, wenn keine Facettenauswahl angegeben wird (besonders nützlich bei dem Facettentyp Tabs.
  • excludeOwnFilter[0]: wenn auf 1 gesetzt, werden die von der Facette selbst erzeugten Filter nicht bei der Berechnung der Ergebnisanzahl für ihre Elemente verwendet
  • hidden[0]: ob die Facette vor der Anzeige ausgeblendet werden soll (z.B. um die Facettendaten in einem anderen Teil der Seite wie einem SelectFacet-Abfragefeld zu verwenden)

Um die Standardwerte für diese Felder zu ändern, können Sie die Einstellung facetsDefaults verwenden und dort Ihre bevorzugten Standardwerte festlegen.

Die angegebenen Facettentypen werden durch die Teiltöne in Partials/Facets/Facets/Facet gegeben. Das Teil wird mit dem für die Facette konfigurierten Typ kommissioniert.

Liste ....

Dies ist eine Standardfacettenliste, die den Facettennamen mit einer Ergebniszählung anzeigt. Sie können CSS verwenden, um die Ergebniszählung auszublenden, wenn sie nicht benötigt wird.

  • displayDefault[6]: die Anzahl der Facettenelemente, die standardmäßig angezeigt werden sollen (die restlichen sind zunächst ausgeblendet und können vom Benutzer angezeigt werden)
  • autovervollständigung: ob ein Suchfeld für Autovervollständigung über den Facettenelementen angeboten werden soll (hilfreich bei Facetten mit vielen Elementen)
  • sortPrefixSeparator: Diese Zeichenkette wird verwendet, um den Namen der Facette in zwei Teile aufzuteilen und nur den zweiten Teil anzuzeigen; so können Sie nach dem ersten Teil sortieren (z.B. mit null gefüllten Zahlen) und haben trotzdem gut aussehende Facettennamen

Beispiele::

plugin.tx_find.settings.facets {
    10 {
        id = orden
        field = orden_facet
        autovervollständigung = 1
    }
    20 {
        id = Band
        feld = band_facet
        sortOrder = Index
        displayDefault = 8
        sortPrefixSeparator = ########
    }
}

Tabs ....

Der Tabs-Stil ist eine leichte Variation der Plain List. Wie der Name schon sagt, kann er verwendet werden, um "Tabs" über den Suchergebnissen zu erstellen, damit Benutzer eine Ansicht auf eine bestimmte Teilmenge der Daten auswählen können. Dies kann insbesondere bei vordefinierten Facettenabfragen zur Definition der gewünschten Teilmengen sinnvoll sein.

Sie müssen den Teil für diese Art von Facette selbst zu Ihrer Vorlage hinzufügen, damit sie oben auf der Seite erscheint. Verwenden Sie dabei die versteckte Einstellung, um sicherzustellen, dass sie nicht auch zusammen mit den anderen Facetten erscheint. Wenn Sie die Einstellung excludeOwnFilter einschalten, wird sichergestellt, dass Sie korrekte Ergebniszahlen für die Facettenelemente erhalten, die derzeit nicht ausgewählt sind.

Beispiel: eine Tabs-Facette mit Facettenabfragen nach vier bestimmten "typ"-Werten des Dokuments, wobei standardmäßig die Option "formular" ausgewählt wird::

plugin.tx_find.settings.facets {
    30 {
        id = typ
        excludeOwnFilter = 1
        typ = Tabs
        versteckt = 1
        selectedByDefault {
            formular = 1
        }
        facetQuery {
            10 {
                id = formular
                query = typ:formular
            }
            20 {
                id = Würze
                query = typ:wort
            }
            30 {
                id = gott
                query = typ:gott
            }
            40 {
                id = ort
                query = typ:ort
            }
        }
    }
}

Histogramm .........

Diese Facette ist für numerische Felder gedacht. Es wird ein Histogramm erstellt, um die Anzahl der Ergebnisse pro Zahl im Index zu visualisieren. Es ist eine schöne Möglichkeit, eine "Jahres"-Facette zu visualisieren. In der Regel wünschen Sie eine hohe fetchMaximum-Einstellung für die Histogrammfacette.

  • barWidth: die "Breite" jedes einzelnen Balkens im Histogramm; wenn Sie einen großen Zahlenbereich abdecken, kann es sich lohnen, die Balken in breitere Bereiche zu gruppieren; dies erfordert einen Index, der bereits gerundete Daten enthält (z.B. die gerundete Zahl der Dekade anstelle des genauen Jahres)

Beispiel::

plugin.tx_find.settings.facets {
    40 {
        id = Dekade
        feld = Dekade
        typ = Histogramm
        sortOrder = Index
        fetchMaximum = 1000
        barBreite = 10
    }
}

Karte ...

Dieses Gesicht erstellt eine winzige Google-Karte aus einem Solr-Feld, das speziell formatierte Geohashes enthält. Bitte schauen Sie sich die Partials/Facets/Facets/Facet/Map.html partiell für Details an. (Dies kann in vielerlei Hinsicht noch verbessert werden.)

Beispiel::

plugin.tx_find.settings.facets {
    50 {
        id = Karte
        feld = Geohash
        typ = Karte
        sortOrder = Index
        fetchMaximum = 1000
    }
}

Sortierung :::::::

Das Sortierverhalten kann über die Sortiereinstellung konfiguriert werden. Es handelt sich um ein Array von Arrays mit den Feldern id und sortCriteria. Letzteres ist eine Solr-Sortierfolge, d.h. eine kommagetrennte Liste des Formulars fieldName[a|de]sc. Die ID der Standardsortierreihenfolge sollte voreingestellt sein.

Wenn das Array aus mehreren Elementen besteht, wird der Benutzeroberfläche ein Popup-Menü zur Auswahl der Sortierreihenfolge hinzugefügt.

Beispiel::

plugin.tx_find.settings.sort {
    1 {
        id = Standard
        sortCriteria = Jahr desc,Name aufsteigend
    }
}

Paging ::::::

Verwenden Sie die Paging-Einstellung, um die Navigation in den Ergebnissen anzupassen. In diesem Array kannst du einstellen:

  • perPage[20]: die Anzahl der Ergebnisse pro Seite
  • menu [array()]: Reihe von Zahlen, die verwendet werden, um ein Menü zu erstellen, aus dem Benutzer die Anzahl der Ergebnisse pro Seite auswählen können
  • maximumPerPage[1000]: die maximale Anzahl von Ergebnissen, die von Solr abgerufen werden können, auch wenn die Anfrage nach mehr Ergebnissen fragt
  • detailPagePaging[1]: wenn 1, ermöglicht dies das Blättern zwischen Detailseiten für eine Suche

Beispiel::

plugin.tx_find.settings.paging {
    proSeite = 100
    maximumPerPage = 1000
    detailSeitenaufruf = 1
}

Detailseite Paging ..................

Die Option detailPagePaging ermöglicht eine Funktion, mit der Sie bei Verwendung von RealURL hübsche und eindeutige URLs für die Seiten haben, die Ihren Solr-Dokumenten entsprechen, und die zwischen der Detailseite eines Ergebnisses und den Detailseiten davor und danach blättern.

Dies wird erreicht, indem Informationen über die vorherige Abfrage zusammen mit der ID des angeforderten Datensatzes, der in der URL gesendet wird, gepostet werden. Ein Nachteil dieser Lösung ist, dass die Verwendung des Zurück-Buttons des Browsers einen Dialog "Möchten Sie dieses Formular erneut abschicken" auslösen kann. Schalten Sie diese Option aus, wenn Sie nicht zwischen den Detailseiten blättern müssen.

URL-Parameter ..............

Sie können auch die Anzahl der Ergebnisse und das Ausgangsdokument in einer Serverantwort über die Argumente count und position einstellen. Die Anzahl wird durch die Einstellung maximumPerPage begrenzt.

Dokumente ausschließen :::::::::::::::::::

Wenn Ihr Index Dokumente enthält, die nie angezeigt werden sollen (z.B. weil sie noch nicht veröffentlicht sind oder weil Sie sie für die Suche verwenden, aber {!join} sie anderen Dokumenten zur Anzeige hinzufügen), können Sie Filterabfragen mit der Einstellung additionalFilters hinzufügen. Die Einstellung ist ein Array mit den Filterabfragen als Werte::

plugin.tx_find.settings.additionalFilters {
    1 = veröffentlicht:true
}

Auswahl der zu holenden Felder ::::::::::::::::::::::::::::

Standardmäßig wird das komplette Solr-Dokument geladen und alle seine Felder können verwendet werden. Wenn Ihre Dokumente sehr groß sind oder Sie unnötige Hervorhebungen vermeiden wollen, kann es sinnvoll sein, explizit anzugeben, welche Felder abgerufen werden sollen. Mit der Einstellung dataFields können Sie dies tun. Es hat vier Abschnitte Standard, Index, Detail, Daten. Die Erweiterung beginnt mit den standardmäßig konfigurierten Feldern und fügt die im Array angegebenen Felder für die verwendete Aktion hinzu.

Jeder dieser Abschnitte ist ein Array mit Schlüsseln default (wieder), allow und disallow. Normalerweise benötigen Sie nur das Standard-Array, aber die anderen Schlüssel können verwendet werden, um Felder zu erzwingen oder die Ausgabe von Feldern explizit zu verbieten. (Bitte beachten Sie, dass dies keine ausfallsichere Garantie dafür ist, dass Benutzer dieses Feld aufgrund der verschiedenen Aktionen oder Platzhalter für Feldnamen nicht sehen können.) Sie können das Argument data-fields auch in Aktions-URLs verwenden, um die Standardkonfiguration zu überschreiben. Aus technischen Gründen müssen die Schlüssel für die Felder mit einem Buchstaben beginnen und nicht nur eine Zahl sein (z.B. f1 statt 1 verwenden).

Beispielkonfiguration, um standardmäßig nur minimale Felder zu laden und alle Felder für die Detail- und Datenaktionen zu laden::

plugin.tx_find.settings {
    dataFields {
        standard {
            standard {
                f0 = id
                f1 = kloster
            }
        }
        detail {
            standard {
                f0 = *
            }
        }
        daten < plugin.tx_find.settings.dataFields.detail
    }
}

Hervorhebung ::::::::::::

Die Verwendung von Solr?s Ergebnis-Highlighting wird durch die Highlight-Einstellung konfiguriert. Ähnlich wie bei der Einstellung dataFields enthält es Arrays default, index, detail und data. Jedes davon kann die folgenden Felder enthalten:

  • fields [{f1 = *}]: ein Array von Feldnamen; seine Schlüssel sollten aus technischen Gründen mit einem Buchstaben beginnen (d.h. f1 statt 1)
  • fragsize[100]: die maximale Länge des markierten Fragments
  • query: eine benutzerdefinierte Abfragevorlage im sprintf-Stil, die zum Hervorheben verwendet werden kann
  • useQueryTerms[0]: auf 1 setzen, um Highlight-Abfragen für jeden Suchbegriff aus dem Suchformular zu erstellen
  • useFacetTerms[0]: auf 1 setzen, um Highlight-Abfragen für jeden ausgewählten Facettenbegriff zu erstellen
  • alternateFields: ein Array mit Schlüsseln für den Feldnamen und Werten für den entsprechenden alternativen Feldnamen für Situationen, in denen die Hervorhebung im Feld selbst nicht funktioniert

Bitte beachten Sie, dass insbesondere die letzten drei Optionen noch nicht ideal erscheinen und als experimentell gelten. In Zukunft können Änderungen erforderlich sein, um diese in komplizierten Situationen vielseitiger zu gestalten.

Beispiel, das standardmäßig nur einige wenige Felder und eine größere Auswahl an Feldern für die Detailaktion hervorhebt. Wie bei {!join} Abfragen werden die Begriffe aus Abfragen und Facetten bei highligh Abfragen explizit wieder hinzugefügt::

plugin.tx_find.settings.highlight {
    standard {
        felder {
            f1 = kloster
        }
        useQueryTerms = 1
        useFacetTerms = 1
    }
    detail {
        felder {
            f2 = Patrozinium
            f3 = ort
            f4 = Bistum
            f5 = Land
            f6 = orden
            f7 = bemerkung_kloster
        }
    }
}

Verknüpfung mit Datenfeldern ::::::::::::::::::::::

Bei der Anzeige von Feldinhalten mit dem Partials/Display/Field/Content Teil (oder seinen Geschwistern, die sie verwenden) kann das Argument linkFieldContent angegeben werden, um nicht nur den Feldinhalt anzuzeigen, sondern auch einen Link einzufügen, um alle Dokumente mit dem gleichen Wert in diesem Feld zu suchen. Ohne weitere Konfiguration wird eine Rohabfrage erstellt, bei der der Benutzer die Solr-Abfrage sehen kann. Es kann wünschenswert sein, stattdessen die Solr-Abfragesyntax auszublenden und ein (möglicherweise verstecktes) Abfragefeld für dieses Solr-Feld zu definieren und dieses Feld dann einfach nur mit dem Begriff zu füllen.

Die Einstellung queryFieldForDataField ist ein Array mit den Schlüsseln Solr Feldnamen und Werte-IDs von queryFields, das das für die Erstellung dieser Abfragen erforderliche Mapping erstellt.

Beispiel::

plugin.tx_find.settings {
    queryFields {
        100 {
            id = Stadt
            typ = Text
            versteckt = 1
            phrase = 1
        }

    queryFieldForDataField {
        stadt = Stadt
    }
}

Zum Inhalt springen ::::::::::::::::::::::

Standardmäßig erstellt die Erweiterung Links, die zum Inhalt der Erweiterung?s (#tx_find) auf der Zielseite springen, um den sichtbaren Bereich für Suchergebnisse und Informationen zu maximieren, die andernfalls für den Kopf der Seite?s verschwendet werden könnten. Du kannst den Anker entfernen, zu dem du springen möchtest, oder einen anderen auf deiner Seite auswählen (z.B. um die Seitennavigation sichtbar zu lassen), mit der Einstellung jumpToID::

plugin.tx_find.settings.jumpToID = Menü

JavaScript- und CSS-Ressourcen ::::::::::::::::::::::::::::

Zu den Einstellungen gehören die Arrays JSPaths und CSSPaths, mit denen JavaScript- und CSS-Dateien konfiguriert werden können, die der Seite hinzugefügt werden sollen. Das Standard-Setup konfiguriert Dateien an den Positionen 10 und 20 von CSSPaths und an der Position 10 von JSPaths. Z.B.::

plugin.tx_find.settings {
    CSSPaths.30 = EXT:find/Projekte/Test/Ressourcen/test.css
    JSPaths.20 = EXT:find/Projekte/Test/Ressourcen/test.js
}

Lokalisierung ::::::::::::

Sie können den languageRootPath so einstellen, dass er auf Ihren eigenen Localisations Ordner zeigt. Die in der Erweiterung enthaltenen Partials werden diesen Pfad beim Zugriff auf ihre Lokalisierungsdateien berücksichtigen. Wie bei den Partialen und Vorlagen kann es praktisch sein, einige der Standard-Lokalisierungsdateien zu verlinken und einfach zu überschreiben oder die zusätzliche Terminologie hinzuzufügen, die Sie benötigen::

plugin.tx_find.settings.languageRootPath = EXT:find/Projekte/Test/Language/

Lokalisierungsdateien, die von den enthaltenen Teiltonen verwendet werden, sind:

  • locallang.xml: Allgemeine Terminologie für die Suchoberfläche (die Standarddatei)
  • locallang-form.xml: Bezeichnungen und Platzhalter für das Suchformular
  • locallang-facets.xml: Facettennamen und Facettenartikelnamen
  • locallang-fields.xml: Feldbezeichnungen

Bitte beachten Sie die ersten Kommentare in diesen Dateien zu den Konventionen, mit denen die Lokalisierungsschlüssel basierend auf den ID s der jeweiligen Suchfelder, Facetten oder Felder erstellt wurden.

Templattieren

Wahrscheinlich möchten Sie Ihre eigenen Vorlagen und Teiltöne erstellen, um die Anzeige Ihrer Suchergebnisse für Ihren Indexinhalt anzupassen. Um dies zu tun, erstellen Sie eine Projektstruktur nach dem Vorbild der eingebundenen Beispielprojekte, verlinken Sie die Teile der Extension?s-Vorlagen und Teiltöne, die Sie verwenden möchten, und überschreiben/ergänzen Sie Ihre eigenen.

Die Erweiterung enthält eine große Anzahl von View Helpers und Partials, die in diesem Zusammenhang hilfreich sein können. Schauen Sie sich die Ordner Classes/ViewHelpers und Resources/Private/Partials an, um zu sehen, welche Teile der Arbeit bereits für Sie erledigt wurden.

Die meisten View Helpers enthalten Anwendungsbeispiele im Testteil des Testprojekts und erscheinen auf der Startseite (die Suchoberfläche erscheint nach diesen Beispielen), sobald Sie sie eingerichtet haben.

Aktionen

Die Erweiterung bietet drei Aktionen:

  • index: die Standardaktion, die Suchvorgänge durchführt
  • detail: die Aktion zur Anzeige eines einzelnen Dokuments (automatisch ausgelöst, wenn das Argument id vorhanden ist)
  • vorschlag: Wird für die automatische Einrichtung von Textabfragefeldern verwendet

Datenexport

Die Erstellung von Datenexporten erfordert die folgende Konfiguration:

  • einen TYPO3-Seitentyp ohne HTML und den von Ihnen benötigten MIME-Typ einrichten; die Erweiterung stellt den Typ 1369315139 für JSON: zur Verfügung:

    tx_find_page = PAGE tx_find_page { typeNum = 1369315139 10 < tt_content.list.20.find_find config { disableAllHeaderCode = 1 additionalHeaders = Content-type:application/json;charset=utf-8 } }

  • erstellen Sie einen Link mit f:link.action mit dem von Ihnen benötigten pageType, format="data" und fügen Sie das Argument data-format mit dem Namen des gewünschten Formats zur Query hinzu

  • erstellen Sie einen Teil für Ihr Datenformat in Partials/Formats mit der Erweiterung .data file name und erstellen Sie dort die gewünschte Ausgabe.

Beispielausgabeformate, z.B. für JSON, sind in der Erweiterung verfügbar. Das germania-sacra-Projekt enthält zusätzliche.

Abfrage von Zeichenkettenargumenten

Die Abfrageparameter des Plugins haben die Form tx_find_find_find[parameterName].

Standardargumente ::::::::::::::::::

Eingebaute Parameternamen sind

  • id: die Solr-Dokument-ID des Dokuments, die in der Detailaktion angezeigt werden soll; das Argument id wird immer die Detailaktion auslösen
  • q: für die Abfrage; dies ist ein Array mit Schlüsseln für die QueryField-IDs, z.B. tx_find_find-Q1-Q1[q][default]=term; einige Abfragefeldtypen (z.B. Range) verwenden ein Array als Wert, um ihre beiden Eingabewerte abzudecken
  • facette: für ausgewählte Facetten; dies ist ein Array mit Schlüsseln, den Facetten-IDs und Werte-Arrays; diese Arrays haben Schlüssel, die den Facetten-Term und den Wert 1 enthalten, z.B. tx_find_R7-Q7-Q1[facette][typ][formular]=1
  • seite: die Seite der anzuzeigenden Ergebnisse (1-basiert)
  • erweitert: ob das erweiterte Suchformular angezeigt werden soll
  • sort: die zu verwendende Sortierreihenfolge

Besondere Argumente :::::::::::::::::

Diese Argumente werden typischerweise nicht offengelegt, können aber nützlich sein, wenn Datenexporte über die Erweiterung bereitgestellt werden, insbesondere wenn die Datenaktion verwendet wird.

  • start: der Dokumentenindex, mit dem in der Ergebnismenge begonnen werden soll
  • anzahl: die Anzahl der Dokumente, um die Solr gebeten werden soll (begrenzt durch die Einstellung paging.maximumPerPage)
  • datenformat: Bei Verwendung des Datenformats wird diese Datei in Partials/Formats zur Erstellung der Ausgabe verwendet

POST-Argumente ::::::::::::::

  • underlyingQuery: Informationen über die zugrunde liegende Abfrage, die im POST-Body gesendet werden, wenn paging.detailPagePaging eingeschaltet ist; sie kann die Schlüssel q, facettiert, positioniert, gezählt und sortiert enthalten.

RealURL

Die Erweiterung beinhaltet einen Haken zur Autokonfiguration von RealURL. Es behandelt hauptsächlich den Parameternamen für die Detailansicht unter Verwendung eines id/documentID-Pfadsegments.

URLs für Abfragen und Facetten sind nicht vorqualifiziert und ? muss bei Bedarf aufgrund der Namen der Abfrageparameter manuell konfiguriert werden, je nachdem, welche ID s für Felder und Facetten verwendet werden.

Voraussetzungen

  • TYPO3 6.1 oder höher
  • t3jquery Erweiterung

Kontakt

  • Sven-S. Porst <https://github.com/ssp/> _, SUB Göttingen
  • Ingo Pfennigstorf <https://github.com/ipf/> _, SUB Göttingen

Danksagungen

Die Solr-Konnektivität der Erweiterung?s wird durch das Solarium <http://www.solarium-project.org/> PHP Solr Client (github) <https://github.com/basdenooijer/solarium]> bereitgestellt.

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:FIND ist auf

0.09 % aller TYPO3 installiert.

  • 0.52 % aller TYPO3 7.6.x Installationen installiert
  • 0.02 % aller TYPO3 6.2.x Installationen installiert

FIND Version:Verteilung nach installierten Versionen

  • 100 % FIND v.1.1.0

PHP Version:FIND wird benutzt mit

  • 100 % PHP/5.5

Gosign-Responsive Index: TYPO3 Installationen nutzen FIND zu

  • 22 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 3 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 12 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 62 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen FIND zu

  • 6 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 22 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 19 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 3 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 56 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=37555 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>