示例#1
0
        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);
        }
示例#2
0
        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);
        }