Most of it is adding an additional query string param personal=false
to any links within the template, so that after the initial search, clicking any facets, pagination or sorting options will not reapply a personalisation occurring on the site that looks for that param and applies a cookie if it doesn't find it.
e.g. A user sets their preferred 'region', which should be used as a pre-selected facet on the initial search, but should otherwise just respect the other query string params upon clicking anything else.
At the moment, we have a Matrix REST JS asset that looks for &form=listing
in the response HTML and replaces it with &personal=false&form=listing
. There's a couple of other replaces, one which is rewriting the webpath/endpoint from search.html to the current page's URL (which I guess can be better achieved with a blank ui.modern.search.link
in the collection.cfg
.
We're also replacing a default/placeholder image with another, so maybe looping through the results in the data model could achieve that, though it might not be that simple if some of the metadata fields have multiple values etc.
The reason I don't want to just keep using Matrix REST assets is because we're using Squiz Edge and want to use ESI to fetch the results for better caching and performance.