public override ItemDefinition GetItemDefinition(ID itemId, Sitecore.Data.DataProviders.CallContext context) { var itemDefinition = context.CurrentResult as ItemDefinition; if (itemDefinition == null || !Templates.Contains(itemDefinition.TemplateID)) { return(null); } //ideally we would find a way of clearing the items from Sitecore caches when data changes instead (itemDefinition as ICacheable).Cacheable = false; context.DataManager.Database.Caches.DataCache.RemoveItemInformation(itemDefinition.ID); context.DataManager.Database.Caches.ItemCache.RemoveItem(itemDefinition.ID); return(null); }
public override FieldList GetItemFields(ItemDefinition itemDefinition, VersionUri versionUri, Sitecore.Data.DataProviders.CallContext context) { if (!Templates.Contains(itemDefinition.TemplateID)) { return(null); } var currentFields = context.CurrentResult as FieldList; var productCode = currentFields != null ? currentFields[ActiveCommerce.TemplateFields.ProductCode] : null; if (productCode.IsNullOrEmpty()) { return(null); } var book = Data.Elements("book").SingleOrDefault(x => x.Attribute("id").Value == productCode); if (book == null) { return(null); } var fields = new FieldList(); fields.Add(FieldIDs.Author, book.Element("author").Value); fields.Add(FieldIDs.Genre, book.Element("genre").Value); var dateValue = DateTime.ParseExact(book.Element("publish_date").Value, "yyyy-MM-dd", CultureInfo.InvariantCulture); fields.Add(FieldIDs.PublishDate, Sitecore.DateUtil.ToIsoDate(dateValue)); return(fields); }