是否有任何扩展方法可以在Sitecore XSLT渲染中用于帮助显示NameValueList字段类型(它们的值),还是我需要为此操作创建自己的扩展方法?
答案 0 :(得分: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"/>
这可以改善,但应该让你开始。