如何解决如何使用 2sxc 应用程序获取 DNN 搜索结果以显示文章链接?
我有一个 2sxc 应用程序,它是一个资源列表。它有一个列表,每个项目都转到一个详细信息视图,该视图具有基于标题的唯一 URL。 (URL 字段是内容类型中的一个字段)。类似于 domain.com/resources/details/my-amazing-resource。
当用户在网站上搜索“amazing”时,核心 DNN 搜索结果模块会显示应用程序的结果,包括“My Amazing Resource”项目,但它实际上并未链接到 domain.com/resources/详细信息/我的惊人资源。它只是链接到 domain.com/resources/。
如何才能使搜索结果实际指向应用中项目的唯一 URL?这可能吗? DNNSharp Search Boost 会比核心 DNN 搜索模块更好吗?
解决方法
自从我修改它已经一年多了,但是听起来您正在寻找的东西需要编码。 Dnn Search 将自动从 2sxc 模块中获取它所能获取的信息,但是如果您需要自定义或改进返回的内容,那么您需要使用 CustomizeSearch() 或 CustomizeData() - 我不确定我是否见过任何像样的例子,但是我确实知道 the FAQs App 会这样做,并且必须有某种工作示例。这是在 2sxc Docs 中进行统计的地方, CustomizeSearch()。
,我建议使用博客或新闻应用中的示例。
,根据 Jeremy 和 Daniel 的建议,我最终更新了我的 _resourcelist.cshtml 文件,使其代码如下所示:
@inherits ToSic.Sxc.Dnn.RazorComponent
@using ToSic.Razor.Blade;
@using ToSic.Eav.Run;
@using ToSic.Sxc.Dnn.Run;
@using ToSic.Sxc.Search;
@functions
{
/// <summary>
/// Populate the search - ensure that each entity has an own url/page
/// </summary>
/// <param name="searchInfos"></param>
/// <param name="moduleInfo"></param>
/// <param name="startDate"></param>
public override void CustomizeSearch(Dictionary<string,List<ISearchItem>> searchInfos,IContainer moduleInfo,DateTime beginDate)
{
foreach (var si in searchInfos["Default"])
{
// tell the search system what url it should use in the result
si.QueryString = "resource/" + AsDynamic(si.Entity).Link;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。