0

リッチテキスト エディターを使用し、テキストに画像を挿入するドキュメント タイプがあります。Umbraco の下のコンテンツを見ると、画像が表示されていて問題ないようです。

Umbraco がコンテンツを保存して src 部分を省略すると、コンテンツが異なるサーバー/ウェブサイト/ドメインに表示されるときに常に正しいドメイン名を持っていることを確認することになると思います...したがって、データベースまたはインデックス。

問題は、コンテンツを取得した場合、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" />

バックオフィスで行われているように、画像リンクが確実に生成されるようにするにはどうすればよいでしょうか?

GuidUdi に基づいて src フィールドに入力するコンテンツ全体で呼び出すことができるメソッドはありますか?

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

(Umbraco 8.2.1 を使用しています)

4

1 に答える 1

1

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);
于 2020-03-19T13:41:22.887 に答える