【问题标题】:Select images from subnodes in umbraco从 umbraco 的子节点中选择图像
【发布时间】:2011-07-18 11:23:30
【问题描述】:

我有包含图像的子节点。如何选择这些并显示它们?我似乎只能选择并显示 ID。我用过的代码:

<xsl:value-of select="image"/>

如何让它显示实际图像?我正在使用 Umbraco 4.7。我确定这很简单,我只是似乎无法弄清楚。

我也试过下面这段代码,但它似乎没有看到正确的节点。我认为它是在看父母而不是孩子,但我不确定如何改变这一点:

<xsl:variable name="media" select="umbraco.library:GetMedia($currentPage/image, 0)" />

<xsl:if test="$media">
        <img src="{$media/umbracoFile}" alt="{$media/altText}" />
</xsl:if>

【问题讨论】:

  • 它几乎是一样的,但是这是对我试图做的事情的更好描述,因为另一个似乎有点令人困惑
  • @macroj - 在这种情况下,最好编辑原始问题而不是再次提问。
  • 请给出你的内容结构

标签: image xslt umbraco


【解决方案1】:

我有包含图像的子节点。我如何选择这些和 显示它们?我似乎只能选择并显示 ID。 我用过的代码:

<xsl:value-of select="image"/>

因为您忘记发布 XML 文档(学习这样做!!!)这个问题无法确定地回答。

我的猜测是,如果你使用&lt;xsl:copy-of&gt; 而不是&lt;xsl:value-of&gt;,你可能会更成功

前者复制select属性中指定的整个节点(或节点集),而后者只复制节点(节点集)的字符串值。

了解节点集的字符串值与节点集的节点副本之间的区别

【讨论】:

    【解决方案2】:

    使用node() 获取孩子:

    <xsl:for-each select="$currentPage/node()/image">
        <xsl:variable name="media" select="umbraco.library:GetMedia(., 0)" />
        <xsl:if test="$media">
            <img src="{$media/umbracoFile}" alt="{$media/altText}" />
        </xsl:if>
    </xsl:for-each>
    

    【讨论】:

      【解决方案3】:

      试试这个。

                      <xsl:variable name="imageId" select="./image" />
                      <xsl:if test="normalize-space($imageId)">
                          <xsl:variable name="image" select="umbraco.library:GetMedia($imageId, false())" />
      
                          <img src="{$image/umbracoFile}" rel="prettyPhoto" />
                      </xsl:if>
                  </a> 
                </xsl:if>  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多