서식있는 텍스트 필드에서 미디어 경로를 하드 코딩하지 않아야 할 수 있습니다. 두 번째 "동적 링크"는 Sitecore의 중요한 기능으로 링크 데이터베이스의 미디어와 항목 간의 연결을 유지합니다. 이렇게하면 미디어를 삭제하거나 이동할 때 보호받을 수 있습니다.
외부 소스에서 콘텐츠를 가져 오는 중이고 이미 이미지 경로를 감지 할 수있는 방법이 있으므로 가능한 경우 이미지를 프로그래밍 방식으로 업로드하고 동적 링크를 삽입하는 것이 좋습니다 (가능한 경우). 다음은
은 미디어 라이브러리에 업로드와 미디어 항목을 다시 얻기 위해 호출 할 수있는 기능입니다 :
예를 사용 :
var file = AddFile("/assets/images/my-image.jpg", "/sitecore/media library/images/example", "my-image");
코드 :
private MediaItem AddFile(string relativeUrl, string sitecorePath, string mediaItemName)
{
var extension = Path.GetExtension(relativeUrl);
var localFilename = @"c:\temp\" + mediaItemName + extension;
using (var client = new WebClient())
{
client.DownloadFile("http://yourdomain.com" + relativeUrl, localFilename);
}
// Create the options
var options = new MediaCreatorOptions
{
FileBased = false,
IncludeExtensionInItemName = false,
KeepExisting = false,
Versioned = false,
Destination = sitecorePath + "/" + mediaItemName,
Database = Factory.GetDatabase("master")
};
// Now create the file
var creator = new MediaCreator();
var mediaItem = creator.CreateFromFile(localFilename, options);
return mediaItem;
}
로 미디어에 대한 동적 링크를 생성하기 위해 실제로 Sitecore 메서드를 찾지 못했기 때문에 다음 코드를 사용했습니다.
var extension = !String.IsNullOrEmpty(Settings.Media.RequestExtension)
? Settings.Media.RequestExtension
: ((MediaItem)item).Extension;
var dynamicMediaUrl = String.Format(
"{0}{1}.{2}",
MediaManager.MediaLinkPrefix,
item.ID.ToShortID(),
extension);