Je suis actuellement confronté à un problème de taille avec le moteur de recherche. J'ai pour le moment développé un module permettant d'ajouter des fiches produits détaillées et je dispose d'une page affichant les détails de cette fiche produit. Seulement, ma page attend en paramètre GET l'id de mon produit, l'url est donc de la forme suivante :
monsite.com/fiche-produit.html?id=1
J'ai donc naturellement voulu que le moteur de recherche indexe les pages de mes produits. J'ai donc utilisé le Hook "getSearchablePages" comme suit :
Code : Tout sélectionner
class HookSearchProducts extends Frontend
{
public function addProductPages($arrPages, $intRoot=0)
{
$objArticle = $this->Database->query("SELECT * FROM tl_produits");
$domain = $this->Environment->base;
while ($objArticle->next())
{
$newPages[] = $domain . "fiche-produit/id/" . $objArticle->id . ".html";
}
$arr = array_merge($arrPages, $newPages);
return $arr;
}
}
Le seul problème est... que ça ne fonctionne pas. Lorsque je reconstruis manuellement l'index dans le back-office dans "Maintenance du système", toutes mes pages produits sont correctement listées, mais en réalité, aucune d'entre elles n'apparaît dans la table "tl_search", à l'exception de la page seule, sans paramètre GET.
Par contre, les mots de ces pages sont correctement indexées, puisque, si je fais une recherche portant sur un des mots présents dans une fiche produit, j'obtiens une liste de résultats dont le premier pointe sur la page fiche-produit.html (sans paramètres GET, ce qui n'affiche, par conséquent, pas la fiche produit).
Existe-t-il une solution miracle qui pourrait résoudre mon souci ?
Merci d'avance à ceux qui prendront le temps d'étudier le souci.