QuickSearch
Was ist eine QuickSearch?
Eine QuickSearch im Sinne dieses Artikels ist eine direkte Suche nach Objekten eines bestimmten Gastgebers oder nur nach einem bestimmten Objekt. Typischerweise handelt es sich dabei um ein einzelnes Input Feld welches auf z.B. der Startseite platziert wird, um einen schnellen Zugriff per Nummer aus etwa einem Print Produkt zu ermöglichen.
Das Formular zur Eingabe der Nummer ist dabei nicht Bestandteil des Frontend Clients und muss von Ihnen gestellt werden, ebenso ist die weitere Logik zur Generierung der passenden Einbindung nicht Bestandteil des Frontends.
Welche Arten gibt es?
Es gibt zwei Arten von QuickSearch Einbindungen:
- die Suche nach einer Gastgebernummer
- die Suche nach einer Objektnummer
Bevor Sie mit dieser Anleitung weitermachen müssen Sie wissen, welche der beiden Varianten auf Sie zutrifft, also welche Art Nummer in dem vorliegenden Printprodukt verwendet wird. Diese Information sollte Ihnen Ihr Kunde liefern können, am besten zusammen mit einigen Beispielzahlen für spätere Tests.
Wie ist eine QuickSearch technisch realisiert?
Praktisch handelt es sich um ein beliebiges Formular, das die gewünschte Nummer abfragt und an eine Seite weiterleitet die den OP Frontend Client einbindet. Da die Nummer eben dies ist, eine Nummer, empfiehlt es sich dieses Format auch zu validieren.
Je nach Nummerntyp gibt es nun zwei Optionen:
Ich habe eine Gastgebernummer aus dem Katalog!
In diesem Fall benötigen Sie eine Einbindung der Frontend Suche. Die Suche unterstützt dabei innerhalb der Javascript Einbindung eine Vorfilterung über dem "limit" Parameter, lesen Sie dazu den entsprechenden Abschnitt der Anleitung der Sucheinbindung. Sie müssen nun den Javascript Code nicht mehr statisch in der Zielseite einbauen, sondern den limit Parameter dynamisch programmgesteuert mit PHP/JS/etc. ausgeben lassen.
Ein Beispiel für eine solche Implementierung könnte so aussehen:
[...übriger Einbindungscode...]
var loadOptions = {
module: 'op-frontend-suche', // Name des zu ladenden Moduls
content_id: 'op_content_box', // ID des HTML Elements, in das der Inhalt geladen wird
options: {
[...übrige Optionen/Featureschalter ...]
limit: {
GaGeNr: [<?php echo intval($MEIN_FORMULAR_PARAMETER_KOMMT_HIER_REIN); ?>],
// eine Kombination (AND) mit anderen Limit Parametern ist auch möglich!
}
}
};
[...übriger Einbindungscode...]
In diesem Fall wird der Gesamtpool der Suche auf nur einen Gastgeber limitiert. Der Vorteil dieses Szenarios ist, dass auch im Falle des Nicht-Findens der Nummer eine Ergebnisseite angezeigt wird.
Noch ein Hinweis: Sie sollten für diese Suche eine getrennte Einbindung vornehmen und diese von der Indizierung durch Google gezielt ausschließen, um zu verhindern, dass eine limitierte Suche in den Index übernommen wird bzw. nachfolgende Objektseiten als Duplicate Content gezählt werden. Im Abschnitt "Hinweise für Fortgeschrittene" finden sich weitere SEO Tipps.
Ich habe eine Objektnummer!
In diesem Fall stehen Ihnen zwei Optionen zur Verfügung. Sie können entweder den gleichen Weg wie mit einer Gastgebernummer (siehe vorheriger Abschnitt) verwenden und lediglich den "limit" Parameter austauschen (statt GaGeNr => ObjMetaNr) oder direkt auf die Unterseite des passenden Objektes weiterleiten, indem Sie auf der regulären Sucheinbindung eine passende Route aufrufen. Der Aufbau der exakten Route ist in der Anleitung zur Objektseite zu finden. Kurz gesagt bedeutet dies die eingegebene Nummer in eine Route in diesem Format
https://www.musterhausen.de/object.php?#!m/object/OBJEKT_NUMMER_HIER_EINFUEGEN
einzubauen. Nachteil dieser Lösung ist, dass es keine Ausgabe gibt, wenn die Nummer ungültig bzw. das Objekt offline ist. Es ist jedoch im Allgemeinen die schnellere Lösung, da sie durch ein reines HTML Formular mit Übermittlung per GET und einer htaccess RewriteRule komplett zu implementieren ist.
Tipp: Um in einer htaccess RewriteRule einen Hash Anker setzen zu können muss das Flag NE (no escape) in den Parameter angebenen werden (also z.b. [NE,L,R=301]), ansonsten wird die # umgewandelt und nicht mehr erkannt.