Geçerli sayfanın mutlak URL'sini facebook/twitter/linkedin hizmetlerinin paylaşımına aktarmak istiyorum. Ben render bir XSLT'den bir sayfanın mutlak url nasıl alabilirimsitecore: bir xslt oluşturmada mutlak url elde edin
2
A
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(.)" />
"Rendering" bir XSLT oluşturması anlamında mı? –
Sean Kearney, yep. –