Willkommen im neuen Forum von concrete5.de.
Die Anmeldung ist ab dem 15.10.2020 nur noch mit E-Mail Adresse und Passwort möglich. Eine Anmeldung mit Benutzername ist nicht mehr möglich.

Diese Nachricht löschen.
Anhang entfernen?
Zurück zur Themenliste
T
tts 0.png 18.06.2012 18:23

Seitenattribute in Suchergebnissen

Hi, wenn man ein eigenes Seitenattribut hinzufügt, kann man ja festlegen, ob der Inhalt dieses Attributes in den Suchindex aufgenommen wird (über die Checkbox "Content included in sitewide page search index."). Ich habe ein neues Seitenattribut (ein Textfeld) hinzugefügt und die Checkbox angehakt. Wenn ich nun in der Volltextsuche (Search Block) nach einem Begriff suche, der in meinem Textfeld vorkommt, wird die entsprechende Seite in den Suchergebnissen angezeigt. Das ist ja schon mal gut! Allerdings wird nur der Seitentitel und die URL angezeigt. Der Suchbegriff selbst taucht in den Suchergebnissen nirgends auf. Es wäre gut, wenn der Inhalt des Attributes auch in den Suchergebnissen erscheinen würde. Kann mir jemand sagen, welche Anpassungen dafür notwendig sind? Vielen Dank! Karl
R
Remo 0.png 18.06.2012 19:51
Hi Karl ganz so einfach ist das nicht. Angenommen du hast ein Attribut vom Typ "address". In diesem Fall hast du ja mehrere Werte welche du jeweils eingibst. Die Suchfunktion ist so schlau und durchsucht auch dann sämtliche Werte. Wenn du aber einen Anriss davon im Suchergebnis ausgeben willst, ist's für concrete5 etwas schwierig zu wissen, was du wirklich ausgeben willst. Vermutlich musst du hier spezifisch das ausgeben was du willst, besonders generisch wird's halt nicht.. Im Standard wird's hier generiert: /concrete/blocks/search/view.php Dort findest du diese Schlaufe: <?php foreach($results as $r) { </code> via $r kannst du dir ein Page Objekt holen und dort das gewünschte Attribut ausgeben, du müsstes aber natürlich noch prüfen, ob's auch wirklich für deine Suchfunktion relevant ist. Da könntest du aber die Funktion "highlightedExtendedMarkup" verwenden, Beispiel findest du in view.php ;-) Die erweiterte Schlaufe könnte dann irgendwie so aussehen: <?php foreach($results as $r) { $p = Page::getByID($r->getID()); echo $p->getAttribute('meta_title'); ... Aber bitte nicht vergessen die Datei aus dem Core rauszulösen, im Ordner /concrete soll man ja nichts verändern, ansonsten gibt's Probleme beim nächsten Update!
T
tts 0.png 19.06.2012 11:37
Optimal, Remo! Ich hab's jetzt mal so gelöst: <?php $page = Page::getByID($r->getID()); $customAttribute = $page->getAttribute('custom_attribute'); $customAttributeLC = mb_strtolower($customAttribute); $queryLC = mb_strtolower($query); ?> <?php if (strpos($customAttributeLC, $queryLC) !== false): ?>

Custom Attribute: <?php echo $this->controller->highlightedExtendedMarkup($customAttribute, $query); ?>

<?php endif; ?> Hab's getestet: Funktioniert genau so wie ich's mir vorstelle! Besonders generisch muss es in diesem Fall gar nicht sein. Bei künftigen Updates gibt's auch keine Probleme - ich verwende ohnehin ein Custom Template für den Search Block. Dank dir ganz herzlich!

Nachricht hinzufügen