Recuperando una lista de medios en umbraco
Pregunta
Estoy empezando a jugar con el sistema XSLT en umbraco, donde esperaba producir una macro que enumerara todos los medios en un directorio de medios específico. Me he encontrado con umbraco.library: GetMedia pero, francamente, no tengo idea de qué pasarle para obtener una lista de artículos. Los documentos de la API en http://umbraco.org/apiDocs/html/M_umbraco_library_GetMedia.htm parece sugerir que lo que probablemente quiero es buscar un nodo (¿cómo?) y luego pasarlo con
umbraco.library:GetMedia(<some node id>, true)
¿Cómo haría para obtener esa identificación de nodo inicial?
¿Posteriormente funcionaría algo así?
<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>
Solución 2
Gracias a la gran ayuda de la gente de los foros de umbraco, lo descubrí. El hilo es aquí y el la solución es básicamente esta 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>
junto con un control de selector de medios en la página.
Otros consejos
Aquí está el mismo código pero actualizado para funcionar con Umbraco 4.5 o posterior:
<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>