Using Hooks


Hooks are used by the SearchStax Site Search solution’s various JS Widgets to manipulate data before and after certain web events to customize Site Search functionality.

beforeSearch hook

This hook can be passed when initializing SearchStax. This function gets called before search is executed so it allows modification to search object to change query, page, itemsPerPage, order, facets and additionalProps, or to cancel search altogether.

Example of usage when we want to cancel search if query is “test”:

beforeSearch(props: ISearchObject) {
  const propsCopy = { ...props }
  if(propsCopy.query === ‘test’) {
	return null;
  } else {
	//modifications can be made to propsCopy before returning to modify the search
	return propsCopy
  }
 }

Another common use case can be altering the query to pass additional query parameters, like the name of a relevance model.

beforeSearch(props: ISearchObject) {
  const propsCopy = { ...props }
  copy.additionalProps = [{model: 'ElevatedResultsModel'}]
	return propsCopy
 }

afterSearch hook

This hook can be passed when initializing SearchStax. This function gets called after search is executed. It allows modification to search results before they get to the render pipeline.

Example of usage:

afterSearch(results: ISearchstaxParsedResult[]) {
  const copy = [...results]
  if(copy[0]) {
    copy[0].title += ‘title suffix’;
  }
  return copy
 }

beforeAutosuggest hook

This hook can be passed when initializing the input widget. This function gets called before the autosuggest call is executed. It allows modification to suggestion props object before it gets converted in to autosuggest call.

Example of usage:

beforeAutosuggest: function (props: ISearchstaxSuggestProps) {
    // gets suggestProps, if passed along further autosuggest will execute, if null then event gets canceled
    // props can be modified and passed along
    const propsCopy = { ...props };
    // propsCopy.term = propsCopy.term + ‘222’;
    return propsCopy;
 }

afterAutosuggest hook

This hook can be passed when initializing the input widget. This function gets called after the autosuggest call returns suggestions. It allows modification to suggestions before they get to the render pipeline.

Example of usage:

afterAutosuggest: function (result: ISearchstaxSuggestResponse) {
    const copy = { ...result };
    return copy;
 }

afterLinkClick hook

This hook can be passed when initializing the result widget. This function gets called after the user clicks on a result item. It allows canceling of the event if the function returns null.

Example of usage:

afterLinkClick: function (result: ISearchstaxParsedResult) {
    // result that was clicked, if passed along further functions will execute, if null then event gets canceled
    const propsCopy = { ...result };
    return propsCopy;
}

Questions?

Do not hesitate to contact the SearchStax Support Desk.