In einem Thema suchen
Die Suchmaschine wird in den Sucheinstellungen des Layouts ausgewählt: Nexus Search, Algolia oder Coveo. Ihr Theme stellt das Suchfeld bereit, und Paligo sorgt für alles andere: den Index, die Skripte zur Durchführung der Suche und eine Suchergebnisseite. Das Theme funktioniert ohne Änderungen mit jeder Suchmaschine.
Suchfeld hinzufügen
Fügen Sie ` paligo_search_box() ` an der Stelle ein, an der das Suchfeld erscheinen soll:
{{ paligo_search_box() }}Standardmäßig werden die Ergebnisse während der Eingabe des Lesers unterhalb des Feldes angezeigt, zusammen mit einem Link, über den alle Ergebnisse aufgerufen werden können. Für die Suchergebnisseite verwenden Sie paligo_search_box('page'), wodurch die Ergebnisse auf der Seite aufgelistet werden, die Suche in der Seitenadresse beibehalten wird und Taxonomie-Filter angezeigt werden, sofern diese im Layout aktiviert sind.
{# templates/search.html.twig #}
{% extends 'base.html.twig' %}
{% block content %}
<main>
<h1>{{ page.title }}</h1>
{{ paligo_search_box('page') }}
</main>
{% endblock %}Wenn das Layout keine Suchmaschine enthält, liefert paligo_search_box() keine Ausgabe, und es wird keine Suchseite veröffentlicht.
Das Suchfeld gestalten
Das Suchfeld und seine Ergebnisse verwenden folgende Klassen:
Klasse | Element |
|---|---|
| Das gesamte Suchfeld. |
| Das Formular. |
| Das Textfeld. |
| Die Schaltfläche, mit der das Textfeld geleert wird. |
| Der Bereich, in dem die Ergebnisse gespeichert werden. |
| Die Zeile, in der angegeben ist, wie viele Ergebnisse es gibt. |
| Die Ergebnisliste. |
| Ein Ergebnis: dessen Link, Titel und Auszug. Die Suchbegriffe im Auszug stehen in |
| Übereinstimmende Überschriften innerhalb eines Ergebnisses. |
| Der Link zu allen Ergebnissen in einem Dropdown-Menü. |
| Die Schaltfläche, mit der auf der Suchseite weitere Ergebnisse geladen werden. |
| Die Taxonomie-Filterung auf der Suchseite. |
Das hervorgehobene Ergebnis hat die Klasse is-active.
Erstellen Sie Ihr eigenes Suchfeld
Sie können den HTML-Code für das Suchfeld selbst schreiben, um beispielsweise ein eigenes Symbol oder eine eigene Schaltfläche hinzuzufügen oder es in eine andere Struktur einzubinden. Das Suchskript von Paligo findet jedes Element mit der Klasse site-search auf der Seite, verbindet es mit der Suchmaschine des Layouts und füllt die Ergebnisse ein. Ihr Markup muss lediglich die Klassennamen verwenden, nach denen das Skript sucht.
In diesem Beispiel wird das Suchfeld einmal als Makro erstellt und an zwei Stellen verwendet: als Dropdown-Menü in der Kopfzeile jeder Seite und als umfassende Suche auf der Suchergebnisseite.
templates/partials/search-box.html.twig:
{% macro box(mode, id, placeholder, strings) %}
<div class="site-search" data-search-mode="{{ mode }}">
<form class="site-search__form" role="search" method="get" action="search.html">
<input class="site-search__input" type="search" name="q" autocomplete="off"
placeholder="{{ placeholder }}" aria-label="{{ placeholder }}"
{%- if mode == 'dropdown' %} role="combobox" aria-expanded="false" aria-controls="{{ id }}-panel" aria-autocomplete="list"{% endif %}>
<button type="button" class="site-search__clear" hidden aria-label="{{ strings.clearSearch|default('Clear search') }}">×</button>
</form>
<div class="site-search__panel" id="{{ id }}-panel"{% if mode == 'dropdown' %} hidden{% endif %}>
<p class="site-search__status" role="status" aria-live="polite"></p>
<ul class="site-search__results"></ul>
{% if mode == 'dropdown' %}
<a class="site-search__all" hidden></a>
{% else %}
<button type="button" class="site-search__more" hidden>{{ strings.searchMore|default('Load more results') }}</button>
{% endif %}
</div>
{% if mode == 'page' %}
<div class="site-search__facets" hidden></div>
{% endif %}
</div>
{% endmacro %}Das Makro benötigt den Modus (dropdown oder page), eine auf der Seite eindeutige ID, den Platzhaltertext und die Texte des Themes. Die ID verknüpft das Textfeld mit seinen Ergebnissen, sodass Screenreader diese ansagen können.
templates/base.html.twig, wobei die Kopfzeilensuche in einem eigenen Block steht:
{% import 'partials/search-box.html.twig' as search %}
<!doctype html>
<html lang="{{ site.lang }}"{% if site.dir %} dir="{{ site.dir }}"{% endif %}>
<head>
<meta charset="utf-8">
<title>{% block title %}{{ page.title }} | {{ site.title }}{% endblock %}</title>
{{ paligo.head }}
</head>
<body>
<header>
{% block header_search %}
{% if site.search.backend|default('none') != 'none' %}
{{ search.box('dropdown', 'header-search', site.strings.searchPlaceholder|default('Search'), theme.strings) }}
{% endif %}
{% endblock %}
{% include 'partials/language-menu.html.twig' %}
</header>
{% block content %}{% endblock %}
{{ paligo.foot }}
</body>
</html>templates/search.html.twig, wodurch die Suche in der Kopfzeile deaktiviert wird, da die Seite über eine eigene verfügt:
{% extends 'base.html.twig' %}
{% import 'partials/search-box.html.twig' as search %}
{% block header_search %}{% endblock %}
{% block content %}
<main>
<h1>{{ page.title }}</h1>
{{ search.box('page', 'search-page', site.strings.searchPlaceholder|default('Search'), theme.strings) }}
</main>
{% endblock %}Die Suchergebnisseite verwendet die Adresse search.html, die der action des Formulars entspricht. Auch wenn der Leser keine Skripte ausführen kann, öffnet das Formular dennoch die Suchergebnisseite.
Paligo aktiviert das Kontrollkästchen Suche eines Themes, wenn das Theme hochgeladen wird:
Diese Elemente sind erforderlich, und ein fehlendes Element führt zu einem Fehler: ein
<form class="site-search__form">mit einer „action“-Angabe, ein „site-search__input“-Feld mit dem Namen „q“, ein „site-search__panel“ und ein „site-search__results“.Diese Elemente werden empfohlen, und das Fehlen eines Elements gilt als Warnung:
data-search-modemuss aufdropdownoderpagegesetzt sein, außerdem müssensite-search__status,site-search__clear,site-search__allim Dropdown-Menü sowiesite-search__moreundsite-search__facetsauf der Suchseite vorhanden sein.
Übersetze die Suchtexte
Die Suchtexte sind auf Englisch, es sei denn, die Übersetzungsdateien Ihres Themes enthalten diese Schlüssel. Siehe Ein Theme übersetzen.
Schlüssel | Text |
|---|---|
| Der Name der Schaltfläche Löschen. |
| Die Schaltfläche, mit der weitere Ergebnisse geladen werden. |
| Der Link zu allen Ergebnissen. |
| Der Name der Suchergebnisseite. |
| Die Anzahl der Ergebnisse. |
| Die Überschrift der Filter. |
| Wird angezeigt, wenn die Suche nicht geladen werden kann. |
| Wird angezeigt, wenn eine Suche fehlschlägt. |
Seitenelemente aus dem Index ausschließen
Nexus Search indexiert die gesamte Seite. Um einen Teil der Seite, wie beispielsweise ein Navigationsmenü oder eine Fußzeile, aus dem Index auszuschließen, fügen Sie dort data-pagefind-ignore hinzu:
<nav class="sidebar" data-pagefind-ignore>…</nav>