是否有任何扩展方法可用于 Sitecore XSLT 渲染以帮助显示 NameValueList 字段类型(它们的值),或者我是否需要为此操作创建自己的扩展方法?
问问题
282 次
1 回答
2
没有用于显示来自 NameValueList 字段的数据的内置扩展方法。只有真正喜欢的才会开箱即用。
您可以使用类似的东西构建自己的。为自定义渲染代码创建一个新类。
namespace Sitecore7.Custom
{
public class XslExtensions : Sitecore.Xml.Xsl.XslHelper
{
public string RenderNameValueList(string fieldName)
{
Item item = Sitecore.Context.Item;
if (item == null)
{
return string.Empty;
}
List<string> entries = new List<string>(item[fieldName].Split('&'));
string rendering = string.Empty;
if (entries.Count > 0)
{
rendering += "<table>";
foreach (string entry in entries)
{
if (entry.Contains("="))
{
string name = entry.Split('=')[0];
string value = entry.Split('=')[1];
rendering += "<tr><td>" + name
+ "</td><td>" + value + "</td></tr>";
}
}
rendering += "</table>";
}
return rendering;
}
}
}
然后,您需要在配置文件中添加对它的引用。如果您还没有示例,请在 /App_Config/Include/XslExtension.config 编辑示例。
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<xslExtensions>
<extension mode="on" type="Sitecore7.Custom.XslExtensions, Sitecore7"
namespace="http://www.sitecore.net/sce" singleInstance="true"/>
</xslExtensions>
</sitecore>
</configuration>
然后在 XSLT 文档顶部的样式表部分,添加如下内容:
xmlns:sce="http://www.sitecore.net/sce"
...并在 exclude-result-prefixes 参数中包含“sce”。
现在您终于可以在渲染中引用该方法了:
Named value pair rendering here:<br />
<xsl:value-of select="sce:RenderNameValueList('MyFieldName')"
disable-output-escaping="yes"/>
这可以在很多方面得到改进,但应该让你开始。
于 2013-09-20T22:04:17.640 回答