【问题标题】:Sitecore Search Api - How to get formatted UrlSitecore Search Api - 如何获取格式化的 URL
【发布时间】:2016-10-02 14:15:47
【问题描述】:

如何从 Sitecore Lucene 搜索中获取格式化的 url?我创建了一个自定义索引,并在根目录下将其更新为 /sitecore/content/websitename/home。

检索到搜索结果时,URL 会附加https://hostname/websitename/home/sample.aspx。我希望网址为https://hostname/sample.aspx。索引配置中是否有任何设置需要更新?

在 sites.config 中我已经有了 rootPath="/sitecore/content/websitename" startItem="/home"

【问题讨论】:

    标签: search lucene sitecore sitecore8


    【解决方案1】:

    获取url有两种​​方式:

    1. 对于索引中的每个结果,获取项目并获取带有LinkManager 的url,就像您通常对任何项目所做的那样。这确实意味着您需要获取会影响性能的项目。
    2. 在索引中创建一个计算字段以包含 URL。在您的计算域中,确保正在生成正确的链接。如果没有,您可能需要检查您的 url 选项和 Rendering.SiteResolving 设置 (true)。使用调试器验证结果(或使用 Luke 来测试索引)。请记住,如果您将 url 包含在索引中,则在重命名项目时需要更新其他项目(甚至在 url 中使用显示名称时也会更改显示名称)。该更改项的所有子项的 URL 也随之更改。

    【讨论】:

    • 感谢您的提示,我选择了第二个选项。但是,我仍然必须获取上下文站点。这是我已经实现的(如果有人需要): Item item = indexable as SitecoreIndexableItem; if (item != null) { var options = LinkManager.GetDefaultUrlOptions(); options.Site = SiteContext.GetSite("网站");返回 "https" + LinkManager.GetItemUrl(item, options); }
    • 不要使用 url schema 进行硬编码。使用方法获取当前架构: public static string GetScheme() { HttpContext current = HttpContext.Current; if (current != null) return current.Request.Url.Scheme;返回字符串。空; }
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2021-12-29
    相关资源
    最近更新 更多