我在Sitecore中遇到ExpandDynamicLinks
问题。
我使用以下方法将true
传递给siteResolving
。问题是网站没有得到承诺的解决。
bodyExpandedLinks = Sitecore.Links.LinkManager.ExpandDynamicLinks(email.Body.Value, true);
我确实在我的提供商中设置了永远不会解析该网站的原因,因为这是我想要的整个网站,除了上面的这个电子邮件正文。
alwaysIncludeServerUrl="false"
有人知道如何强迫它吗?
谢谢...
答案 0 :(得分:0)
我找到了另一种方法。
我确实添加了一个额外的链接提供程序,具有相同的配置,但是我设置为true的alwaysIncludeServerUrl。
<add name="sitecore_expandlinks" alwaysIncludeServerUrl="true" (...) >
然后我使用API获得了提供者。
bodyExpandedLinks = Sitecore.Links.LinkManager.Providers["sitecore_expandlinks"].ExpandDynamicLinks(email.Body.Value, true);
如果其他人有更具凝聚力的选择,我将非常感激
感谢。
答案 1 :(得分:0)
一个选项可能是在调用AlwaysIncludeServerUrl
之前检查ExpandDynamicLinks
是否设置为False。如果它为False,您可以显式调用Sitecore.Links.UrlOptions.DefaultOptions.AlwaysIncludeServerUrl = true
,然后在调用ExpandDynamicLinks
后将其设置为False。
答案 2 :(得分:0)
我知道这篇文章是用sitecore7标记的,但我想分享Sitecore 8.1的解决方案。我不知道它是否适用于7。它改编自Sitecore.Links.LinkProvider.ExpandDynamicLinks()
:
var linkParser = new LinkProvider.LinkParser();
var urlOptions = LinkManager.Provider.GetDefaultUrlOptions(); // returns a clone.
urlOptions.SiteResolving = true;
urlOptions.AlwaysIncludeServerUrl = true;
text = linkParser.ExpandDynamicLinks(text, urlOptions);
这不适用于媒体链接,因为Sitecore.Links.DynamicLink.BuildMediaUrl()
和Sitecore.Links.MediaLinkExpander.Expand()
完全忽略了他们的UrlOptions参数。如果您需要完整的媒体网址,请使用以下代码包装您的代码:
using (new SettingsSwitcher("Media.AlwaysIncludeServerUrl", "true"))
{
phrase = linkParser.ExpandDynamicLinks(phrase, urlOptions);
}