使用Umbraco 7.2,我有一个文档类型' ResourcePage'它拥有一个名为' folderlist'的多媒体选择器属性。我已经放置了一个名为' DisplayResourceItem'的xslt宏。在一个名为' resourcecontent'的richtext编辑器属性中。 宏采用名为' resourceNodeId'的内容选择器参数,当我添加宏时,该参数附加在每个ResourcePage中。
我的ResourcePage模板引用了richtext编辑器内容,如:
<umbraco:Item field='resourcecontent' runat='server'></umbraco:Item>
在https://our.umbraco.org/forum和本网站上的大量示例之后,我尝试列出文件夹列表中的多个媒体选择器中的文件。出于某种原因,我最好的尝试只给我一个字符串 - 一个逗号分隔的媒体nodeID列表。
相关代码:
<xsl:param name="currentPage"/>
<xsl:variable name="resourceNodeId" select="/macro/resourceNodeId"/>
<xsl:template match="/">
<xsl:if test="count($resourceNodeId) > 0">
<xsl:variable name="contentfolder" select="$currentPage/folderlist"/>
<xsl:value-of select="$contentfolder"/>
</xsl:if>
返回页面上的列表&#34; 1104,1106,1111,1079,1114&#34; (它们是文件夹列表中媒体的所有nodeID),但我尝试使用GetMedia的任何一个都会返回xslt错误。
示例:
<xsl:value-of select="umbraco.library:GetMedia($contentfolder, true())"/>
返回&#34;解析XSLT文件时出错:\ xslt \ displayResourceItems.xslt&#34;
我稍后会返回并显示我之前尝试显示文件(这些文件在引用根媒体节点时起作用,然后检查Media文件夹是否与ResourcePage名称相同,哪个有效 - 但我不知道&#39;我希望管理员必须在媒体文件夹中上传并确保“内容”部分中有相应的文件夹。)
有没有人有任何想法? 提前谢谢。
答案 0 :(得分:1)
你可以通过分割和for-each这样的东西循环播放媒体ID:
contentfolder是一个字符串,其值为“1104,1106,1111,1079,1114”多媒体选择器的输出
<xsl:variable name="linkidlijst1" select="$contentfolder" />
<ul class="img-list">
<xsl:variable name="nodeIds" select="umbraco.library:Split($linkidlijst1, ',')" />
<xsl:for-each select="$nodeIds/value">
<li>
<xsl:variable name="medianummer" select="." />
<xsl:if test="$medianummer != ''">
<xsl:variable name="media" select="umbraco.library:GetMedia($medianummer, 'false')" />
<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="umbraco.library:GetMedia($medianummer, 'false')/@nodeName" />
<xsl:if test="$url != ''">
<img src="{$url}" alt="{$alt}" width="{$width}" height="{$height}" />
</xsl:if>
</xsl:if>
</xsl:if>
</li>
</xsl:for-each>
</ul>
但是你为什么要在Umbraco 7.2中使用xslt。 Xslt已经过时了。最好在Umbraco 7中使用Razor。