Sitecore XSL:按路径或ID选择项目,获取子项,获取子项的Droplink项目

时间:2018-05-14 13:47:26

标签: xml xslt foreach sitecore

我几乎没有使用XSL的经验,我需要一些帮助。我有一个在ASCX文件中呈现的组件,但需要将其移动到XSL文件中,并且我不确定语法。

我有一个Sitecore项/sitecore/content/Home/Social Media Link Group;我需要这个项目的所有孩子/sitecore/content/Home/Social Media Link Group/[Social Media Item]。此项目有两个字段:Social Media Source Name,一个Droplink字段;和Social Media Link,一个链接(我知道这太复杂了,我没有创建这个)。

droplink项目有两个字段:Social Media Source NameSocial Media Source Css Class

所以在XSL中,我需要做的就是获取特定根项的所有子项;对于每个项目,获取Link字段和Droplink项目,并从Droplink项目中获取两个字段

所以,我不确定如何在XSL中呈现它。这是我开始的地方,但它发生了错误,我也不确定如何调试XSL。这就是我到目前为止所做的:

<xsl:variable name="item" select="sc:item(sc:fld('__display name'), $socialShareLinks)" />
<xsl:for-each select="sc:CHILDREN??">
  <xsl:variable name="socialItem" select="sc:item(.,.)"/>
  <xsl:varible name="linkedItem" select="sc:field('Social Media Link Source', $socialItem)"/>
  <xsl:varible name="itemClass" select="sc:field('Social Media Source Css Class', $linkedItem"/>
  <li class="$itemClass">
    <sc:link field="Social Media Link"></sc:link>
  </li>
</xsl:for-each>

有人可以帮我弄清楚如何正确写这个吗? 1)我不知道如何得到sc:孩子。 2)Visual Studio告诉我,我不能在xsl:for-each中有一个xsl:变量,但是我不确定我应该做什么。 3)我遇到的任何其他事情。

编辑:我已将代码更新为:

<xsl:for-each select="$socialShareRoot/item">
  <li class="float-left">

    <xsl:variable name="itemUrl" select="sc:fld('Social Media Link', ., 'Url')"/>

    <xsl:variable name="LinkedItemId" select="sc:fld('Social Media Link Source', ., 'id')" />
    <xsl:variable name="SocialShareItem" select="sc:item($LinkedItemId, . )" />

    <xsl:variable name="itemClass" select="sc:fld('Social Media Source Css Class', $SocialShareItem)"/>               
    <xsl:variable name="itemName" select="sc:fld('Social Media Source Name', $SocialShareItem)"/>

    <a target="_blank">
      <xsl:attribute name="class">
        <xsl:value-of select="$itemClass"/>
      </xsl:attribute>
      <xsl:attribute name="href">
        <xsl:value-of select="$itemUrl"/>
      </xsl:attribute>

      <xsl:value-of select="$LinkedItemId"/>
    </a>
  </li>
</xsl:for-each>    

我为Sitecore中的每个现有项目获取一个空,但没有为类,名称或网址获取任何值

0 个答案:

没有答案