Hallo Zusammen,
Folgendes Problem ist bei mir aufgetreten (Version 2.11.6):
1) Ich habe ein eigenes Content Element erstellt, welches auf einer Seite (home.html) eingefügt ist. Mit Hilfe von auto_item (In Einstellungen wurde es aktiviert) verwende ich schöne URLs:
http://localhost/home/firma1.html
http://localhost/home/firma2.html
usw.
Das Content Element funktioniert einwandfrei -> also im auto_item steht entweder firma1 oder firma2 drinnen.
2) Gleichzeitig will ich jetzt aber auch meine neue 2 Seiten in den Suchindex einbauen, dafür habe ich den HOOK getSearchablePages verwendet. Die Seiten werden jetzt zwar beim Klicken auf System->Systemwartung->"Suchindex neu aufbauen" aufgelistet, aber in der tl_search Tabelle nicht eingetragen.
Ich habe deshalb den Code genau angeschaut und bin auch folgendes Problem gestoßen (FrontendTemplate Output Funktion).
Am Ende dieser output Funktion wird $this->Search->indexPage aufgerufen (Output in der tl_search Tabelle speichern wenn nötig). Hier wird ohne obige Änderung aber beim url-Parameter http://localhost/home.html statt http://localhost/home/firma1.html übergeben (wenn ich die Seite http://localhost/home/firma1.html aufrufe), wodurch immer nur die falsche URL im Index gespeichert wurde. Aus meinen zwei Seiten home/firma1.html und home/firma2.html haben beide als URL home.html, wodurch diese auch nur einmal in tl_search eingetragen wird.
Mit folgenden 2 Änderungen (fett) in der FrontendTemplate output Funktion funktioniert alles einwandfrei:
Code:
public function output()
{
global $objPage;
// Ignore certain URL parameters
$arrIgnore = array('id', 'file', 'token', 'page', 'day', 'month', 'year');
//LUDI
/*if ($GLOBALS['TL_CONFIG']['useAutoItem'])
{
$arrIgnore[] = 'auto_item';
}*/
if ($GLOBALS['TL_CONFIG']['addLanguageToUrl'])
{
$arrIgnore[] = 'language';
}
$strParams = '';
// Rebuild the URL to eliminate duplicate parameters
foreach (array_keys($_GET) as $key)
{
if (!in_array($key, $arrIgnore))
{
if ($GLOBALS['TL_CONFIG']['useAutoItem'] && (in_array($key, $GLOBALS['TL_AUTO_ITEM']) || $key =='auto_item'))
{
$strParams .= '/' . $this->Input->get($key);
}
else
{
$strParams .= '/' . $key . '/' . $this->Input->get($key);
}
}
}
Die 1. if Bedingung (if ($GLOBALS['TL_CONFIG']['useAutoItem'])) musste auskommentiert werden, ansonsten wird in meinem Fall der Parameter firma1 bzw. firma2 immer entfernt. Weiters muss der Parmeter auch im "// Rebuild the URL to eliminate duplicate parameters" Bereich wieder korrekt zusammengebaut werden --> Änderung 2.
Jetzt meine konkrete Frage:
Verwende ich es falsch, oder gibt es in der aktuellen Version ein Problem mit dem Suchindex, wenn man auto_item verwendet?
Mit obigen 2 Anpassungen funktioniert jetzt bei mir alles genau so wie ich es mir erwartet habe.
Schöne Grüße
Ludi
Lesezeichen