Как вы применяете allow-stretch ко всем тегам img мультимедиа sitecore?

Как сделать так, чтобы свойство "allow-stretch" применялось ко всем тегам, которые создает sitecore при вставке мультимедиа из медиатеки?

Я понимаю, что вы можете установить свойство allow-stretch, используя отдельные теги <sc:image>, но я хочу, чтобы этот параметр применялся глобально, чтобы всякий раз, когда пользователь вставляет медиафайл из медиатеки на страницу, сгенерированный тег уже имел «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, который я предоставил, имеет значение as=1 в конце.

Кто-нибудь знает, как это сделать?

Я использую Sitecore 6.5


person user1431072    schedule 27.02.2014    source источник


Ответы (2)


Вы можете создать свою собственную реализацию 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"/>

РЕДАКТИРОВАТЬ: Как предложил Марас, попробуйте также переопределить перегруженный метод GetMediaUrl(MediaItem item, MediaUrlOptions options).

person jammykam    schedule 28.02.2014
comment
Я заменил существующий медиапровайдер в конфиге на свой новый и создал собственную реализацию медиа-провайдера, но это ничего не изменило. Что еще я мог упустить? теги Img по-прежнему не имеют as=1... - person user1431072; 28.02.2014
comment
Я предполагаю, что вы также должны переопределить метод public virtual string GetMediaUrl(MediaItem item, MediaUrlOptions options) и установить options.AllowStretch = true перед возвратом `base.GetMediaUrl'. - person Marek Musielak; 28.02.2014
comment
@MarasMusielak Ты был прав. В моем конкретном случае используется метод GetMediaUrl (элемент MediaItem, параметры MediaUrlOptions), поэтому все, что мне нужно было сделать, это также переопределить этот метод. - person user1431072; 28.02.2014

Вы можете создать метод расширения, например это и задайте для свойства AllowStretch значение true. Вы также можете добавить процесс в конвейер httprequestbegin и назначить AllowStretch для всех медиафайлов.

person xoail    schedule 27.02.2014