使用 SearchModuleBase 将 Ajax 内容集成到 DNN 搜索索引中的自定义模块中?
Integrate Ajax content in your custom module in DNN's Search Index using SearchModuleBase?
我们有一个自定义产品详细视图模块,当 URL 中的查询字符串包含特定 SKU 并从产品过滤器模块页面导航时,该模块将检索产品数据。当加载详细产品视图模块时,它将检查查询字符串并通过 Ajax.
加载数据
我想集成 DNN 的 SearchModuleBase,以便自定义模块数据显示在我们的自定义搜索结果模块中。
我看过 SearchModuleBase Wiki 和简介:http://www.dnnsoftware.com/wiki/modulesearchbase
如何指定我希望 DNN 的爬虫索引的确切内容?
例如:SKU、页面标题、产品描述?
我还想知道您如何提交产品 Object 的元关键字作为 code-behind 中的标签,可用于搜索结果?
我查看过的所有网站都使用旧的 ISearchable class:http://www.adefwebserver.com/dotnetnukehelp/ISearchable/
这是我目前的代码,但我认为它太基础了,没有指定产品描述、SKU 和页面标题:
public class ProductDetailedViewModuleBase : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
throw new NotImplementedException();
}
}
我已将清单文件更改为可搜索。我必须将 ISearchable、IPortable 和 IUpgradeable 更改为 Searchable、Portable 和 Upgradeable。
我也在尝试添加 SearchModuleBase 但我遗漏了一些东西:
这是生成产品信息的前端代码:
您在清单中指定为 businessControllerClass 的完全限定 class 和命名空间是实现 ModuleSearchBase 的那个。
我应该看到这样的东西:
namespace MyModule.Modules.ProductDetailedView.Components
{
public class FeatureController : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
// TODO: convert your Product info object list to a SearchDocument object list and return
}
}
}
编译并实施此方法后,您可以转到“设置”>“计划”和运行 "Site Crawler" 计划任务。将您的调试器附加到 DNN 进程,当任务执行时,您的 GetModifiedSearchDocuments 方法应该被命中。
有关此主题的包含示例代码的完整教程,您可以订阅 dnnhero.com and check out my complete search tutorial。
GetModifiedSearchDocuments
的代码存根就是这样。它没有完全实施。您必须用代码替换 throw new NotImplementedException()
以填充您将 return 的 SearchDocument
个对象的列表。 SearchDocument
的属性是您为希望爬虫索引的数据分配值的地方。
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
var searchDocs = new List<SearchDocument>();
var productList = GetProductList(); //you write this method to return a list of your products
foreach(var product in productList)
{
var searchDoc = new SearchDocument
{
IsActive = true,
CultureCode = moduleInfo.CultureCode,
...
Title = product.YourProductName,
Description = product.YourProductDescription,
Body = product.YourProductDescription,
};
searchDocs.Add(searchDoc);
}
return searchDocs;
}
你说的部分:
I am also trying to add the SearchModuleBase
, but I am missing something
我不确定您要完成什么,但您不需要在那里进行任何更改即可获得您的自定义内容索引。
我们有一个自定义产品详细视图模块,当 URL 中的查询字符串包含特定 SKU 并从产品过滤器模块页面导航时,该模块将检索产品数据。当加载详细产品视图模块时,它将检查查询字符串并通过 Ajax.
加载数据我想集成 DNN 的 SearchModuleBase,以便自定义模块数据显示在我们的自定义搜索结果模块中。
我看过 SearchModuleBase Wiki 和简介:http://www.dnnsoftware.com/wiki/modulesearchbase
如何指定我希望 DNN 的爬虫索引的确切内容? 例如:SKU、页面标题、产品描述?
我还想知道您如何提交产品 Object 的元关键字作为 code-behind 中的标签,可用于搜索结果?
我查看过的所有网站都使用旧的 ISearchable class:http://www.adefwebserver.com/dotnetnukehelp/ISearchable/
这是我目前的代码,但我认为它太基础了,没有指定产品描述、SKU 和页面标题:
public class ProductDetailedViewModuleBase : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
throw new NotImplementedException();
}
}
我已将清单文件更改为可搜索。我必须将 ISearchable、IPortable 和 IUpgradeable 更改为 Searchable、Portable 和 Upgradeable。
我也在尝试添加 SearchModuleBase 但我遗漏了一些东西:
这是生成产品信息的前端代码:
您在清单中指定为 businessControllerClass 的完全限定 class 和命名空间是实现 ModuleSearchBase 的那个。
我应该看到这样的东西:
namespace MyModule.Modules.ProductDetailedView.Components
{
public class FeatureController : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
// TODO: convert your Product info object list to a SearchDocument object list and return
}
}
}
编译并实施此方法后,您可以转到“设置”>“计划”和运行 "Site Crawler" 计划任务。将您的调试器附加到 DNN 进程,当任务执行时,您的 GetModifiedSearchDocuments 方法应该被命中。
有关此主题的包含示例代码的完整教程,您可以订阅 dnnhero.com and check out my complete search tutorial。
GetModifiedSearchDocuments
的代码存根就是这样。它没有完全实施。您必须用代码替换 throw new NotImplementedException()
以填充您将 return 的 SearchDocument
个对象的列表。 SearchDocument
的属性是您为希望爬虫索引的数据分配值的地方。
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
var searchDocs = new List<SearchDocument>();
var productList = GetProductList(); //you write this method to return a list of your products
foreach(var product in productList)
{
var searchDoc = new SearchDocument
{
IsActive = true,
CultureCode = moduleInfo.CultureCode,
...
Title = product.YourProductName,
Description = product.YourProductDescription,
Body = product.YourProductDescription,
};
searchDocs.Add(searchDoc);
}
return searchDocs;
}
你说的部分:
I am also trying to add the
SearchModuleBase
, but I am missing something
我不确定您要完成什么,但您不需要在那里进行任何更改即可获得您的自定义内容索引。