Изображение sr c не заполнено в контенте Umbraco - PullRequest
0 голосов
/ 18 марта 2020

У нас есть тип документа с Richtext редакторами и помещением изображений в текст. Когда мы смотрим на контент в Umbraco, изображение отображается и выглядит нормально.

Когда Umbraco сохраняет контент и пропускает часть sr c, я думаю, чтобы убедиться, что у него всегда есть правильное доменное имя, когда контент отображается на разных серверах / веб-сайтах / доменах ... Так что нет нужды находиться в базе данных или в индексах.

Проблема в том, когда мы получаем контент по ContentService или Examine ссылка на изображение отсутствует, вместо нее есть только data-udi:

<img style="width: 479px; height: 288px;" src="?width=479&amp;height=288&amp;mode=max" alt="" data-udi="umb://media/0fc389ff96e949169014c0faf05220d0" />

, как в Umbraco:

<img style="width: 479px; height: 288px;" src="https://www.example.com/media/5gengd5j/image1.png?width=479&amp;height=288&amp;mode=max" alt="" data-udi="umb://media/0fc389ff96e949169014c0faf05220d0" />

Что мы должны сделать, чтобы убедиться, ссылки на изображения генерируются, как они сделаны в бэк-офисе?

Есть ли метод, который мы могли бы вызвать со всем контентом, который бы заполнил поле sr c на основе GuidUdi?

IContentService cs = Services.ContentService;
IContent content = cs.GetById(ID);
string mainString = content.Properties["main"].GetValue()
???

(Мы используем Umbraco 8.2.1)

1 Ответ

1 голос
/ 19 марта 2020

После поиска в исходном коде Umbraco я нашел решение здесь .

В TemplateUtilities есть методы для вставки ссылок на различные объекты на основе data-udi:

string mainString = content.Properties["main"].GetValue()
mainString = TemplateUtilities.ParseInternalLinks(mainString, Current.UmbracoContext.UrlProvider);
mainString = TemplateUtilities.ResolveUrlsFromTextString(mainString);
mainString = TemplateUtilities.ResolveMediaFromTextString(mainString);
...