Recupero di un elenco di file multimediali in umbraco
Domanda
Sto appena iniziando a giocare con il sistema XSLT in umbraco dove speravo di produrre una macro che elencasse tutti i media in una directory media specifica. Ho trovato umbraco.library: GetMedia ma, francamente, non ho idea di cosa passarci per ottenere un elenco di elementi. I documenti API su http://umbraco.org/apiDocs/html/M_umbraco_library_GetMedia.htm sembra suggerire che ciò che probabilmente voglio è cercare un nodo (come?) e poi passarlo con
umbraco.library:GetMedia(<some node id>, true)
Come potrei ottenere l'ID del nodo iniziale?
Successivamente qualcosa di simile funzionerebbe?
<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>
Soluzione 2
Grazie ad un grande aiuto della gente nei forum di Umbraco l'ho capito. Il thread è qui e il la soluzione è fondamentalmente questa 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>
accoppiato con un controllo selettore multimediale sulla pagina.
Altri suggerimenti
Ecco lo stesso codice ma aggiornato per funzionare con Umbraco 4.5 o versioni successive:
<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>