在特定種類的情況下,我不得不通過從雲服務器,然後處理一個RESTful請求,以獲取一定的數據,並沿正常Sitecore的項目呈現出來。我通過下面的代碼轉換,從一個RESTful請求Sitecore的項目數據:通過C#中的Sitecore的項目URL設置到第三方服務器
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;
}
目前,我不能得到的URL被以這種方式創建爲不存在於項目的項目Sitecore樹,但是爲了呈現我需要設置項目的Url指向雲服務器的鏈接。 有沒有好的方法來設置Url,所以LinkManager.GetItemUrl(item)可以獲取到雲服務器的URL,並且還呈現鏈接或項目的標題?
您在這裏做一些很奇怪的東西..如果我理解正確你的目標,我想你應該尋找到一個(只讀)自定義數據提供者,也許定製linkprovider一起去。(該linkprovider是定製GetItemUrl函數的方法) – Gatogordo
@Gatogordo是的,這是一個奇怪的情況,已經降落在我的桌子上。 – user843681
爲什麼你必須創建一個「虛擬」項目來呈現數據?爲什麼不只是通配符Url,然後從REST服務獲取數據並呈現它。似乎矯枉過正創建該項目。 –