Il y a quelques jours je faisais remarquer qu'un module de recherche pour wwstore serait bien pratique, mais je ne mettais pas apperçu que le module était déjà géré par la recherche intégrée de DNN.
Par contre, je pense qu'il y a un petit soucis, j'ai été mettre le nez dans le code et j'ai fais la correction pour mes propres besoins mais cela pourrait peut être en interesser d'autres.
En l'occurrence j'avais plusieurs modules storefront de posés sur mon site : 2 sur la page d'accueil (1 pour afficher les nouveautés et l'autre pour les produits les plus populaires), et 1 autre sur une autre page (en relations avec le module de navigation et permettant d'afficher le détail des produits). Dans le paramétrage de ma boutique j'indiquais que la page de la boutique était ma page permettant d'afficher le détail de mes produits (normal).
Lorsque je lance une recherche en résultat je retrouve autant de lignes de résultat qu'il y a de pages où je trouve le module StoreFront et c'est là qu'il y a soucis. Car pour moi il ne faut pas prendre en compte tous les modules dans la recherche mais uniquement celui se trouvant sur la page boutique (définis dans l'administration) car c'est ce module qui affiche le détail d'un produit, les autres ne peuvent pas le faire.
Voici donc le code rajouté dans la classe ProductController (ProductController.cs) dans la méthode GetSearchItems :
StoreController storeController = new StoreController();
StoreInfo storeInfo = storeController.GetStoreInfo(moduleInfo.PortalID);
if (storeInfo.StorePageID != moduleInfo.TabID) return null; Ce code est placé dès le début de la méthode (avant même d'avoir à récupérer la liste des produits. Une fois mis en place il ne faut bien sur pas oublié de réindexer le site (Hote/Indexation).