Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sitecore链接url编码(XSLT)_Xslt_Sitecore - Fatal编程技术网

Sitecore链接url编码(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中找到该部分并添加: <

我使用以下代码在xslt中生成指向我的项目的链接:

<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”放入,则解决方案会起作用。我希望有一个更通用的解决方案。如果我找不到更好的解决办法,我会认为你的答案是正确的。