gpt4 book ai didi

c# - Sitecore 媒体库路径

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:10 24 4
gpt4 key购买 nike

使用 Sitecore 6.5,当在网页上呈现图像时,会使用如下所示的 URL

~/media/OSS/Images/MyImage

但是如果您在内容编辑器中从库中添加图像,则使用如下路径

~/media/1CFDDC34C94E460FAA2B1518DCA22360.PNG

这是有道理的,因为它在为网络呈现时尝试使用有意义的路径。

我们希望使用第一个媒体图像路径在 HTML View 的内容编辑器中添加图像,而不是默认的第二个方法。这是因为我们实际上正在获取一些 html 文件并通过脚本自动将它们添加到 Sitecore 中,如果使用约定使用第一种图像格式,我们可以将图像路径更改为媒体库中的某个位置,因此图像应该出现在新创建的项目中。我们现在有了关于媒体库图像 ID 的想法。

当图像在内容编辑器设计编辑器中呈现时以及页面呈现时,第一种格式似乎确实有效,但 Sitecore 在内容编辑器中将这些标记为断开的链接。关于我们是否可以安全地使用这种格式有什么想法吗?

最佳答案

您可能希望避免对富文本字段中的媒体路径进行硬编码。第二个“动态链接”是 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);

关于c# - Sitecore 媒体库路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20694402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com