🔍 SimpleSearch für BS5
SimpleSearch (3.1.0-pl) in MODX 3.1.2-pl einrichten (Stand November 2025)
(Basic Search + Bootstrap-5-Menüsuche, eigene Snippets + eigene Chunks)
📦 1. Vorbereitung: eigene Snippets anlegen
Um Updates sicher zu umgehen, kopierst du die beiden SimpleSearch-Snippets:
- Elemente → Snippets
SimpleSearchöffnen → Duplizieren → Name:modxSimpleSearchSimpleSearchFormöffnen → Duplizieren → Name:modxSimpleSearchForm
Ab jetzt werden nur diese beiden Snippets genutzt.
🔧 2. Snippets duplizieren (Optional)
Dupliziere die beiden SimpleSearch-Snippets:
SimpleSearch→modxSimpleSearchSimpleSearchForm→modxSimpleSearchForm
💡 Besonders sinnvoll ist dieses Vorgehen, wenn mehrere Kontexte verwendet werden.
Da jeder Kontext eine eigene Suchseite (mit eigener Ressourcen-ID) und ggf. eigene Einstellungen benötigt, sollten alle Properties ausschließlich im Ressourcen-Aufruf gesetzt werden. Dadurch bleiben die Snippets update-sicher und verursachen keine Kontext-Konflikte.Je nach Fall ist natürlich auch eine automatische Kontext-Umschaltung für die Suche oder ein gemeinsames Suchfeld für alle Kontexte möglich.
📄 3. Ressource „Suche“ erstellen (ID 42)
- Neue Ressource anlegen, Titel:
Suche, Alias:suche - Veröffentlichen, optional nicht im Menü anzeigen
- Inhalt der Ressource:
[[!modxSimpleSearch?
&tpl=`modxSimpleSearchResult`
&containerTpl=`modxSimpleSearchWrapper`
&tplResultEmpty=`modxSimpleSearchResultEmpty`
&perPage=`20`
&showExtract=`1`
&highlightResults=`1`
&highlightClass=`simplesearch-highlight`
&highlightTag=`span`
&urlScheme=`abs`
&pagingType=`default`
&pageTpl=`modxSimpleSearchPageLink`
¤tPageTpl=`modxSimpleSearchCurrentPageLink`
&pagingSeparator=``
]]
🧩 4. Eigene Chunks für Suchausgabe (Bootstrap 5)
4.1 Chunk: modxSimpleSearchWrapper
<div class="my-4">
[[+total:gt=`0`:then=`
<p class="mb-3 small text-muted">
[[+total:abs]] Ergebnis(se) für "[[+query:escape]]" gefunden
</p>
`]]
[[+results:notempty=`
<div class="list-group mb-3">
[[+results]]
</div>
`]]
[[+paging:notempty=`
<nav aria-label="Ergebnisseiten">
<ul class="pagination pagination-sm mb-0">
[[+paging]]
</ul>
</nav>
`]]
</div>
4.2 Chunk: modxSimpleSearchResult
<a href="[[+link:is=``:then=`[[~[[+id]]? &scheme=`abs`]]`:else=`[[+link]]`]]"
class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">
[[+longtitle:default=`[[+pagetitle]]`:escape]]
</h5>
<small class="text-muted">
<i class="bi bi-clock"></i>
[[+publishedon:date=`%Y-%m-%d`]]
</small>
</div>
[[+showExtract:is=`1`:then=`
<p class="mb-1">[[+extract]]</p>
`:else=``]]
</a>
4.3 Chunk: modxSimpleSearchResultEmpty
<div class="alert alert-warning my-4">
<i class="bi bi-search"></i>
Keine Treffer gefunden.
</div>
4.4 Chunk: modxSimpleSearchPageLink
<li class="page-item">
<a class="page-link" href="[[+link]]">[[+text:escape]]</a>
</li>
4.5 Chunk: modxSimpleSearchCurrentPageLink
<li class="page-item active" aria-current="page">
<span class="page-link">[[+text:escape]]</span>
</li>
🔎 5. Suchfeld im Bootstrap-5-Menü
Im Template innerhalb der Navbar, unterhalb des [[!pdoMenu? ...]]-Blocks einfügen:
<form class="d-flex ms-lg-3 mt-3 mt-lg-0"
action="[[~42? &scheme=`abs`]]"
method="get">
<input class="form-control form-control-sm me-2"
type="search"
name="search"
placeholder="Suche…"
aria-label="Suche">
<button class="btn btn-sm btn-outline-light" type="submit">
<i class="bi bi-search"></i>
</button>
</form>
42= ID der Suchseitename="search"= entsprichtsearchIndexinmodxSimpleSearchForm
🧪 6. Funktionstest
- Menü-Suchfeld im Frontend testen (z.B. „mai“).
- Wird auf
/suche.html?search=maiweitergeleitet? - Werden Treffer als Bootstrap-List-Group angezeigt?
- Funktioniert die Paginierung (untere Pagination-Leiste)?
- Führt der Klick auf einen Treffer zur richtigen Seite?
✅ Zusammenfassung
- eigene Snippets
modxSimpleSearch&modxSimpleSearchForm→ update-sicher - eigene Chunks
modxSimpleSearchWrapper,modxSimpleSearchResult,modxSimpleSearchResultEmpty,modxSimpleSearchPageLink,modxSimpleSearchCurrentPageLink - Suchseite mit ID 42
- Bootstrap-5-kompatible List-Group-Ansicht und Pagination
- Menü-Suchfeld direkt in der Navbar
- absolute URLs (
urlScheme=abs) verhindern Pfadfehler - Suchbegriff wird immer sauber escaped (kein XSS)