25 MakingPlugins
fox edited this page 2022-09-02 19:44:32 +03:00

% Making Plugins

Plugins may render new preference panes or embed themselves into several existing one, store data using simple key -> value data or directly in the database, modify how articles are rendered, alter feed data, and much more.

You can use sample plugins bundled with tt-rss and other plugins as a starting point. Ask on the forums if you need help with anything specific.

WIP: Auto-generated API reference is available here:

Frontend (JS) uses different hooks, defined in js/PluginHost.js.

A few more example plugins are available in the samples repository.

Localization support

See time_to_read plugin for a complete example here: https://dev.tt-rss.org/fox/ttrss-time-to-read

Implementation

  • Plugin translations are placed in a separate Gettext domain (name equals lowercase plugin class).
  • Translation (.po) file in (plugin dir)/locale/(LANG)/LC_MESSAGES/ name should correspond to Gettext domain name.

Using gettext

  • On the PHP side, either use helper methods defined in classes/plugin.php (base class for all plugins) or call _dgettext group of functions directly.
  • On the Javascript side, all translations are merged so you can use the usual __() shortcut function.