ALLES ÜBER solrwidget UND WIE ES AUF WEBSITES EINGESETZT WIRD
Untersuchte Extension
solrwidget
Solr Fluid Widget
TYPO3 Extension zur Darstellung eines AJAX-fähigen Solr-Suchfeldes als Plugin oder Fluid Widget.
Einführung
Diese Erweiterung ist in der Lage, eine Suchanfrage an einen in TYPO3 konfigurierten Solr-Server zu senden. Es verwendet EXT:solr
für die gesamte Kommunikation
mit dem Solr Backend-Server. Eine Standardstrategie zur Ergebnisanzeige, die die Tooltip-
und Popover-Methoden
von Twitter Bootstrap verwendet
ist implementiert (Sie können dies leicht durch einen beliebigen Ansatz ersetzen) und hängt von jQuery für AJAX und Event Listening ab.
Installation
Laden Sie Erweiterungsdateien herunter, verwenden Sie den Extension Manager oder legen Sie die Dateien manuell in Ihren Erweiterungsordner. Statisches TypoScript laden die von der Erweiterung bereitgestellt wird - und stellen Sie sicher, dass sie auf der Seite verfügbar ist, auf der Sie das Plugin oder das Fluid Widget platzieren möchten.
Integration
Die Integration der Erweiterung besteht nur aus wenigen Standardaufgaben:
- Ersetzen Sie die vom Plugin und Widget verwendete Vorlagendatei.
- Bestätigen Sie alle Solr-Suchfilter usw., die Sie in solr's TypoScript hinzugefügt haben.
- Optional können Sie eine Javascript-Methode zur Anzeige der Ergebnisse einbinden.
- Optional können Sie zusätzliche QueryProvider für erweiterte Ergebnisse anschließen
Jede davon wird im Folgenden näher beschrieben.
Ersetzen von Vorlagendateien
Die von diesem Widget verwendete Hauptvorlagendatei ist Widget/Index
im Ordner Resources/Private/Templates
, der standardmäßig wie folgt lautet
im TemplateRootPath
gesetzt in plugin.tx_solrwidget.view.template.templateRootPath
. Das Plugin verwendet intern das Widget und den
Das Widget verwendet diese Vorlage. Diese Vorlage rendert dann (als Standardansatz) die Teilvorlage Widget.html
, die Folgendes enthält
das aktuelle HTML für das Widget.
In fast allen Anwendungsfällen müssen Sie nur ein Stück der TS-Konfiguration überschreiben:
plugin.tx_solrwidget.view.partialRootPath = EXT:myext/Ressourcen/Private/Partials
Das bedeutet, dass das Verzeichnis EXT:myext/Resources/Private/Partials/Widget.html
eine Kopie der Originaldatei enthalten sollte
EXT:solrwidget/Ressourcen/Private/Teile/Widget.html
, die Sie dann an Ihre Bedürfnisse anpassen.
In der Template-Datei befindet sich ein div mit Klassenergebnis-Template
- falls vorhanden, wird der HTML-Inhalt als Vorlage verwendet, wenn
ausgabe jedes Ergebnisses; um diese Anforderung und/oder dieses Verhalten zu ändern, müssen Sie Ihre eigene Javascript-Ergebnisanzeige registrieren.
Bestätigung der Solr-Suche im Zusammenhang mit dem TypoScript-Setup
Dieser Teil der Integration ist einfach zu verwalten: Durch EXT:solrwidget
wird jede suchbezogene TypoScript-Einstellung wiederverwendet
EXT:solr
selbst ist es sehr wahrscheinlich, dass Ihre Suche "nur funktioniert" - aber wenn Sie Probleme haben, die Suchergebnisse anzuzeigen
oder falsche Ergebnisse, überprüfen Sie Ihr Konfigurationsfeld plugin.tx_solr.search
. Beliebige Filter, voreingestellte Abfragen, Seitenumbrüche, erzwungene
facetten etc. werden sowohl vom Plugin als auch vom Fluid Widget berücksichtigt.
Die erste Intention dieser Suchfunktion ist die Standortsuche mit Typeahead und einfacher Ergebnisdarstellung, d.h. das Widget hat keine erweiterte Unterstützung für Facetten, häufige Suchen und vorgeschlagene Keywords in der Suche - und es gibt andere Einstellungen die nicht mehr gelten, z.B. die Ergebnis-Highlight-Funktion. Die Suche soll daher recht einfach sein, kann aber auch sehr einfach sein auf die Wünsche Ihres Herzens ausgeweitet, solange Sie bereit sind, eine komplexere Suchanzeige zu schreiben, Javascript-Funktion.
Suchergebnisanzeige ersetzen Javascript-Funktion
Da EXT:solrwidget
nur für AJAX-Suchanfragen gedacht ist, kann es sein, dass Sie für das gewünschte Suchergebnislayout schreiben müssen
eine Ersatzjavascript-Funktion, die Ihre Ergebnisse unterschiedlich verarbeiten kann. Das Ersetzen der Standard-Ergebnisanzeigefunktion ist
einfach; fügen Sie auf dem <form> Tag
, der das Suchfeld enthält, das HTML-Attribut data-result-formatter="mySmartMethod"
hinzu, welches
erfordert dann, dass die Funktion mySmartMethod
in Javascript definiert und durch Ihr eigenes TypoScript oder was auch immer eingebunden wird
einbindungsmethode, die Sie bevorzugen. Die mySmartMethod
muss dann zwei Argumente akzeptieren: result
und form
- das Ergebnisargument
wird
ein Array von Ergebnisobjekten mit Daten aus Solr enthalten (und wenn Sie weitere QueryProvider registrieren, wird das Ergebnisargument
stattdessen ein Array mit Ergebnisgruppen enthalten. Das bedeutet, dass Sie auf den Typ testen müssen - und das geht am einfachsten, wenn Sie behaupten
wenn das erste Ergebnis ein Array mit dem Namen results
enthält:
// given <form .... data-result-formatter="window.myFormatter">
myFormatter = function(results, form) {
if ('array' == Art der Ergebnisse[0].results) {
// Das Ergebnis ist multidimensional und kommt von mehreren Solr-Abfragen
} sonst {
// Das Ergebnis ist eine Solr-Abfrage mit der Ergebnisausgabe
}
};
Hinweis: Es ist kein Fehler, dass
var myFormatter
nicht verwendet wird; das Weglassen dervar
stellt sicher, dass die Methode aus dem Verzeichnis denFensterbereich
, der im Attributwert des<form>-Tags
Daten-Ergebnis-Formatierer verwendet wurde. DasFormularargument
enthält einen live jQuery Referenz auf das<form> DOM-Element
, das das verwendete Suchfeld enthält.
Beispiel für Ergebniswerte
// Einfache, einfache Ergebnisse - Objekte enthalten viel mehr Daten als hier gezeigt.
// Übergabe an Javascritpt Ergebnisse Anzeigefunktion als:
Titel:'Ergebnis 1', URL: '....'}, {Titel:'Ergebnis 2', URL: '....'}]
// gruppierte, mehrstufige Ergebnisse - bei Verwendung von QueryProvidern werden die Ergebnisse der Abfrage gruppiert
// je nachdem, wie viele Anfragen gestellt wurden.
[
Titel:'Group one default query', Ergebnisse: Titel:'Ergebnis 1.1'}, {Titel:'Ergebnis 1.2'}]},
Titel:'Gruppe zwei aus zusätzlicher Abfrage A', Ergebnisse: Titel:'Ergebnis 2.1'}, {Titel:'Ergebnis 2.2'}]},
Titel:'Gruppe zwei aus zusätzlicher Abfrage B', Ergebnisse: Titel:'Ergebnis 3.1'}, {Titel:'Ergebnis 3.2'}]}
]
Registrieren Sie zusätzliche Abfragen
Durch die Erstellung einer benutzerdefinierten Klasse, die Solr-Abfrageobjekte verarbeiten kann, ist es möglich, Ihre Ergebnisse zu erweitern (oder das Original zu ändern) Abfrage, die vom Widget verwendet wird, bevor es versendet wird). Beispielsweise können Sie wählen, ob Sie nur nach zwei Hauptkategorien von Ergebnissen suchen möchten und gibt jede Ergebnismenge in einer Gruppe selbst zurück. Oder Sie können die ursprüngliche Abfrage manipulieren, z.B. um zu überprüfen, ob der Benutzer haben als ersten Teil ihrer Suche "Produkt" eingegeben und die Ergebnisse dann auf Produkte beschränkt.
Um dieses Ziel zu erreichen, muss eine Klasse vorhanden sein, die die richtige Schnittstelle von EXT:solrwidget
implementiert:
klasse Tx_Myext_QueryProvider_DualCategoryQueryProviderProvider
implementiert Tx_Myext_QueryProvider_QueryProvider_QueryProviderInterface {
/**
* Liefert einen menschenlesbaren Titel/Bezeichnung für dieses Ergebnis
* gruppe. Sollte Lokalisierungsfunktionen verwenden, um eine
* übersetzte Bezeichnung, zum Beispiel. Kann, aber nicht erforderlich
* um mit Hilfe der $queryString und $originalQuery zu bestimmen
* welches Etikett zurückgegeben werden soll, z.B. Änderung des Etiketts
* nach welcher Kategorie die erste Query sucht.
*
* @param string $queryString Suchanfrage des Benutzers
* @param tx_solr_Query $originalQuery NULL oder Instanz der ersten Query
* @return tx_solr_Query|NULL
*/
öffentliche Funktion getTitle($queryString, $originalQuery) {
$label = Tx_Extbase_Utility_Lokalization::translate('myGroupTitle','Myext');
return NULL ===== $label ? Standard-Label': $label;
}
/**
* Prozessabfrage; Umwandlung der ursprünglichen Abfrage in eine Kategorie -
* eingeschränkte Suche und Rückgabe einer zweiten Anfrage mit einem
* suche in einer zweiten Kategorie, mit einem zweiten Satz von
* einschränkungen. Wenn die Funktion stattdessen NULL zurückgab,
* werden nur die Änderungen an der $originalQuery verwendet.
*
* Dadurch steht dem Anwender ein gruppiertes Ergebnis zur Verfügung
* Javascript-Funktion zur Anzeige der Ergebnisse; jede Gruppe
* mit dem Ergebnis jeder Abfrage.
*
* @param string $queryString Suchanfrage des Benutzers
* @param tx_solr_Query $originalQuery NULL oder Instanz der ersten Query
* @return tx_solr_Query|NULL
*/
public function processQuery($queryString, $originalQuery) {
$firstCategory ='Produkte';
$secondCategory ='allgemein';
// die ursprüngliche Abfrage des Widgets zwingen, die Kategorie einzuschränken:
$originalQuery->addFilter('category:' . $firstCategory);
// Erstellen Sie eine zweite tx_solr_Query-Instanz mit zweiter Suche:
$secondQuery = t3lib_div::makeInstance('tx_solr_Query');
$secondQuery->setQueryString($queryString);
$secondQuery->addFilter('category:' . $secondCategory);
gibt $secondQuery zurück;
}
}
Um EXT:solrwidget
darüber zu informieren, dass Ihr QueryProvider berücksichtigt werden soll, fügen Sie ihn einfach wie folgt in Ihren
ext_localconf.php
Datei:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['solrwidget']['queryProviders'][] ='Tx_Myext_QueryProvider_DualCategoryQueryProvider';
Der Suchmechanismus liest dann dieses Objekt, erstellt eine Instanz und bittet es, die ursprüngliche Anfrage zu manipulieren und/oder eine
zweite Abfrage, die ebenfalls an Solr gesendet werden muss. Ihre QueryProvider-Klasse kann Extbase Mechanismen wie initializeObject
und
Dependency Injection-Methoden; die einzige Anforderung ist, dass sie die richtige Schnittstelle implementieren müssen.
Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.
Verteilung:SOLRWIDGET ist auf
0 % aller TYPO3 installiert.
- 0.02 % aller TYPO3 8.7.x Installationen installiert

Gosign-Responsive Index: TYPO3 Installationen nutzen SOLRWIDGET zu
- 0 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
- 100 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
- 0 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
- 0 % 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 SOLRWIDGET zu
- 0 % wenn der Pagespeed zwischen 80 % und 100 % ist
- 100 % wenn der Pagespeed zwischen 60 % und 80 % ist
- 100 % wenn der Pagespeed zwischen 40 % und 60 % ist
- 0 % wenn der Pagespeed zwischen 20 % und 40 % ist
- 0 % wenn der Pagespeed zwischen 0 % und 20 % ist