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
Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top