Ich versuche, eine Bild-Sitemap für meine Website zu erstellen. So wie ich dies tue, lade ich für jede Seite der Sitemap die Seite und analysiere alle Bild-Tags im HTML. Hier ein kurzer Auszug:Sitecore: Wie kann ich eine Medienbibliothek per URL erhalten?
var htmlImgTags = doc.DocumentNode.SelectNodes("//img[@src]");
if (htmlImgTags != null)
return
htmlImgTags.Select(htmlImg => host + htmlImg.Attributes["src"].Value.Split('?').First())
.ToList();
So habe ich die URL für jedes Bild, aber ich brauche die Medienbibliothek Artikel mit ihm verbunden zu bekommen (so, dass ich den Bildnamen und andere Bereiche zu bekommen). Eine Beispiel-URL, die ich erhalte, ist https://mysite/~/media/MySiteImages/MediaImage.ashx
Hier ist, wie ich versuche, die Bild zu bekommen:
var db = Sitecore.Data.Database.GetDatabase("web");
var imageItem = db.GetItem(imageUrl);
Ich habe versucht, in /media/MySiteImages/MediaImage.ashx
gerade vorbei, /mysite/~/media/MySiteImages/MediaImage.ashx
und andere Variationen der URL, aber alles null zurück
Wo haben Sie Suche von ItemPathResolver? Es ist nicht in meinem Projekt erkannt, muss ich etwas installieren? –
Es befindet sich in 'Sitecore.Kernel.dll' im' Sitecore.Data.ItemResolvers'-Namespace. Ich benutze Sitecore 8.1. Wenn Sie eine alte Version von Sitecore verwenden, habe ich den Code dieser Klasse in meine Antwort eingefügt, damit Sie sie verwenden können. –
Eurgh. Ich weiß, das liegt nicht an dir, aber Sitecore hat den 'GetMediaPath()' Code an die falsche Stelle gesetzt, hätte diesen Code viel einfacher gemacht, wenn die Methode veröffentlicht wurde. +1 trotzdem. – jammykam