我们具有带有Richtext编辑器的文档类型,并将图像放入文本中。当我们查看Umbraco下的内容时,图像显示出来,看起来还不错。
当Umbraco保存内容并省略src部分时,我想确保当内容显示在不同的服务器/网站/域上时,它始终具有正确的域名...因此,将它放在dabase中并不容易或在索引中。
问题是,当我们通过ContentService
或Examine
获得内容时,图像链接不存在,它只有data-udi
:
<img style="width: 479px; height: 288px;" src="?width=479&height=288&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&height=288&mode=max" alt="" data-udi="umb://media/0fc389ff96e949169014c0faf05220d0" />
我们应该如何确保生成图像链接,就像它们是在后台进行的一样?
是否有一种方法可以调用全部内容,并根据GuidUdi填写src字段?
IContentService cs = Services.ContentService;
IContent content = cs.GetById(ID);
string mainString = content.Properties["main"].GetValue()
???
((我们正在使用Umbraco 8.2.1)
深入研究Umbraco的源代码后,我找到了解决方案here。
TemplateUtilities
具有基于数据-udi插入到各种对象的链接的方法:
string mainString = content.Properties["main"].GetValue()
mainString = TemplateUtilities.ParseInternalLinks(mainString, Current.UmbracoContext.UrlProvider);
mainString = TemplateUtilities.ResolveUrlsFromTextString(mainString);
mainString = TemplateUtilities.ResolveMediaFromTextString(mainString);