几乎所有如何使用图库中显示图像的例子都是xslt,但是Umbraco 5.0不再支持xslt了。
以下是我在xslt中需要的一个例子:
<xsl:param name="currentPage"/>
<xsl:template match="/">
<xsl:variable name="image" select="macro/imageFolderAlias"/>
<xsl:variable name="mediaFolderID" select="number($currentPage/*[name() = $image])" />
<xsl:if test="$mediaFolderID > 0">
<ol>
<xsl:variable name="mediaNode" select="umbraco.library:GetMedia($mediaFolderID, 1)" />
<xsl:for-each select="$mediaNode//Image [@nodeTypeAlias ='Image']">
<li>
<a>
<xsl:attribute name="href"><xsl:value-of select="current()/umbracoFile"/></xsl:attribute>
<h4><xsl:value-of select="current()/altText"/></h4>
<img >
<xsl:attribute name="src"><xsl:value-of select="concat(substring(current()/umbracoFile, 0, string-length(current()/umbracoFile) - string-length(current()/umbracoExtension)), '_thumb.jpg')"/></xsl:attribute>
<xsl:attribute name="alt"><xsl:value-of select="current()/altText"/></xsl:attribute>
</img>
</a>
</li>
</xsl:for-each>
</ol>
</xsl:if>
</xsl:template>
剃刀中应该有什么相同的东西?
仅供参考:imageFolderAlias是一个参数。
由于
答案 0 :(得分:2)
我回答了我的问题,因为关于umbraco和xslt到razor变换的信息很少。
以下是答案代码:
@using umbraco.cms.businesslogic.media;
@using uComponents.Core;
@using uComponents.Core.uQueryExtensions;
@{
var parameter = @Parameter.imageFolderAlias;
var folderId = Convert.ToInt32(@Model.GetProperty(@parameter).Value);
if (@folderId > 0)
{
Media startMedia = new Media(@folderId);
@: <ol>
var mediaNode = umbraco.library.GetMedia(folderId, true);
foreach(Media m in startMedia.GetChildMedia())
{
string umbracoImageFileName = @m.getProperty("umbracoFile").Value.ToString();
string umbracoImageExtension = @m.getProperty("umbracoExtension").Value.ToString();
var thumnail = String.Concat(@umbracoImageFileName.Substring(0, (@umbracoImageFileName.Length - @umbracoImageExtension.Length - 1)),"_thumb.jpg");
@: <li>
@: <a href="@umbracoImageFileName">
@: <h4> @m.getProperty("altText").Value </h4>
@: <img src="@thumnail" alt="@m.getProperty("altText").Value" />
@: </a>
@: </li>
}
@: </ol>
}
}
你应该根据你的需要调整它。
从HERE获取一些代码