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äuftport
[8080]: Port des Solr-Dienstes auf dem Serverpath
[/solr/]: Pfad des Index auf dem Solr-Servertimeout
[5]: Anzahl der Sekunden, bevor eine Solr-Anforderung abläuftschema
[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 Suchfeldtyp
(erforderlich): der Typ des Suchfeldes; der Teil mit diesem Namen inPartials/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 erstellenquery
: 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 desid-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 sichtbarnoescape
[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 wirdhidden
[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 bereitgestelltenAbfrage
und der erstenqueryAlternate
umschaltetautocomplete
[0]: wenn wahr, wird ein Feld vom Typ Text für die Autovervollständigung mit Solr vorgeschlagene Abfrage angehängtautocompleteDictionary
: Name des Wörterbuchs, das die von Solr vorgeschlagene Abfrage verwenden solldefault
: 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 wirdtyp
[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 dieID
gegeben istsortOrder
[count]: Mit demIndex
werden die Facetteneinträge alphabetisch sortiert, standardmäßig werden Facetteneinträge nach der Anzahl der Ergebnisse sortiertfetchMinimum
[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 gibtfetchMaximum
[100]: die maximale Anzahl der Facetteneinträge, die geladen werden sollenquery
: 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 verwendetfacetQuery
: Array von Facettenabfrage-Konfigurationsarrays, die zum Erstellen bestimmter Facetten verwendet werden können; jedes der Arrays hat dieSchlüssel-ID
, um die Facettenabfrage zu identifizieren und die Solr-Abfrageabzufragen
, um die Facette zu erstellen fürselectedByDefault
: 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 FacettentypTabs.
excludeOwnFilter
[0]: wenn auf 1 gesetzt, werden die von der Facette selbst erzeugten Filter nicht bei der Berechnung der Ergebnisanzahl für ihre Elemente verwendethidden
[0]: ob die Facette vor der Anzeige ausgeblendet werden soll (z.B. um die Facettendaten in einem anderen Teil der Seite wie einemSelectFacet-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 Seitemenu
[array()]: Reihe von Zahlen, die verwendet werden, um ein Menü zu erstellen, aus dem Benutzer die Anzahl der Ergebnisse pro Seite auswählen könnenmaximumPerPage
[1000]: die maximale Anzahl von Ergebnissen, die von Solr abgerufen werden können, auch wenn die Anfrage nach mehr Ergebnissen fragtdetailPagePaging
[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
statt1
)fragsize
[100]: die maximale Länge des markierten Fragmentsquery
: eine benutzerdefinierte Abfragevorlage im sprintf-Stil, die zum Hervorheben verwendet werden kannuseQueryTerms
[0]: auf 1 setzen, um Highlight-Abfragen für jeden Suchbegriff aus dem Suchformular zu erstellenuseFacetTerms
[0]: auf 1 setzen, um Highlight-Abfragen für jeden ausgewählten Facettenbegriff zu erstellenalternateFields
: 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ührtdetail
: die Aktion zur Anzeige eines einzelnen Dokuments (automatisch ausgelöst, wenn das Argumentid
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ötigtenpageType
,format="data"
und fügen Sie das Argumentdata-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ösenq
: 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 abzudeckenfacette
: 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 sollsort
: 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 sollanzahl
: die Anzahl der Dokumente, um die Solr gebeten werden soll (begrenzt durch die Einstellungpaging.maximumPerPage
)datenformat
: Bei Verwendung desDatenformats
wird diese Datei inPartials/Formats
zur Erstellung der Ausgabe verwendet
POST-Argumente ::::::::::::::
underlyingQuery
: Informationen über die zugrunde liegende Abfrage, die im POST-Body gesendet werden, wennpaging.detailPagePaging
eingeschaltet ist; sie kann die Schlüsselq
,facettiert
,positioniert
,gezählt
undsortiert
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öttingenIngo 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
[DependciesAndConflicts]