如何使用 2sxc 应用程序获取 DNN 搜索结果以显示指向文章的链接?

How do I get DNN Search results to display links to articles with a 2sxc app?

我有一个 2sxc 应用程序,它是一个资源列表。它有一个列表,每个项目都会转到一个详细信息视图,该视图具有基于标题的唯一 URL。 (URL 字段是内容类型中的一个字段)。像这个域名。com/resources/details/my-amazing-resource.

当用户在网站上搜索“amazing”时,核心 DNN 搜索结果模块会显示应用程序的结果,包括“My Amazing Resource”项,但实际上 link域。com/resources/details/my-amazing-resource。它只是 links 到域。com/resources/.

如何才能使搜索结果实际指向应用程序中项目的唯一 URL?这可能吗?在这方面,DNNSharp Search Boost 会比核心 DNN 搜索模块更好吗?

我修改它已经一年多了,但听起来您正在寻找的东西需要编码。 Dnn Search 将自动从 2sxc 模块中获取它可以获取的内容,但是如果您需要自定义或改进返回的内容,那么您需要 CustomizeSearch() 或 CustomizeData() - 我不确定我是否见过任何像样的示例,但是我知道 the FAQs App 会这样做,并且必须有某种工作示例。这是 2sxc 文档中统计的地方, 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;
        }
    }
}