0

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

(Sitecore) 设置 > 个人资料 > 用户类型 > 娱乐主管 > AR 主管

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

上面的代码会打印出AR Executive

现在在AR Executive内部,我有一个名为 Related Genre Types的多列表,其中包括:

  • 音乐
  • 喜剧
  • 电视

我一直在尝试在这里遵循这个例子: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...}Music &

Sitecore 编辑器

如何循环遍历我的 Multilist 以获取并打印出所有 3 个项目?

4

2 回答 2

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()。

于 2013-04-25T16:46:19.227 回答
0

我必须以不同的方式定位 Multilist 项目的所有者,我必须使用 @key 来定位它,然后示例代码才起作用:

<xsl:variable name="ExecUser" select="$UserTypes/item[@key='entertainment executive']" /> 
于 2013-04-25T21:15:44.070 回答