Umbraco内容中未填写图片src
Image src is not filled out in Umbraco content
我们有一个带有 Richtext 编辑器并在文本中放置图像的文档类型。
当我们查看 Umbraco 下的内容时,显示的图像看起来很好。
当 Umbraco 保存内容并省略 src 部分时,我想确保当内容显示在不同的地方时它始终具有正确的域名 servers/website/domains... 所以它不会是在数据库或索引中。
问题是,当我们通过 ContentService
或 Examine
获取内容时,图像 link 不存在,它只有 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" />
我们应该怎么做才能确保图像 link 生成,就像它们是在后台完成的一样?
是否有我们可以调用的方法来填充基于 GuidUdi 的 src 字段的全部内容?
IContentService cs = Services.ContentService;
IContent content = cs.GetById(ID);
string mainString = content.Properties["main"].GetValue()
???
(我们正在使用 Umbraco 8.2.1)
在深入研究 Umbraco 的源代码后,我找到了解决方案 here。
TemplateUtilities
有方法可以根据 data-udi 插入指向各种对象的链接:
string mainString = content.Properties["main"].GetValue()
mainString = TemplateUtilities.ParseInternalLinks(mainString, Current.UmbracoContext.UrlProvider);
mainString = TemplateUtilities.ResolveUrlsFromTextString(mainString);
mainString = TemplateUtilities.ResolveMediaFromTextString(mainString);
我们有一个带有 Richtext 编辑器并在文本中放置图像的文档类型。 当我们查看 Umbraco 下的内容时,显示的图像看起来很好。
当 Umbraco 保存内容并省略 src 部分时,我想确保当内容显示在不同的地方时它始终具有正确的域名 servers/website/domains... 所以它不会是在数据库或索引中。
问题是,当我们通过 ContentService
或 Examine
获取内容时,图像 link 不存在,它只有 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" />
我们应该怎么做才能确保图像 link 生成,就像它们是在后台完成的一样?
是否有我们可以调用的方法来填充基于 GuidUdi 的 src 字段的全部内容?
IContentService cs = Services.ContentService;
IContent content = cs.GetById(ID);
string mainString = content.Properties["main"].GetValue()
???
(我们正在使用 Umbraco 8.2.1)
在深入研究 Umbraco 的源代码后,我找到了解决方案 here。
TemplateUtilities
有方法可以根据 data-udi 插入指向各种对象的链接:
string mainString = content.Properties["main"].GetValue()
mainString = TemplateUtilities.ParseInternalLinks(mainString, Current.UmbracoContext.UrlProvider);
mainString = TemplateUtilities.ResolveUrlsFromTextString(mainString);
mainString = TemplateUtilities.ResolveMediaFromTextString(mainString);