我们在DotNetNuke网站上有自己的自定义搜索输入模块,搜索结果模块和用于显示产品的模块。
当前,我们通过查询字符串将搜索词从“搜索输入”模块发送到“自定义搜索结果模块”页面,该查询字符串将通过Ajax显示来自我们ERP系统的产品。我现在也想包括DNN爬网的结果(页面等)。
我还想知道我们如何让DNN网站搜寻器在使用Ajax的自定义模块上搜寻页面内容。例如:我们有一个产品过滤器模块,它将从我们的ERP系统中检索结果:https://www.parrot.co.za/Product-Categories/Product-Filter?Category=126&whiteboards
我在查看此页面时未回答我的特定问题:http://www.dnnsoftware.com/community-blog/cid/154913/integrating-with-search-introducing-modulesearchbase
答案 0 :(得分:2)
Q)如何将搜索查询发送到DNN端以返回结果?
A)在您的搜索结果服务中调用SearchController的ModuleSearch方法以获取DNN搜索结果:
using DotNetNuke.Services.Search.Controllers;
using DotNetNuke.Services.Search.Entities;
...
var query = new SearchQuery
{
PageSize = request.PageSize,
PageIndex = (request.PageNum > 0 ? request.PageNum : 1),
SortField = SortFields.Relevance,
SortDirection = SortDirections.Descending,
KeyWords = request.Keyword,
Tags = new List<string>() { "tag1", "tag2" },
PortalIds = new List<int> { PortalSettings.PortalId },
WildCardSearch = true,
};
var searchResults = SearchController.Instance.ModuleSearch(query);
从那里,您可以从searchResults.Results列表中获得DNN搜索结果,并返回到搜索结果模块用户界面。
Q)我们如何让DNN网站搜寻器在我们的自定义模块上搜寻内容。
A)通过在自定义模块中实现ModuleSearchBase类,可以为自定义搜索结果数据提供DNN站点爬网程序。这允许自定义数据进入DNN搜索结果,因此您可以利用上述查询API来获取数据。
这是此讨论的重要主题。如果您选择订阅,除了获得other posts之外,您还可以看到full tutorial from DNNHero.com我在该主题上所做的事情。