如何获取sitecore中的所有媒体项目?

时间:2012-04-12 11:50:24

标签: sitecore sitecore6 sitecore-media-library

我在sitecore中添加了一个管道。我正在尝试做的是获取所有媒体项目,并更改网址,因为我们将把所有媒体资产放入CDN。而且,问题很简单,如何获取所有媒体项目?有谁知道?

2 个答案:

答案 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()

返回的网址