Enable Search and Search Suggestions for Page Designer Pages
Page Designer pages and components are content assets that can optionally be assigned
to folders. In order to also make pages that are not assigned to folders searchable, you
must extrend the ContentSearchModel
to remove the folder filter. The same
applies to content suggestions, so you want to apply the same adjustment to the
SuggestModel
as well.
For example, in the Storefront Reference Architecture (SFRA)
searchHelpers.js file, we could add the following line to the
setupContentSearch
function so that searching can find content
assets that are not in folders:
apiContentSearchModel.setFilteredByFolder(false);
The modified setupContentSearch
function is as follows:
function setupContentSearch(params) {
var ContentSearchModel = require('dw/content/ContentSearchModel');
var ContentSearch = require('*/cartridge/models/search/contentSearch');
var apiContentSearchModel = new ContentSearchModel();
apiContentSearchModel.setRecursiveFolderSearch(true);
apiContentSearchModel.setSearchPhrase(params.q);
apiContentSearchModel.setFilteredByFolder(false);
apiContentSearchModel.search();
var contentSearchResult = apiContentSearchModel.getContent();
var count = Number(apiContentSearchModel.getCount());
var contentSearch = new ContentSearch(contentSearchResult, count, params.q, params.startingPage, null);
return contentSearch;
}
In the Storefront Reference Architecture (SFRA) SearchServices.js
file, we could set the setFilteredByFolder
attribute of the
SuggestModel
to false so that content assets that are not in
folders can be found using content suggestions:
suggestions.setFilteredByFolder(false);
The modified code is as follows:
if (searchTerms && searchTerms.length >= minChars) {
suggestions = new SuggestModel();
suggestions.setFilteredByFolder(false);
suggestions.setSearchPhrase(searchTerms);
suggestions.setMaxSuggestions(maxSuggestions);
categorySuggestions = new CategorySuggestions(suggestions, maxSuggestions);
}