Bugfix
This commit is contained in:
@@ -14,6 +14,7 @@ Contao 5 – Frontend Module Template
|
||||
placeholder="Suche …"
|
||||
autocomplete="off"
|
||||
>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="meilisearch-clear"
|
||||
@@ -75,16 +76,21 @@ Contao 5 – Frontend Module Template
|
||||
try {
|
||||
const response = await index.search(query, {
|
||||
limit: limit,
|
||||
|
||||
attributesToRetrieve: [
|
||||
'title',
|
||||
'url',
|
||||
'text',
|
||||
'poster',
|
||||
'type'
|
||||
'priority'
|
||||
],
|
||||
|
||||
attributesToHighlight: ['text'],
|
||||
highlightPreTag: '<mark>',
|
||||
highlightPostTag: '</mark>'
|
||||
attributesToCrop: ['text'],
|
||||
cropLength: 50,
|
||||
cropMarker: '…',
|
||||
|
||||
sort: ['priority:desc']
|
||||
});
|
||||
|
||||
renderResults(response.hits);
|
||||
@@ -107,7 +113,7 @@ Contao 5 – Frontend Module Template
|
||||
for (const hit of hits) {
|
||||
|
||||
const article = document.createElement('article');
|
||||
article.className = 'meilisearch-result type-' + (hit.type || 'unknown');
|
||||
article.className = 'meilisearch-result type-' + (hit.type || 'default');
|
||||
|
||||
const link = document.createElement('a');
|
||||
link.href = hit.url || '#';
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
.meilisearch-search {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.meilisearch-search-field {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.meilisearch-search input[type="search"] {
|
||||
width: 100%;
|
||||
max-width: 600px;
|
||||
padding: 0.75rem 2.5rem 0.75rem 0.75rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.meilisearch-clear {
|
||||
position: absolute;
|
||||
right: 0.5rem;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
background: none;
|
||||
border: 0;
|
||||
font-size: 1.25rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.meilisearch-results {
|
||||
margin-top: 0.5rem;
|
||||
border: 1px solid #e0e0e0;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.meilisearch-result {
|
||||
display: grid;
|
||||
grid-template-columns: 60px auto;
|
||||
gap: 1rem;
|
||||
padding: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.meilisearch-result:hover {
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.meilisearch-result img {
|
||||
width: 100%;
|
||||
aspect-ratio: 1 / 1;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meilisearch-extract mark {
|
||||
background: #ddd;
|
||||
}
|
||||
@@ -6,6 +6,7 @@ use Contao\Config;
|
||||
use Contao\CoreBundle\Framework\ContaoFramework;
|
||||
use Doctrine\DBAL\Connection;
|
||||
use Meilisearch\Client;
|
||||
use Meilisearch\Endpoints\Indexes;
|
||||
|
||||
class MeilisearchIndexService
|
||||
{
|
||||
@@ -56,6 +57,9 @@ class MeilisearchIndexService
|
||||
// bewusst ignorieren (Index existiert evtl. noch nicht oder Key ist bereits gesetzt)
|
||||
}
|
||||
|
||||
// ✅ INDEX-SETTINGS SICHERSTELLEN
|
||||
$this->ensureIndexSettings($index);
|
||||
|
||||
// 1. kompletten Index löschen (Settings bleiben erhalten!)
|
||||
$index->deleteAllDocuments();
|
||||
|
||||
@@ -66,7 +70,24 @@ class MeilisearchIndexService
|
||||
$this->indexTlSearchPdf($index);
|
||||
}
|
||||
|
||||
private function indexTlSearch($index): void
|
||||
/**
|
||||
* Relevanz- & Sortierlogik für Meilisearch
|
||||
*/
|
||||
private function ensureIndexSettings(Indexes $index): void
|
||||
{
|
||||
$index->updateSettings([
|
||||
'searchableAttributes' => [
|
||||
'title',
|
||||
'keywords',
|
||||
'text',
|
||||
],
|
||||
'sortableAttributes' => [
|
||||
'priority',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
private function indexTlSearch(Indexes $index): void
|
||||
{
|
||||
$rows = $this->connection->fetchAllAssociative('SELECT * FROM tl_search');
|
||||
if (!$rows) {
|
||||
@@ -104,7 +125,7 @@ class MeilisearchIndexService
|
||||
$index->addDocuments($documents);
|
||||
}
|
||||
|
||||
private function indexTlSearchPdf($index): void
|
||||
private function indexTlSearchPdf(Indexes $index): void
|
||||
{
|
||||
$rows = $this->connection->fetchAllAssociative(
|
||||
'SELECT * FROM tl_search_pdf'
|
||||
|
||||
Reference in New Issue
Block a user