Last active
June 29, 2019 10:29
-
-
Save sreekrishnan1993/2de62ce0d4840e24c075f532ac36cc09 to your computer and use it in GitHub Desktop.
GetDatasourceItemByQuery
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class GetDataSourceItemByQuery | |
{ | |
public void Process(ParseDataSourceArgs args) | |
{ | |
if (args.DataSource.StartsWith("query:")) | |
{ | |
return; | |
} | |
List<SearchStringModel> list = SearchStringModel.ParseDatasourceString(args.DataSource).ToList<SearchStringModel>(); | |
if (list.Count == 0) | |
return; | |
using (IProviderSearchContext searchContext = this.CreateSearchContext(args)) | |
{ | |
foreach (SearchResultItem searchResultItem in (IEnumerable<SearchResultItem>)this.GetItems(list, searchContext)) | |
{ | |
Item obj = searchResultItem?.GetItem(); | |
if (obj != null) | |
args.Items.Add(obj); | |
} | |
args.AbortPipeline(); | |
} | |
} | |
protected virtual IQueryable<SearchResultItem> GetItems(List<SearchStringModel> items, IProviderSearchContext searchContext) | |
{ | |
return LinqHelper.CreateQuery<SearchResultItem>(searchContext, (IEnumerable<SearchStringModel>)items); | |
} | |
protected virtual IProviderSearchContext CreateSearchContext(ParseDataSourceArgs args) | |
{ | |
Assert.ArgumentNotNull((object)args, nameof(args)); | |
return ContentSearchManager.GetIndex((IIndexable)(SitecoreIndexableItem)Context.Item).CreateSearchContext(SearchSecurityOptions.Default); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<parseDataSource> | |
<processor patch:instead="*[@type='Sitecore.ContentSearch.Client.Pipelines.ParseDataSource.GetDataSourceItemByQuery, Sitecore.ContentSearch.Client']" type="Myproject.Foundation.Extensions.Pipelines.ParseDataSource.GetDataSourceItemByQuery, Myproject.Foundation.Extensions" /> | |
</parseDataSource> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment