【问题标题】:How do I render a Media Library item by itself?如何自己呈现媒体库项目?
【发布时间】:2010-09-30 21:42:47
【问题描述】:

如何使用 Sitecore 控件在子布局中呈现媒体库项目图像?对于具有“图像”字段的普通内容项目,它是小菜一碟......只需使用sc:ImageFieldRenderer 控件。但我有这样的事情:

<asp:Repeater ID="rptImages" runat="server">
  <ItemTemplate>
    <sc:FieldRenderer  ????>
  </ItemTemplate>
</asp:Repater>

以及背后的代码:

rptImages.DataSource = Sitecore.Context.Database.SelectItems("/sitecore/Media Library/Images/Some Image Folder/*")
rptImages.DataBind();

那么……ItemTemplate 中有什么?我可以使用 ItemDataBound 事件进行一些手动分配,但我不清楚如何去做。我觉得我在这里遗漏了一些非常简单的东西。

【问题讨论】:

    标签: sitecore


    【解决方案1】:

    好的...我最初无法回答这个问题,因为我从错误的角度考虑它。关键是在这种情况下不使用 Sitecore 控件。您真正需要做的只是从 Sitecore API 获取 URL 并使用标准 HTML 控件:

    <asp:Repeater ID="rptImages" runat="server" OnItemCommand="rptImages_ItemCommand">
        <ItemTemplate>
            <img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
        </ItemTemplate>
    </asp:Repeater>
    

    【讨论】:

    • 您的代码将以 .ashx 的形式检索图像路径,例如:src="/~/media/Images/Article/Article Thumbnail Images/marketing/marketing-Thepsychology-small.ashx"。但是如果我想使用带有图像扩展名的图像 src 那么如何获得它呢?我想要图像 src,例如:src="/~/media/Images/Article/Article Thumbnail Images/marketing/marketing-Thepsychology-small.JPG"。
    • MediaManager.GetMediaUrl() 不控制使用什么扩展。查看 web.config 中的 Media.RequestExtension 设置以禁用 .ashx 命名。
    • 我将 Media.RequestExtension 设置留空。然后我编译了整个解决方案,并将新图像上传到 sitecore CMS。它仍然返回我 *.ashx 扩展名
    【解决方案2】:

    我知道这是一个老问题,但是:

    您可以使用以下内容:

    <asp:Repeater ID="rptImages" runat="server">
        <ItemTemplate>
            <sc:FieldRenderer ID="image" runat="server" FieldName="FieldName" 
                  Item="<%# Container.DataItem %>
        </ItemTemplate>
    </asp:Repeater>
    

    或者用 sc:Image 替换 FieldRenderer。

    【讨论】:

    • 这不适用于媒体库项目,这就是我最初发布问题的原因。
    【解决方案3】:

    我一直在想同样的事情,我意识到有一个很大的区别:FieldRenderer(和 sc:Image)是 FieldRenderers... MediaItem 不是一个字段,而是一个项目。这就是问题所在:我们应该使用 Image 字段,或者如公认的答案所述:使用纯 html。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多