使用媒体选择器无法正常显示媒体目录中的图像

时间:2013-11-14 12:02:10

标签: asp.net image xslt umbraco

我正在使用Umbraco v6.1.6,我想要的只是显示我使用媒体选择器选择的媒体目录中的图像。

媒体目录的内容如下: Media

我创建了一个名为ImageSlider.xslt的XSLT文件,该文件的内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:umb="urn:umbraco.library"
    exclude-result-prefixes="umb"
>
<xsl:output method="html" indent="yes" omit-xml-declaration="yes" />
<xsl:param name="currentPage" />
<xsl:template match="/">

    <xsl:variable name="media" select="umb:GetMedia(1088, 0)" />
    <xsl:if test="$media">
        <img src="{$media/umbracoFile}" alt="{$media/altText}" />
    </xsl:if>

</xsl:template>
</xsl:stylesheet>

此处1088banner目录的ID,但它根本不起作用。我是新手。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我假设您要选择文件夹并列出其下的所有图像。目前,您的代码只是试图显示该文件夹。你需要这样的东西......

在我的示例中,我使用的是多节点树选取器,您可以选择图像和文件夹,渲染出csv。它会遍历所有图像并列出所有图像

  <xsl:for-each select="$source/value">
      <xsl:variable name="imageId" select="number(current())" />

      <xsl:if test="$imageId &gt; 0">
        <xsl:variable name="media" select="umbraco.library:GetMedia($imageId, 0)" />

        <xsl:choose>
          <xsl:when test="local-name($media) = 'Image'">
            <xsl:call-template name="ImageBox">
              <xsl:with-param name="imageId" select="$imageId"/>
            </xsl:call-template>
          </xsl:when>
          <xsl:when test="local-name($media) = 'Folder'">
            <xsl:call-template name="LoopFolders">
              <xsl:with-param name="folderId" select="$imageId"/>
            </xsl:call-template>
          </xsl:when>
        </xsl:choose>
      </xsl:if>   

  </xsl:for-each>
</xsl:template>

<xsl:template name="LoopFolders">
    <xsl:param name="folderId"/>
    <xsl:variable name="media" select="umbraco.library:GetMedia($folderId, 0)" />
    <xsl:variable name="alt" select="$media/@nodeName" />

    <div id="gallery">
        <xsl:for-each select="umbraco.library:GetMedia($folderId, true())/Image">
            <xsl:call-template name="ImageBox">
       <xsl:with-param name="imageId" select="number(@id)"/>
    </xsl:call-template>
    </xsl:for-each>
</div>
</xsl:template>


<xsl:template name="ImageBox">
    <xsl:param name="imageId"/>

    <xsl:if test="$imageId &gt; 0">
        <xsl:variable name="media" select="umbraco.library:GetMedia($imageId, 0)" />
        <xsl:if test="$media">
            <xsl:variable name="url" select="$media/umbracoFile" />
            <xsl:variable name="width" select="$media/umbracoWidth" />
            <xsl:variable name="height" select="$media/umbracoHeight" />
            <xsl:variable name="alt" select="$media/@nodeName" />
            <img src="{$url}" alt="{$alt}" width="{$width}" height="{$height}" />           
        </xsl:if>
    </xsl:if>
</xsl:template>