2sxc 博客应用帖子和 DNN 搜索
2sxc blog app posts and DNN search
在使用 2sxc 博客应用程序时,我注意到 DNN 搜索结果显示所有 post,但 post 标题的 link 是主博客页面,而不是实际 post link.
示例搜索结果显示:
页面标题:
我是post职称
Link以上标题为:
/博客
应该是:
/blog/post/i-am-a-post-title
通过将以下内容添加到 cshtml 代码来设法修改搜索结果:
@using ToSic.Eav.DataSources
@using ToSic.SexyContent.Search
@using DotNetNuke.Entities.Modules
@functions{
// Prepare the data - get all categories through the pipeline
public override void CustomizeData()
{
}
/// <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<ISearchInfo>> searchInfos, ModuleInfo moduleInfo, DateTime startDate)
{
foreach (var si in searchInfos["Default"])
{
si.QueryString = "post=" + si.Entity.EntityId;
}
}
}
但是我想要显示 UrlKey 而不是 si.Entity.EntityId,知道怎么做吗?
简单 - 只需转换为 DynamicEntity - https://github.com/2sic/2sxc/wiki/DotNet-DynamicEntity:
foreach (var si in searchInfos["Default"])
{
si.QueryString = "post=" + AsDynamic(si.Entity).UrlKey;
}
来自瑞士的爱:)
PS:如果这解决了您的问题,请标记为已回答
foreach (var si in AsDynamic(searchInfos["Default"]))
{
si.QueryString = "post=" + si.UrlKey;
}
将 searchInfo 设为动态实体后,属性 就像 "Title" 一样有效。但是 属性 "UrlKey" 不起作用。
在使用 2sxc 博客应用程序时,我注意到 DNN 搜索结果显示所有 post,但 post 标题的 link 是主博客页面,而不是实际 post link.
示例搜索结果显示:
页面标题: 我是post职称
Link以上标题为: /博客
应该是: /blog/post/i-am-a-post-title
通过将以下内容添加到 cshtml 代码来设法修改搜索结果:
@using ToSic.Eav.DataSources
@using ToSic.SexyContent.Search
@using DotNetNuke.Entities.Modules
@functions{
// Prepare the data - get all categories through the pipeline
public override void CustomizeData()
{
}
/// <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<ISearchInfo>> searchInfos, ModuleInfo moduleInfo, DateTime startDate)
{
foreach (var si in searchInfos["Default"])
{
si.QueryString = "post=" + si.Entity.EntityId;
}
}
}
但是我想要显示 UrlKey 而不是 si.Entity.EntityId,知道怎么做吗?
简单 - 只需转换为 DynamicEntity - https://github.com/2sic/2sxc/wiki/DotNet-DynamicEntity:
foreach (var si in searchInfos["Default"])
{
si.QueryString = "post=" + AsDynamic(si.Entity).UrlKey;
}
来自瑞士的爱:) PS:如果这解决了您的问题,请标记为已回答
foreach (var si in AsDynamic(searchInfos["Default"]))
{
si.QueryString = "post=" + si.UrlKey;
}
将 searchInfo 设为动态实体后,属性 就像 "Title" 一样有效。但是 属性 "UrlKey" 不起作用。