public void Process(GetDatasourceContentArgs args)
        {
            args.DatasourceItem.Fields.ReadAll();

            foreach (var field in args.DatasourceItem.Fields.Where(field => !field.Name.StartsWith("__")))
            {
                if (!IndexOperationsHelper.IsTextField(new SitecoreItemDataField(field)))
                {
                    continue;
                }

                var fieldValue = StripHtmlTags(field.Value ?? string.Empty);

                if (!string.IsNullOrWhiteSpace(fieldValue))
                {
                    args.Content.Add(fieldValue);
                }
            }

            foreach (Item child in args.DatasourceItem.Children)
            {
                var getDatasourceContentArgs = new GetDatasourceContentArgs(child, args.Content, args.IndexedItem);

                CorePipeline.Run("indexing.getDatasourceContent", getDatasourceContentArgs);
            }
        }
Exemple #2
0
        public override object ComputeFieldValue(IIndexable indexable)
        {
            var item = (Item)(indexable as SitecoreIndexableItem);

            if (item == null)
            {
                return(null);
            }

            var indexableRenderingArgs = new IndexableRenderingsArgs(item);

            CorePipeline.Run("indexing.getIndexableRenderings", indexableRenderingArgs);

            if (!indexableRenderingArgs.ValidRenderingIds.Any())
            {
                return(null);
            }

            var deviceItem = item.Database.Resources.Devices.GetAll().FirstOrDefault(d => d.IsDefault);

            if (deviceItem == null)
            {
                return(null);
            }

            var extractRenderingsDatasourceArgs = new ExtractRenderingsDatasourceArgs(item, indexableRenderingArgs.ValidRenderingIds, deviceItem);

            CorePipeline.Run("indexing.extractRenderingsDatasources", extractRenderingsDatasourceArgs);

            if (!extractRenderingsDatasourceArgs.DatasourceItems.Any())
            {
                return(null);
            }

            extractRenderingsDatasourceArgs.DatasourceItems = extractRenderingsDatasourceArgs.DatasourceItems.DistinctBy(i => i.ID).ToList();

            var content = new List <string>();

            foreach (var itemDatasource in extractRenderingsDatasourceArgs.DatasourceItems)
            {
                var getDatasourceContentArgs = new GetDatasourceContentArgs(itemDatasource, content, item);

                CorePipeline.Run("indexing.getDatasourceContent", getDatasourceContentArgs);
            }

            if (!content.Any())
            {
                return(null);
            }

            var aggregateContent = content.Aggregate((a, b) => $"{a} {b}");

            var renderedContentStringArgs = new RenderedContentStringArgs(item, aggregateContent);

            CorePipeline.Run("indexing.renderedContent.Saving", renderedContentStringArgs);

            return(renderedContentStringArgs.RenderedContent);
        }