Criar link para Sitecore item
Pergunta
Eu sei que eu tenho feito isso antes, mas eu não consigo lembrar de onde ou como.
Eu quero criar um link para um item em Sitecore. Este código:
Sitecore.Data.Items.Item itm = Sitecore.Context.Database.GetItem(someID);
return itm.Paths.Path.ToString();
Produz o seguinte texto:
http://localhost/sitecore/content/Home/Item1/Item11/thisItem
Eu gostaria de ter essa string em vez disso:
http://localhost/Item1/Item11/thisItem.aspx
O que é a maneira correta para obter o caminho para o item? Neste caso, eu não posso usar um link Sitecore normal:
Sitecore.Web.UI.WebControls.Link
Solução
Você está precisando de um presente, supondo que você está correndo Sitecore v6 ou qualquer coisa mais recente (testado com 8,2-6, deve trabalhar com 9 também):
Sitecore.Links.LinkManager.GetItemUrl(item);
Outras dicas
Se você ainda está usando Sitecore 5.3, você pode usar este. Lembre este método está obsoleto em Sitecore 6.0.
string url = item.Paths.GetFriendlyUrl();
Seu Controle Web:
<asp:HyperLink ID="HyperLinkItem" runat="server">
Item
</asp:HyperLink>
Seu código:
var homeItem = Sitecore.Context.Database.GetItem("/sitecore/content/Home");
HyperLinkItem.NavigateUrl = Sitecore.Links.LinkManager.GetItemUrl(homeItem);
Você pode render ligação item como abaixo:
Sitecore.Data.Items.Item itm = Sitecore.Context.Database.GetItem(someID);
return Sitecore.Links.LinkManager.GetItemUrl(itm);
Tente este
<asp:HyperLink ID="hlItem" runat="server">
</asp:HyperLink>
aspx.cs
Sitecore.Data.Items.Item itm = Sitecore.Context.Database.GetItem("/sitecore/content/Home");
hlItem.Navigateurl =sitecore.links.linkmanager.getitemurl(itm);
Você pode fazer por isso também:
Item.Paths.FullPath
É mesmo como:
Sitecore.Links.LinkManager.GetItemUrl(item);