2009-09-18 14 views
2

Je commence juste à jouer avec le système XSLT dans umbraco où j'espérais produire une macro qui listait tous les médias sous un répertoire média spécifique. Je suis tombé sur umbraco.library: GetMedia mais, franchement, je n'ai aucune idée de ce qu'il faut passer pour obtenir une liste d'éléments. Les API docs à http://umbraco.org/apiDocs/html/M_umbraco_library_GetMedia.htm semblent indiquer que ce que je veux sans doute est de rechercher un noeud (comment?) Et passer ensuite avecRécupérer une liste de médias dans umbraco

umbraco.library:GetMedia(<some node id>, true) 

Comment puis-je obtenir cet identifiant de noeud initial?

Par la suite quelque chose comme ça va-t-il fonctionner?

<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> 

Répondre

0

Grâce à l'aide des gens sur les forums umbraco, je me suis rendu compte. Le fil est here et la solution est essentiellement ce 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> 

couplé à un contrôle de sélecteur de support sur la page.

+1

Cela ne fonctionne plus pour Umbraco 4.5 et plus. http://www.notas-terrible.net/blog/post/Umbraco-45-XML-Schema-changed.aspx – Costo

+0

Costo, votre lien ne fonctionne pas – Mario

1

est ici le même code mais mis à jour pour fonctionner avec Umbraco 4.5 ou version ultérieure:

<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>