/// <summary> /// Method to compute RenderingsContent /// </summary> /// <param name="indexable">indexable object.</param> /// <returns>object.</returns> public object ComputeFieldValue(Sitecore.ContentSearch.IIndexable indexable) { string renderingsContent = string.Empty; SitecoreIndexableItem sitecoreIndexable = null; try { sitecoreIndexable = indexable as SitecoreIndexableItem; if (sitecoreIndexable == null) { return(null); } TemplateItem[] baseTemplates = sitecoreIndexable.Item.Template.BaseTemplates; if (baseTemplates.Length > 0) { string basePageTemplateId = SitecoreSettings.BasePageTemplateId.ToUpper().Replace("{", string.Empty).Replace("}", string.Empty); foreach (TemplateItem baseTemplate in baseTemplates) { if (baseTemplate.ID.Guid.ToString().ToUpper().Equals(basePageTemplateId)) { // find renderings with datasources set var customDataSources = ExtractRenderingDataSourceItems(sitecoreIndexable.Item); // extract text from data sources var contentToAdd = customDataSources.SelectMany(GetItemContent).ToList(); if (contentToAdd.Count == 0) { return(renderingsContent); } renderingsContent = string.Join(" ", contentToAdd); } } } } catch (Exception ex) { string itemId = string.Empty; if (sitecoreIndexable.Item != null) { itemId = sitecoreIndexable.Item.ID.ToString(); } Log.Error(this.GetType().Name + " - Item ID: " + itemId, ex, this); } return(renderingsContent); }
public object ComputeFieldValue(Sitecore.ContentSearch.IIndexable indexable) { var indexableItem = indexable as SitecoreIndexableItem; if (indexableItem == null) { return(null); } var item = (Sitecore.Data.Items.Item)indexableItem; if (item == null) { return(null); } var value = item[SourceFieldName]; return((value != "").ToString()); }
public object ComputeFieldValue(Sitecore.ContentSearch.IIndexable indexable) { Item item = (Item)(indexable as SitecoreIndexableItem); List <string> list = new List <string>(); if (item.IsValidType <BlogPost>()) { List <Category> categoryItems = item.CreateAs <BlogPost>().Categories.ToList(); if (categoryItems.Any()) { categoryItems.ForEach(tItem => { if (tItem != null) { list.Add(tItem.CategoryName); } }); } } return(list); }
public object ComputeFieldValue(Sitecore.ContentSearch.IIndexable indexable) { var indexableItem = indexable as SitecoreIndexableItem; if (indexableItem == null) { return(null); } var item = (Sitecore.Data.Items.Item)indexableItem; if (item == null) { return(null); } var latLon = item[SourceFieldName]; if (latLon == "" || latLon == "NULL") { return(null); } // Convert from georss point to normal X, Y format latLon = latLon.Replace(" ", ", "); var spatialContext = SpatialContext.GEO; var geohashTree = new GeohashPrefixTree(spatialContext, 10); var strategy = new RecursivePrefixTreeStrategy(geohashTree, FieldName); var shape = spatialContext.ReadShape(latLon); var grid = strategy.GetGrid(); int levelForDistance = grid.GetLevelForDistance(strategy.DistErrPct); IList <Node> list = grid.GetNodes(shape, levelForDistance, true); return(list.Select(node => node.GetTokenString())); }
public object ComputeFieldValue(Sitecore.ContentSearch.IIndexable indexable) { if (SiteContext == null) { return(null); } var indexItem = indexable as SitecoreIndexableItem; if (indexItem == null) { return(null); } var item = (Sitecore.Data.Items.Item)indexItem.Item; if (item == null) { return(null); } if (!item.Template.DescendsFrom(TemplateIDs.ProductBase)) { return(null); } using (new ShopContextSwitcher(SiteContext, item.Database)) { var repository = Sitecore.Ecommerce.Context.Entity.Resolve <IAdvancedProductRepository>(); var product = repository.GetProduct <ProductBaseData>(item); if (product == null) { return(null); } return(ComputeFieldValue(product, indexable)); } }
public object ComputeFieldValue(Sitecore.ContentSearch.IIndexable indexable) { var item = (Item)(indexable as SitecoreIndexableItem); if (item == null) { return(null); } // optimization to reduce indexing time // by skipping this logic for items in the Core database if (System.String.Compare( item.Database.Name, "core", System.StringComparison.OrdinalIgnoreCase) == 0) { return(null); } if (item.Paths.IsMediaItem) { //skip media root and folder items if (item.TemplateID != Sitecore.TemplateIDs.MediaFolder && item.ID != Sitecore.ItemIDs.MediaLibraryRoot) { return(null); } } //From Sitecore 8.0 onwards we need to look in Final Renderings for latest content versions LayoutField layoutField = item.Fields["__Final Renderings"]; RenderingReference[] renderings = layoutField.GetReferences(GetDefaultDevice(item.Database)); if (renderings == null) { return(null); } StringBuilder sb = new StringBuilder(); foreach (var renderingReference in renderings) { var datasourceId = renderingReference.Settings.DataSource; //Check if datasource has been set or we get null reference errors if (!string.IsNullOrWhiteSpace(datasourceId)) { var referencedItem = item.Database.GetItem(datasourceId, item.Language); foreach (Field field in referencedItem.Fields) { if (!field.IsStandardTemplateField()) { if (field.Type == "Single-Line Text" || field.Type == "Rich Text") { sb.Append(" ").Append(StripTags(field.Value)); } } } } } return(sb.ToString().Trim()); }
protected abstract object ComputeFieldValue(ProductBaseData product, Sitecore.ContentSearch.IIndexable indexable);