In einer bestimmten Situation musste ich bestimmte Daten über eine RESTful-Anforderung von einem Cloud-Server abrufen und sie dann entlang der normalen Sitecore-Elemente verarbeiten und präsentieren. Ich konvertiert die Daten aus einer RESTful Anfrage an Sitecores Artikel durch den folgenden Code:Eine Sitecore-Element-URL durch C# auf einen Drittanbieterserver setzen
private static Item Itemize(HubSpotResult hubSpotResult)
{
Database webDb = Sitecore.Configuration.Factory.GetDatabase("web");
TemplateItem template = webDb.GetItem("/sitecore/templates/User Defined/Pages/HubSpotBlogs");
var id = ID.NewID;
var templateId = template.ID;
var titleFieldId = ID.NewID;
var dateFieldId = ID.NewID;
var navigationTitleFieldId = ID.NewID;
var def = new ItemDefinition(id,"HubSpotBlog", templateId, ID.Null);
var fields = new FieldList();
fields.Add(titleFieldId, "Title");
fields.Add(dateFieldId, "Date");
fields.Add(navigationTitleFieldId, "NavigationTitle");
var data = new ItemData(def, Language.Parse("en"),new Sitecore.Data.Version(1), fields);
var dateTime = GetPublicationDate(hubSpotResult.publish_date).ToString();
var sitecoreStyleDateTime = DateUtil.ParseDateTime(dateTime,DateTime.Now);
Item item;
using (new SecurityDisabler())
{
item = new Item(id, data, webDb);
item.Editing.BeginEdit();
item.Fields["Date"].Value =DateUtil.ToIsoDate(sitecoreStyleDateTime.Date);
item.Fields["Title"].Value = hubSpotResult.html_title;
item.Fields["NavigationTitle"].Value = hubSpotResult.html_title;
Sitecore.Data.Fields.LinkField link = item.Fields["NavigationTitle"];
link.Url = hubSpotResult.url;
link.Text = hubSpotResult.html_title;
item.Editing.EndEdit();
}
return item;
}
Derzeit kann ich nicht die URL der Elemente, die auf diese Weise erstellt werden, da die Einzelteile nicht vorhanden sind die Sitecore-Struktur, aber um den Link zu rendern muss ich die URL des Elements auf den Cloud-Server verweisen. Gibt es eine gute Möglichkeit, die URL festzulegen, damit LinkManager.GetItemUrl (Element) die URL zum Cloud-Server abrufen kann und auch den Titel der Verknüpfung oder des Elements darstellt?
Sie tun einige ziemlich komische Sachen hier .. wenn ich Ihr Ziel richtig verstehe, denke ich, dass Sie in einen (schreibgeschützten) kundenspezifischen Datenprovider und vielleicht einen kundenspezifischen Linkprovider schauen sollten, um mitzukommen .. (der Linkprovider ist die Art, die GetItemUrl-Funktion anzupassen) – Gatogordo
@Gatogordo Ja, es ist eine seltsame Situation, die auf meinem Schreibtisch gelandet ist. – user843681
Warum müssen Sie einen "virtuellen" Gegenstand erstellen, um die Daten hier darzustellen? Warum nicht einfach die URL mit einem Platzhalter versehen und dann die Daten aus dem REST-Service abrufen und präsentieren. Overkill scheint das Item zu erstellen. –