2014-02-27 25 views
1

我该如何做到这一点,以便在从媒体库中插入媒体时,“allow-stretch”属性应用于sitecore创建的所有标签?如何对所有sitecore媒体img标签应用allow-stretch?

据我所知,您可以使用单独的<sc:image>标签设置allow-stretch属性,但我希望此设置可以全局应用,以便每当用户将媒体库中的媒体插入到页面中时,生成的标签已经具有默认情况下应用于它的“as = 1”属性。

目前,只要用户在我的web应用程序中的媒体库插入媒体,通过Sitecore的创建图像标记看起来是这样的:

<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&amp;w=709" />` 

,但我希望它看起来是这样的:

<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&amp;w=709&as=1" /> 

请注意,我提供的第二个img标签在末尾有= 1。

有谁知道如何做到这一点?

我使用Sitecore的6.5

回答

4

您可以创建自己的实现MediaProvider并将AllowStretch设置为始终为真。从Sitecore.Resources.Media.MediaProvider继承并重写GetMediaUrl()方法:

namespace MyCustom.Media 
{ 
    public class MediaProvider : Sitecore.Resources.Media.MediaProvider 
    { 
    public override string GetMediaUrl(MediaItem item) 
    { 
     Assert.ArgumentNotNull((object) item, "item"); 
     return this.GetMediaUrl(item, MediaUrlOptions.Empty); 
    } 

    public override string GetMediaUrl(MediaItem item, MediaUrlOptions options) 
    { 
     options.AllowStretch = true; 
     return base.GetMediaUrl(item, options); 
    } 
} 

然后在配置修补媒体提供商将您定制的实现:

<mediaProvider type="MyCustom.Media.MediaProvider, MyCustom.Kernel"/> 

编辑:由于马拉什曾建议,试图重写重载GetMediaUrl(MediaItem item, MediaUrlOptions options)方法太。

+0

我用我的新配置替换了配置中的现有mediaProvider,并创建了自己的媒体提供程序实现,但没有更改任何内容。还有什么我可以错过? Img标签仍然没有as = 1 ... – user1431072

+3

我想你应该重写'公共虚拟字符串GetMediaUrl(MediaItem item,MediaUrlOptions选项)'方法,并在返回'base之前设置'options.AllowStretch = true'。 GetMediaUrl”。 –

+0

@MarasMusielak你是对的。在我的特定情况下使用的方法是GetMediaUrl(MediaItem项,MediaUrlOptions选项),所以我所要做的就是覆盖该方法。 – user1431072

1

您可以创建一个扩展方法类似this和AllowStretch属性设置为true。您还可以在httprequestbegin管道中添加一个进程,并将AllowStretch分配给所有媒体文件。