我在sitecore中添加了一个管道。我正在尝试做的是获取所有媒体项目,并更改网址,因为我们将把所有媒体资产放入CDN。而且,问题很简单,如何获取所有媒体项目?有谁知道?
答案 0 :(得分:1)
在自定义程序集中执行以下操作:
Sitecore.Data.Items.Item home = db.GetItem("/sitecore/media library");
using (new Sitecore.SecurityModel.SecurityDisabler())
{
alterItem(home);
}
protected void alterItem(Sitecore.Data.Items.Item root)
{
foreach (Sitecore.Data.Items.Item itm in root.Children)
{
//follow "absolute url" example below and edit each media item as you enumerate
//Use recursion to loop through the entire tree under the root item
alterItem(itm);
}
}
答案 1 :(得分:0)
您无法浏览Sitecore媒体库树并更改项目的网址。主要原因是MediaItem
(或任何Item
)没有URL
的属性。指向项目的URL由许多配置设置(项目所在的站点,链接前缀,当前语言,“文件”扩展名等)确定。
由于有许多因素可以控制项目的实际网址,因此您可以使用一些方法来获取呈现时间项目的网址。您应该使用的方法来获取项目的URL:
Sitecore.Links.LinkManager.GetItemUrl()
Sitecore.Resources.Media.MediaManager.GetMediaUrl()
你可以做一些foxtrotZulu建议的事情。实质上,将每个MediaItem
添加自己的字段,将URL存储到CDN上的项目。您需要手动或以编程方式为每个媒体项设置自定义URL字段的值。然后,在渲染时间,您将使用该字段值而不是调用MediaManager
。
您可能还希望利用各种配置设置来控制通过调用Sitecore.Resources.Media.MediaManager.GetMediaUrl()