Sitecore链接url编码(XSLT)
我使用以下代码在xslt中生成指向我的项目的链接:Sitecore链接url编码(XSLT),xslt,sitecore,Xslt,Sitecore,我使用以下代码在xslt中生成指向我的项目的链接: <sc:link select="."> <xsl:value-of select="sc:fld('SomeField',.)" /> </sc:link> 不幸的是,当项目名称中包含空格时,生成的URL包含空格,而不是%20。 我希望有一些设置,我可以调整来解决这个问题。有人知道解决方案吗?一个解决方案是使用Sitecores编码器和名称替换器 在web.config中找到该部分并添加: <
<sc:link select=".">
<xsl:value-of select="sc:fld('SomeField',.)" />
</sc:link>
不幸的是,当项目名称中包含空格时,生成的URL包含空格,而不是%20。
我希望有一些设置,我可以调整来解决这个问题。有人知道解决方案吗?一个解决方案是使用Sitecores编码器和名称替换器 在web.config中找到该部分并添加:
<replace mode="on" find=" " replaceWith="-" />
此处的更多信息:一种解决方案是使用Sitecores编码器和NameReplacers 在web.config中找到该部分并添加:
<replace mode="on" find=" " replaceWith="-" />
更多信息请点击此处:只需使用“翻译”功能:
<sc:link select=".">
<xsl:value-of select="sc:fld('SomeField',translate(., ' ', '-'))"/>
</sc:link>
只需使用“翻译”功能:
<sc:link select=".">
<xsl:value-of select="sc:fld('SomeField',translate(., ' ', '-'))"/>
</sc:link>
回答我自己的问题,因为我比Mark更喜欢我的解决方案 我已将公共静态方法
公共静态字符串UrlPathEncode(string)
添加到作为xsl扩展类添加的类中:
public static string UrlPathEncode(string url)
{
return HttpUtility.UrlPathEncode(url);
}
将此添加到web.config:
<xslExtensions>
<extension mode="on" type="MyProject.Xsl.XslHelper, MyProject"
namespace="http://www.myproject.net/sc" singleInstance="true" />
..
..
添加对xslt文件的引用:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mp="http://www.myproject.net/sc"
..
回答我自己的问题,因为我比Mark更喜欢我的解决方案
我已将公共静态方法公共静态字符串UrlPathEncode(string)
添加到作为xsl扩展类添加的类中:
public static string UrlPathEncode(string url)
{
return HttpUtility.UrlPathEncode(url);
}
将此添加到web.config:
<xslExtensions>
<extension mode="on" type="MyProject.Xsl.XslHelper, MyProject"
namespace="http://www.myproject.net/sc" singleInstance="true" />
..
..
添加对xslt文件的引用:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mp="http://www.myproject.net/sc"
..
谢谢!不幸的是,这使得带有实际破折号的项目无法访问。SITECORE将URL中的破折号转换回空间,因此不会考虑带有破折号的项目(有一种解决方案需要一些代码)。但是,如果将replaceWith=“%20”放入,则解决方案会起作用。我希望有一个更通用的解决方案。如果我找不到更好的解决办法,我会把你的答案记为正确的。谢谢!不幸的是,这使得带有实际破折号的项目无法访问。SITECORE将URL中的破折号转换回空间,因此不会考虑带有破折号的项目(有一种解决方案需要一些代码)。但是,如果将replaceWith=“%20”放入,则解决方案会起作用。我希望有一个更通用的解决方案。如果我找不到更好的解决办法,我会认为你的答案是正确的。