调整 CRM 站点地图,为不同的环境提供不同的 URL 导航

Tweak CRM Sitemap to have different URL navigations for different environments

我们希望有不同的站点地图子区域Url,这样站点地图就可以独立于环境并且在我们从较高区域刷新环境到较低区域时无忧。即使是部署也可以没有错误并且可以避免 post 部署 activity 中的手动步骤。

开发:

<SubArea Id="nav_hub" ResourceId="Hub_SubArea_Title" DescriptionResourceId="Hub_SubArea_Description" 
   ToolTipResourseId="Hub_SubArea_ToolTip" Icon="/_imgs/Hub_32.png" 
     Url="http://mydevhub.com/home.aspx" AvailableOffline="false" />

UAT:

<SubArea Id="nav_hub" ResourceId="Hub_SubArea_Title" DescriptionResourceId="Hub_SubArea_Description" 
    ToolTipResourseId="Hub_SubArea_ToolTip" Icon="/_imgs/Hub_32.png" 
       Url="http://myuathub.com/home.aspx" AvailableOffline="false" />

有什么想法吗?

我最终采用了此解决方法,因为我们无法将动态变量 url 传递给 Sitemap。

1.Created 子区域 url 自定义 HTML 网络资源如下:

$webresource:pub/Scripts/External/navigation.html

2.Just 使用以下内容打开一个新的 window 基于 org url:

<html><head>
<script src="../../../ClientGlobalContext.js.aspx" type="text/javascript"></script>
<script language="javascript">
var crmUrl = parent.Xrm.Page.context.getClientUrl();

if (crmUrl.indexOf('devinstance.crm.dynamics.com') > 0)
            parent.window.open('http://mydevhub.com/home.aspx');

if (crmUrl.indexOf('uatinstance.crm.dynamics.com') > 0)
            parent.window.open('http://myuathub.com/home.aspx');

</script>
</head><body>
</body></html>

万一其他人登陆这里(并且因为我还不能发表评论)所提供的答案已被弃用。

实现此目的的新方法是

var globalContext = Xrm.Utility.getGlobalContext();
globalContext.getClientUrl();

(Source)