November Happy Hour will be moved to Thursday December 5th.

How to use IContentIndexerConventions.ShouldIndexInContentAreaConvention to index content of ContentAreaItem

Vote:
 

Hi,

I have a requirement to allow content of ContentAreaItem item to be indexed with page content in SearchText and of course, I can’t use [IndexInContentarea] attribute due to some restrictions on referencing.

So, is it possible to do that with the help of IContentIndexerConventions.ShouldIndexInContentAreaConvention

If it is, then how? I tried to find a code sample, but total waste of time. Can anyone help me with how to use this (ShouldIndexInContentAreaConvention) to allow a Block (say CopyBlock) to get it's content indexed.

#201894
Mar 06, 2019 12:01
Vote:
 

Hi Praful,

First create your IShouldIndexInContentAreaConvention implementation:

public class ShouldIndexCopyBlockInContentAreaConvention : IShouldIndexInContentAreaConvention
{
    public bool? ShouldIndexInContentArea(IContent contentInArea)
    {
        // Add whatever additional logic you need here!

        if (contentInArea is CopyBlock)
        {
            return true;
        }

        return false;
    }
}

Then go ahead and replace the default via an InitializableModule:

[InitializableModule]
[ModuleDependency(typeof(EPiServer.Find.Cms.Module.IndexingModule))]
public class SearchConventionInitializationModule : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        ContentIndexer.Instance.Conventions.ShouldIndexInContentAreaConvention = new ShouldIndexCopyBlockInContentAreaConvention();
    }

    public void Uninitialize(InitializationEngine context) {}
}

This example is obviously ridiculously simple, you could also take a peek at the DefaultShouldIndexInContentAreaConvention (in EPiServer.Find.Cms.Conventions) where the published status of the content is checked before indexing (it's probably worth doing something similar).

Anyway, hope that gives you a starting point.

/Jake

#201909
Mar 06, 2019 17:05
Vote:
 

Hi Jake,

First of all thank you so much, this example worked. Really helpful information. :)

#201913
Mar 07, 2019 4:25
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.