encodeNameReplacements не работает в редакторе страниц
Код конфигурации sitecore ниже хорошо работает в обычном режиме.
<encodeNameReplacements>
<replace mode="on" find=" " replaceWith="-" />
</encodeNameReplacements>
В режиме редактора страницы (пробелы) " " или не заменяется на "-".
В режиме редактора страниц: если я пытаюсь удалить изображение и вставить новое; изображение не отображается, пока я не сохраню страницу, потому что (пробелы) " " или не заменены на "-".
Я что-то упустил, любые идеи будут оценены.
2 ответа
У меня была проблема с encodeNameReplacements
испортить пути СМИ, пока я не нашел эту статью.
После внедрения этого кода в нашем проекте dash
заменит %20
и медиа-изображения будут по-прежнему визуализировать.
Sitecore 7.2 Обновление Media Library Gotcha
http://getfishtank.ca/blog/sitecore-7-2-upgrade-encoding-media-library-item-names
При обновлении клиента до Sitecore 7.2 этот раздел заметок о выпуске заставил нас задуматься:
Медиа API
При отображении медиа-URL система не использовала конфигурацию в encodeNameReplacements
раздел для замены специальных символов в URL.
Это было исправлено, так что медиа-URL также используют encodeNameReplacements
конфигурации. (323105, 314977)
Резюме:
URL библиотеки мультимедиа теперь используют encodeNameReplacements
конфигурации.
Если кто-нибудь столкнется с этой проблемой; Ищите любой пользовательский медиа-код, написанный на вашем сайте. Я получил следующий пользовательский код, вызывающий проблему:
public class MediaProvider : Sitecore.Resources.Media.MediaProvider
{
public override string GetMediaUrl(Sitecore.Data.Items.MediaItem item, Sitecore.Resources.Media.MediaUrlOptions options)
{
string url = base.GetMediaUrl(item, options);
if (!(Sitecore.Context.PageMode.IsNormal && options.UseItemPath))
{
return url;
}
}
}
Работает при изменении на
public class MediaProvider : Sitecore.Resources.Media.MediaProvider
{
public override string GetMediaUrl(Sitecore.Data.Items.MediaItem item, Sitecore.Resources.Media.MediaUrlOptions options)
{
string url = base.GetMediaUrl(item, options);
if (options.UseItemPath)
{
return url;
}
}
}