Sitecore:无法获取多列表项中的所有值

时间:2013-04-25 16:06:52

标签: xml xslt sitecore xslt-2.0 sitecore6

例如,我可以访问在Sitecore中创建的配置文件,我可以获取它的名称。

(Sitecore)设置>个人资料>用户类型>娱乐执行> AR执行官

<xsl:variable name="ARExec" select="$UserTypes/item[3]/item[1]"/>

以上代码将打印出 AR Executive

现在在 AR Executive 内部,我有一个名为“相关类型的多列表”,其内部是:

  • 音乐
  • 喜剧
  • TV

我一直在尝试按照这个例子: http://sdn.sitecore.net/Articles/XSL/Accessing%20Field%20Values/Multilist.aspx

但是我无法重现结果,我希望能够得到并列出所有3个名字,但它只让我抓住音乐,第一项。我正在试图找出如何循环遍历Multilist中的项目并将它们全部显示出来。

<xsl:template match="*" mode="main">
....    

<xsl:variable name="ARExec" select="$UserTypes/item[3]/item[1]"/>

<lable><xsl:value-of select="sc:fld('Related Genre Types', $ARExec)"/></lable>

<xsl:variable name="ids" select="concat(sc:fld('Related Genre Types',$ARExec),'|')"/>

<xsl:call-template name="PrintTitles">
    <xsl:with-param name="ids" select="$ids"/>
</xsl:call-template>

</xsl:template>

<xsl:template name="PrintTitles">
  <xsl:param name="ids"/>
  <xsl:if test="$ids">
    <xsl:variable name="itm_id" select="substring-before($ids, '|')"/>
    <xsl:if test="$itm_id">
      <xsl:variable name="itm" select="sc:item($itm_id,.)"/>

        <xsl:value-of select="sc:fld('Title', $itm)"/> &amp; 

    </xsl:if>

    <xsl:call-template name="PrintTitles">
      <xsl:with-param name="ids" select="substring-after($ids, '|')"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

^打印出{id number ...}音乐&amp;

Sitecore editor

如何循环浏览我的多重列表以抓取并打印所有3个项目?

2 个答案:

答案 0 :(得分:1)

从头到尾,您需要以下内容:

<xsl:variable name="item" select="$usertypes/item[3]/item[1]" />

<xsl:for-each select="sc:Split('related genre types', $item)>
    <xsl:variable name="fielditem" select="sc:item(.,.)"/>
    <sc:text field="title" select="$fielditem]/>
</xsl:for-each>

我对格式化表示歉意,我在手机上。

<强> [编辑]
在Split函数中,我们不需要调用sc:fld()。

答案 1 :(得分:0)

我必须以不同方式定位Multilist项目的所有者,我必须使用@key定位它,然后example code工作:

<xsl:variable name="ExecUser" select="$UserTypes/item[@key='entertainment executive']" />