2

我刚刚开始在 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>
4

2 回答 2

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>
于 2013-06-04T14:20:23.360 回答
0

感谢 umbraco 论坛中人们的大力帮助,我想通了。线程在这里,解决方案基本上就是这个 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>

再加上页面上的媒体选择器控件。

于 2009-09-19T22:23:15.837 回答