MakingPlugins
fox edited this page 4 months ago

% Making Plugins

Sorry, plugin API documentation is not written yet. You can use example plugins bundled with tt-rss and other finished plugins as a starting point. Ask on the forums if you need help with anything specific.

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 many more things.

List of hooks you can use is available in classes/pluginhost.php. Some javascript hooks are also available in js/PluginHost.js.

Some example plugins are available in the samples repository.

Localization support

See time_to_read plugin for a complete example here: https://git.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.