searxng/docs/dev/plugins.rst
Martin Fischer 132917ff42 [fix] remove js_dependencies & css_dependencies
Previously plugins could declare js_dependencies and css_dependencies
which in theory would then be embedded in the page by themes.

Practically this does not make sense when you have multiple themes
since the JS & CSS needs to be written with a specific theme in mind
in order to support it.

Which is also why js_dependencies and css_dependencies was actually only
used by the Oscar theme and ignored by the Simple theme because the
Simple theme doesn't bundle jQuery and has a slightly different page
markup.

This commit removes this broken feature and also moves the *.js files in
searx/static/plugins/js/ to searx/static/themes/oscar/src/js/plugins
(where they actually belong).

The oscar-specific CSS is now simply injected via the oscar-specific JS.

Fixes #769.
2022-01-20 12:11:10 +01:00

2.5 KiB

Plugins

Further reading ..

  • plugins generic

Plugins can extend or replace functionality of various components of searx.

Example plugin

name = 'Example plugin'
description = 'This plugin extends the suggestions with the word "example"'
default_on = False  # disabled by default


# attach callback to the post search hook
#  request: flask request object
#  ctx: the whole local context of the post search hook
def post_search(request, search):
    search.result_container.suggestions.add('example')
    return True

External plugins

External plugins are standard python modules implementing all the requirements of the standard plugins. Plugins can be enabled by adding them to settings.yml's plugins section. Example external plugin can be found here.

Register your plugin

To enable your plugin register your plugin in searx > plugin > __init__.py. And at the bottom of the file add your plugin like. plugins.register(name_of_python_file)

Plugin entry points

Entry points (hooks) define when a plugin runs. Right now only three hooks are implemented. So feel free to implement a hook if it fits the behaviour of your plugin. A plugin doesn't need to implement all the hooks.