Sitecore Linkmanager 始终 link 到 Web 数据库 link 甚至从页面编辑器
Sitecore Linkmanager always links to Web Database link even from page editor
您好,我正在尝试此代码
public String GetItemUrl(Item item)
{
Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone();
urlOptions.SiteResolving = true;
return Sitecore.Links.LinkManager.GetItemUrl(item,urlOptions);
}
ViewBag.thisurl = GetItemUrl(item)
然后从 cshtml
a href="@ViewBag.thisURL" .....
当我点击 link 时,它将始终指向 CD 数据库,我无法在页面编辑器中进行编辑。在页面编辑器中单击 link 后,我需要编辑目标。有人可以推荐我吗?
您使用 SiteResolving,是否 运行 CMS 和 CD 在一台服务器上?因此它们具有相同的 web.config 并且站点 web.config 部分中的主机名始终指向 CD。 SiteResolving explained
有多种选择。
1) 创建一个条件,在页面编辑模式下关闭SiteResolving。像这样:
public String GetItemUrl(Item item)
{
Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone();
if (Sitecore.Context.PageMode.IsPageEditor || Sitecore.Context.PageMode.IsPreview)
{
//depend on your site configuration this is a idea
urlOptions.SiteResolving = false;
}
else
{
urlOptions.SiteResolving = true;
}
return Sitecore.Links.LinkManager.GetItemUrl(item,urlOptions);
}
2) 创建您自己的 Sitecore LinkProvider 以更改行为,请参阅此示例 Create a Sitecore LinkProvider to use different LinkManager configurations
您好,我正在尝试此代码
public String GetItemUrl(Item item)
{
Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone();
urlOptions.SiteResolving = true;
return Sitecore.Links.LinkManager.GetItemUrl(item,urlOptions);
}
ViewBag.thisurl = GetItemUrl(item)
然后从 cshtml
a href="@ViewBag.thisURL" .....
当我点击 link 时,它将始终指向 CD 数据库,我无法在页面编辑器中进行编辑。在页面编辑器中单击 link 后,我需要编辑目标。有人可以推荐我吗?
您使用 SiteResolving,是否 运行 CMS 和 CD 在一台服务器上?因此它们具有相同的 web.config 并且站点 web.config 部分中的主机名始终指向 CD。 SiteResolving explained
有多种选择。
1) 创建一个条件,在页面编辑模式下关闭SiteResolving。像这样:
public String GetItemUrl(Item item)
{
Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone();
if (Sitecore.Context.PageMode.IsPageEditor || Sitecore.Context.PageMode.IsPreview)
{
//depend on your site configuration this is a idea
urlOptions.SiteResolving = false;
}
else
{
urlOptions.SiteResolving = true;
}
return Sitecore.Links.LinkManager.GetItemUrl(item,urlOptions);
}
2) 创建您自己的 Sitecore LinkProvider 以更改行为,请参阅此示例 Create a Sitecore LinkProvider to use different LinkManager configurations