简体   繁体   English

如何使用剃刀在Umbraco的图像文件夹中显示图像?

[英]How to display images within an image folder in Umbraco using razor?

Almost all examples of how to use display images from the image gallery are over xslt, however Umbraco 5.0 will not support xslt's anymore. 几乎所有有关如何使用图库中显示图像的示例都在xslt之上,但是Umbraco 5.0将不再支持xslt。

Here's an example of what I need in 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 &gt; 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>

What should be the equivalent in razor? 剃须刀应该算什么?

FYI: imageFolderAlias is a parameter. 仅供参考:imageFolderAlias是一个参数。

Thanks 谢谢

I answered my question, since is so little information about umbraco and xslt to razor transformations. 我回答了我的问题,因为关于umbraco和xslt到razor转换的信息很少。

Here's the answer code: 这是答案代码:

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

You should adapt it based to your necessities. 您应该根据自己的需要对其进行调整。

Took some code from HERE 这里获取一些代码

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM