aboutsummaryrefslogtreecommitdiff
path: root/docs/themes-and-plugins.md
blob: 4c45ed703a28261415161089e3f5374988730f6d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Themes

They should be put in `themes/<name>/`.

Templates in `themes/<name>/*.html` override default templates in plugins.
Assets in `themes/<name>/assets/*` are served by the HTTP server at
`/themes/<name>/assets/*`.

# Plugins

Plugins can be written in Go or in Lua and live in `plugins/<name>/`.

Plugins can provide their own templates in `plugins/<name>/public/*.html`.
Assets in `plugins/<name>/public/assets/*` are served by the HTTP server at
`/plugins/<name>/assets/*`.

## Go plugins

They can use the [Go plugin helpers] and need to be included at compile-time in
`cmd/alps/main.go`.

## Lua plugins

The entry point is at `plugins/<name>/main.lua`.

API:

* `alps.on_render(name, f)`: prior to rendering the template `name`, call
  `f` with the template data (the special name `*` matches all templates)
* `alps.set_filter(name, f)`: set a template function
* `alps.set_route(method, path, f)`: register a new HTTP route, `f` will be
  called with the HTTP context