CodeGo.net>如何在sitecore中获取媒体项目的详细信息?

我目前正在使用sitecore生成图像站点地图.因此,我需要在网站的特定网址中使用的所有图像.

在这里,我需要获取使用媒体项目的所有项目的详细信息.否则,我需要查找sitecore的item(url)中使用的所有媒体项目(图像).

我试图从一个项目中获取图像字段,它工作正常,但我需要的是获取该项目中使用的所有图像,这些图像通过演示文稿详细信息添加.

 Item currentitem = master.GetItem("/sitecore/content/International/Cars/New models/All new XC90");
 public static string GetImageURL(Item currentItem)
        {
            string imageURL = string.Empty;
            Sitecore.Data.Fields.ImageField imageField = currentItem.Fields["Image"];
            if (imageField != null && imageField.MediaItem != null)
            {
                Sitecore.Data.Items.MediaItem image = new Sitecore.Data.Items.MediaItem(imageField.MediaItem);
                imageURL = Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(image));
            }
            return imageURL;
        }

解决方法:

由于页面由多个组件组成,因此您需要遍历这些组件,检索所有数据源项并检查字段值.不要忘记,图像也可以放置在RTF字段中.

为了确保捕获所有这些,最好将WebClient调用回该站点,本质上是抓取呈现的HTML,然后使用HTMLAgilityPack/FizzlerEx/CsQuery返回所有图像.然后,可以根据需要仅过滤来自媒体库或特定位置的内容.

using HtmlAgilityPack;
using Fizzler.Systems.HtmlAgilityPack;

//get the page
HtmlWeb web = new HtmlWeb();
HtmlDocument document = web.Load("http://example.com/requested-page");
HtmlNode page = document.DocumentNode;

//loop through all images on the page
foreach(HtmlNode item in page.QuerySelectorAll("img"))
{
    var src = item.Attributes["src"].Value;
    // do some stuff
}

如果只想从媒体库中引用图像,则可以限制查询:

foreach(HtmlNode item in page.QuerySelectorAll("img[src^='/-/media/']"))
{
    //do stuff
    ...
}
上一篇:微信小程序全局配置知识点


下一篇:C#-ASP.NET网站地图,有多重要?