我刚刚开始在umbraco中使用XSLT系统,我希望能够生成一个宏,该宏列出了特定媒体目录下的所有媒体。我遇到了umbraco.library:GetMedia但是,坦率地说,我不知道要传递什么来获取项目列表。 http://umbraco.org/apiDocs/html/M_umbraco_library_GetMedia.htm处的API文档似乎暗示我可能想要的是查找节点(如何?)然后将其传递给
umbraco.library:GetMedia(<some node id>, true)
我如何获得初始节点ID?
随后会有这样的工作吗?
<xsl:for-each select="umbraco.library:GetMedia(<SOMEMAGIC>, 'true')">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
答案 0 :(得分:1)
以下是相同的代码,但更新后可与Umbraco 4.5或更高版本配合使用:
<xsl:variable name="images" select="umbraco.library:GetMedia($currentPage/mediaDir, 1)" />
<xsl:for-each select="$images/*">
<li>
<xsl:choose>
<xsl:when test="string(local-name()) = 'Image'">
<a>
<xsl:attribute name="href">
<xsl:value-of select="./umbracoFile"/>
</xsl:attribute>
<xsl:value-of select="@nodeName"/>
</a>
</xsl:when>
<xsl:otherwise>
<!--Do something with the directory-->
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:for-each>
答案 1 :(得分:0)
感谢umbraco论坛上的人们提供的一些帮助,我明白了。线程是here,解决方案基本上就是这个XSLT
<xsl:for-each select="umbraco.library:GetMedia($currentPage/data [@alias='mediaDir'], 'true')/node">
<li>
<xsl:choose>
<xsl:when test="umbraco.library:GetMedia(@id, 'false')/data [@alias = 'umbracoFile']">
<a><xsl:attribute name="href">
<xsl:value-of select="umbraco.library:GetMedia(@id, 'false')/data [@alias = 'umbracoFile']"/>
</xsl:attribute>
<xsl:value-of select="@nodeName"/>
</a>
</xsl:when>
<xsl:otherwise>
<!--Do something with the directory-->
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:for-each>
加上页面上的媒体选择器控件。