Tweak CRM Sitemap, чтобы иметь разные URL-навигации для разных сред

Мы хотим иметь другой URL-адрес подрайона Sitemap, чтобы файл Sitemap мог быть независимым от сред и не беспокоиться, когда мы обновляем среды с более высокого региона на более низкий. Даже развертывания могут быть безошибочными и могут избежать ручного этапа действий после развертывания.

Dev:

<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" />

Есть идеи сделать это?

1 ответ

Решение

В итоге я сделал этот обходной путь, так как мы не можем передать динамический URL-адрес переменной в файл Sitemap.

1. Создайте подобласть с URL для пользовательского веб-ресурса HTML, как показано ниже:

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

2. Просто используйте содержимое ниже, чтобы открыть новое окно на основе 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();

(Источник)

Другие вопросы по тегам