Exemple #1
0
 public void Execute(IndexContentEvent e)
 {
     if (e.Content.GetValue <bool>("hideFromIndex"))
     {
         e.Cancel = true;
     }
 }
        public void Execute(IndexContentEvent e)
        {
            if (!e.Content.HasProperty(hideFromIndex))
            {
                return;
            }

            e.Cancel = e.Content.GetValue <bool>(hideFromIndex);
        }
Exemple #3
0
        /// <summary>
        /// Indexes a content item
        /// </summary>
        /// <param name="content">The content item</param>
        /// <param name="indexName">Optional index name to index specific index, ignoring others</param>
        public void Index(IContentBase content, Source source, string indexName = null)
        {
            var config = ConfigProvider.GetRootConfig();

            var indexer = LoadIndexer(config);

            var indexes = indexName != null ? new[] { indexName } : config.Indexes.ToArray();

            foreach (var indexAlias in indexes)
            {
                var indexConfig = ConfigProvider.GetIndexConfig(indexAlias);

                var contentTypeConfig = source == Source.Content
                    ? indexConfig.ContentTypes.FirstOrDefault(c => c.Alias == content.GetContentType().Alias)
                    : indexConfig.MediaTypes.FirstOrDefault(c => c.Alias == content.GetContentType().Alias);

                if (contentTypeConfig == null)
                {
                    contentTypeConfig = indexConfig.ContentTypes.FirstOrDefault(c => string.IsNullOrWhiteSpace(c.Alias));
                    if (contentTypeConfig == null)
                    {
                        continue;
                    }
                }

                var indexableItem = GetIndexableItem(indexConfig, contentTypeConfig, content);

                switch (source)
                {
                case Source.Content:
                    indexableItem.AddOrUpdate("_umbracoSource", "content");
                    break;

                case Source.Media:
                    indexableItem.AddOrUpdate("_umbracoSource", "media");
                    break;
                }

                var indexContentEvent = new IndexContentEvent
                {
                    Content   = content,
                    IndexItem = indexableItem,
                    Cancel    = false
                };
                foreach (var contentIndexStrategy in contentTypeConfig.IndexStrategies.Concat(indexConfig.IndexStrategies))
                {
                    var strategy = IndexStrategyResolver.GetContentIndexStrategy(contentIndexStrategy);
                    strategy.Execute(indexContentEvent);

                    if (indexContentEvent.Cancel)
                    {
                        break;
                    }
                }

                if (!indexContentEvent.Cancel)
                {
                    indexer.Index(indexConfig.Alias, indexableItem);
                }
            }
        }