2010-09-30 14 views
8

¿Cómo puedo renderizar una imagen de elemento de la Biblioteca multimedia en una presentación secundaria con controles Sitecore? Con un elemento de contenido normal que tiene un campo de "Imagen", es pan comido ... solo use el control sc:Image o FieldRenderer. Pero tengo algo como esto:¿Cómo puedo renderizar un elemento de la Biblioteca multimedia por sí mismo?

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

Y el código subyacente:

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

Así que ... lo que pasa en el ItemTemplate? Estoy de acuerdo con el uso del evento ItemDataBound para hacer algunas asignaciones manuales, pero no tengo claro cómo hacerlo. Siento que me falta algo muy simple aquí.

Respuesta

11

OK ... Tuve problemas para responder esto originalmente porque estaba pensando en ello desde el ángulo equivocado. La clave NO es usar controles de Sitecore en este escenario. Lo que realmente necesita hacer es simplemente obtener la URL de la API de Sitecore y utilizar controles HTML estándar:

<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> 
+0

Sobre su código se recuperará la ruta de la imagen en forma de .ashx, por ejemplo: src = "/ ~/media/Imágenes/Artículo/Artículo Imágenes en miniatura/marketing/marketing-Thepsychology-small.ashx". Pero si quiero usar image src con extensión de imagen, ¿cómo puedo obtenerlo? Quiero src de imagen como: src = "/ ~/media/Images/Article/Article Thumbnail Images/marketing/marketing-Thepsychology-small.JPG". –

+2

MediaManager.GetMediaUrl() no controla qué extensión se utiliza. Mire la configuración Media.RequestExtension en su web.config para deshabilitar el nombre .ashx. – Bryan

+0

Deje la configuración Media.RequestExtension vacía. Luego compilé una solución completa y cargué una nueva imagen en el CMS del sitio. Y todavía me devuelve * .ashx extensión – Karol

0

Soy consciente de que es una vieja pregunta, sin embargo:

podría utilizar el siguiente:

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

O reemplace el FieldRenderer con el sc: Imagen.

+1

Esto no funcionará con los elementos de la Biblioteca de medios, por lo que he publicado la pregunta originalmente. – Bryan

0

Me he estado preguntando lo mismo, y me he dado cuenta de que hay una gran diferencia: FieldRenderer (y sc: Imagen) son campo Renderizadores ... Un MediaItem no es un campo, sino un elemento. Ahí es donde está el problema: deberíamos usar campos de imagen, o como dice la respuesta aceptada: use plain html.

Cuestiones relacionadas