在XSLT呈现中显示NameValueList字段的值

时间:2013-09-19 17:06:52

标签: sitecore xslt-1.0 sitecore6

是否有任何扩展方法可以在Sitecore XSLT渲染中用于帮助显示NameValueList字段类型(它们的值),还是我需要为此操作创建自己的扩展方法?

1 个答案:

答案 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"/>

这可以改善,但应该让你开始。