2010-11-22 13 views

cevap

4

En azından bu bir .NET sublayout yapılır nasıl söyleyebilirim, emin değilim eğer yardımcı olur:

Sitecore.Links.UrlOptions urlOptions = new Sitecore.Links.UrlOptions(); 
urlOptions.AlwaysIncludeServerUrl = true; 
string url = Sitecore.Links.LinkManager.GetItemUrl(Sitecore.Context.Item, urlOptions); 

diğer Set Uygun olan urlOptions seçenekleri.

Mutlu kodlama.

4

Bunun eski bir soru olduğunu anlıyorum, ama verilen cevap gerçekten tam bir resim değil. Bunu işlemek için bir XSLT uzantısı inşa edebilirsiniz:

public class XslExtensions : Sc.Xml.Xsl.XslHelper 
{ 
    public string GetUrl(XPathNodeIterator iterator) 
    { 
     Sc.Data.Items.Item item = this.GetRequiredItem(iterator); 
     return item.GetUrl(); // Extension method for Item that returns the URL as a string 
    } 

    public Sc.Data.Items.Item GetRequiredItem(XPathNodeIterator iterator) 
    { 
     Sc.Diagnostics.Assert.IsNotNull(iterator, "iterator"); 

     if (!iterator.MoveNext()) 
     { 
      XsltException ex = new XsltException("No iterator."); 
      Sc.Diagnostics.Log.Error(ex.Message, ex, this); 
      throw ex; 
     } 

     Sc.Data.Items.Item item = this.GetItem(iterator); 

     if (item == null) 
     { 
      XsltException ex = new XsltException("No item."); 
      Sc.Diagnostics.Log.Error(ex.Message, ex, this); 
      throw ex; 
     } 

     return item; 
    } 
} 

Sonra <xslExtensions> düğüme yukarıda tutan sınıf eklemek gerekir:

<extension mode="on" type="MyProject.XslExtensions, MyProject" namespace="http://myproject.com/extensions" singleInstance="true" /> 

Ve nihayet yöntemi kullanabilirsiniz. İlk referans uzantıları ...

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:sc="http://www.sitecore.net/sc" 
    xmlns:sql="http://www.sitecore.net/sql" 
    xmlns:myp="http://myproject.com/extensions" 
    exclude-result-prefixes="sc sql myp"> 

Sonra kullan!

<xsl:value-of select="myp:GetUrl(.)" />