On, we converted the Search module to use plugins. However, the way that was set up, modules can each provide one plugin. For better flexibility, we should instead allow people to configure multiple instances of each search plugin type provided by a module. Which means a ConfigEntity.
Allow users to define "search pages", each of which is based on a particular Search plugin type provided by a module. The user interface should be similar to this:
When defining a search page, you will be able to set up plugin-specific configuration options (such as the node ranking settings for the Node plugin). Also, you'll choose a title (used as the tab title and page title), a URL suffix (you will search at search/(suffix)), and a machine name (used in the search index).
Viable patch, with tests, is in progress.
User interface changes
The administration of Search will change:
1. The Search Settings page will have all of its plugin-type-specific settings removed from the page and put into plugin-specific configuration pages instead.
2. The Plugins section on the Search Settings page will be replaced by a Search Pages section similar to the UI mockup above.
3. You will be able to have multiple copies of each search plugin, each as a "search page".
- A few methods on the Search Plugin interfaces will be changing (to be determined), around the area of configuration.
- Search plugin annotation will need to change a bit, since the URL is not per-plugin-type any more.
- Plugins will need to be written so that they do not hard-wire their plugin IDs or URLs into queries, redirects, and such.