如何将allow-stretch应用于所有sitecore媒体img标签?

时间:2014-02-27 18:17:38

标签: c# asp.net sitecore image-resizing sitecore-media-library

如何将“allow-stretch”属性应用于sitecore从媒体库插入媒体时创建的所有标记?

我了解您可以使用单个<sc:image>标记设置allow-stretch属性,但我希望全局应用此设置,以便每当用户将媒体库中的媒体插入到页面上时,生成tag已经默认应用了“as = 1”属性。

目前,只要用户在我的网络应用程序中插入媒体库中的媒体,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

2 个答案:

答案 0 :(得分:4)

您可以创建自己的MediaProvider实施,并将AllowStretch设置为始终为true。继承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"/>

编辑:正如Maras建议的那样,尝试覆盖重载的GetMediaUrl(MediaItem item, MediaUrlOptions options)方法。

答案 1 :(得分:1)

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