如何对所有sitecore媒体img标签应用allow-stretch?
问题描述:
我该如何做到这一点,以便在从媒体库中插入媒体时,“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&w=709" />`
,但我希望它看起来是这样的:
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&w=709&as=1" />
请注意,我提供的第二个img标签在末尾有= 1。
有谁知道如何做到这一点?
我使用Sitecore的6.5
答
您可以创建自己的实现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)
方法太。
我用我的新配置替换了配置中的现有mediaProvider,并创建了自己的媒体提供程序实现,但没有更改任何内容。还有什么我可以错过? Img标签仍然没有as = 1 ... – user1431072
我想你应该重写'公共虚拟字符串GetMediaUrl(MediaItem item,MediaUrlOptions选项)'方法,并在返回'base之前设置'options.AllowStretch = true'。 GetMediaUrl”。 –
@MarasMusielak你是对的。在我的特定情况下使用的方法是GetMediaUrl(MediaItem项,MediaUrlOptions选项),所以我所要做的就是覆盖该方法。 – user1431072