我几乎没有使用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 Name
和Social 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中的每个现有项目获取一个空,但没有为类,名称或网址获取任何值