I'm working in a search functionality, with the following elements:
1) I've a ShopPage, with a ShopContentArea that can contain only ShopBlocks (with name, address, region, state, etc)
2) I've a ShopResultsPage, where I need to get the ShopBlocks from ShopPages, filtering them with the value of some properties (search parameters: region/state), and display this ShopBlocks in a ShopContentArea in the ShopResultsPage.
I don't know how to develop such functionality in EpiServer 8 MVC. Basically the problem is that I'm not sure about:
- How get blocks from a content area of various ShopPages.
- How filter theses blocks.
- How to add the filtered blocks to a content area in the ShopResultspage.
Any of you have suggestions on how to make it working???
Are you using EPiServer Find or standard EPiServer search based on Lucene.NET?
I'm using standard EPiServer search based on Lucene.NET.
Ted Nyberg wrote a blog post on how to add custom fields to the search index: http://tedgustaf.com/blog/2013/4/add-custom-fields-to-the-episerver-search-index-with-episerver-7/
You should index custom fields for region, state, etc.
And then you can get ShopBlocks like this:
var searchHandler = ServiceLocator.Current.GetInstance<SearchHandler>();
var query = new GroupQuery(LuceneOperator.AND);
// todo: filter by region, state, etc.
// return first 10 hits
var result = searchHandler.GetSearchResults(query, 1, 10);
Thank you Dejan!!