Hallo zusammen,
ich bin gerade dabei eine Erweiterung für Contao zu schreiben und hänge nun am Suchindex. Für den Hook getSearchablePages habe ich die folgende Klasse erstellt:
Die URLs werden richtig erzeugt und vom Indexer auch aufgerufen. Zumindest wird im Backend beim manuellen erzeugen des Indexes alles richtig angezeigt und wenn ich diese URL dann aufrufe, wird meine Webseite auch richtig angezeigt (inklusive dem Inhalt, den ich im ContentElement erzeuge):PHP-Code:
class Bstv_archive extends \Frontend
{
/**
* Add items to the indexer
*
* @param array $arrPages
* @param integer $intRoot
* @param boolean $blnIsSitemap
*
* @return array
*/
public function getSearchablePages($arrPages, $intRoot=0, $blnIsSitemap=false, $strLanguage=null)
{
//get years:
$sql = "SELECT * FROM tl_bstv_year order by year";
$result = $this->Database->prepare($sql)->execute();
$objParent = \Contao\PageModel::findWithDetails(7);
$domain = ($objParent->rootUseSSL ? 'https://' : 'http://') . ($objParent->domain ?: \Environment::get('host')) . TL_PATH . '/';
// Walk through each year
if ($result !== null)
{
while ($result->next())
{
//print $this->generateFrontendUrl($objParent->row(), "/year/".$result->year."");
//$arrPages[] = "index.php";//$this->generateFrontendUrl($objPage->row(), "/year/".$result->year."");
$sql = "SELECT * FROM tl_bstv_month JOIN tl_bstv_year ON tl_bstv_year.id = tl_bstv_month.pid WHERE `year` = '".$result->year."' order by month";
$result_month = $this->Database->prepare($sql)->execute();
while ($result_month->next())
{
$arrPages[] = $domain . $this->generateFrontendUrl(array("alias" => "archiv"), "/year/".$result->year."/month/".$result_month->month);
}
}
}
return $arrPages;
}
}
Nun habe ich allerdings folgende Probleme:
- Woher bekomme ich den Seiten-Alias, den ich im oberen Code manuell eingetragen habe: array("alias" => "archiv") ?
- Die Inhalte auf den Seiten werden nicht indexiert. In den Datenbanktabellen tl_search und tl_search_index tauchen die Inhalte der Seiten nicht auf. Und wenn ich nach den Inhalten suche, bekomme ich kein Ergebis.
Wer kann mir dabei helfen?
Edit: auch das PraentObject erzeuge ich ja mit der manuellen ID der Seite, auf der mein Inhaltselement liegt: "\Contao\PageModel::findWithDetails(7);" Also ich bräuchte wohl auch irgendwie die ID der Seite. Bzw. aus der ID kriege ich bestimmt auch den Alias irgendwie raus .
MfG, Daniel
Lesezeichen