Add documentation for themes.

This commit is contained in:
Rafael Laverde 2017-10-25 17:22:17 -05:00
parent 7c0cb368fa
commit ad25b34460
5 changed files with 248 additions and 0 deletions

16
content/docs/themes/contents.lr vendored Normal file
View File

@ -0,0 +1,16 @@
title: Themes
---
sort_key: 95
---
summary: A quick introduction into Lektor Themes.
---
body:
!!!! This is under development and isn't released yet. It should be considerer
unstable and could change in the future
Lektor provides a themes system for easy implement, reuse and distibute themes.
Themes are created by the Lektor community, see avalaibles themes [here](/themes)
Lektor Themes work like an extension of the project, and theme files could be
overrided by project files.

117
content/docs/themes/creating/contents.lr vendored Normal file
View File

@ -0,0 +1,117 @@
title: Creating a Theme
---
sort_key: 30
---
summary: Explains themes structure and theme.ini file.
---
body:
!!!! Not implemeted yet
You could create a basic empty theme with the following command:
```bash
$ lektor new theme <theme-name>
```
Example:
```bash
$ lektor new theme demo-theme
```
## Theme components:
A theme could provide templates, assets, and models (also flowdocks):
```
demo-theme
├── assets
├── models
├── templates
└── flowdocks
```
## The theme_settings variable
A `theme_settings` section in `.lektorproject` file could be used for
parametrize themes:
```ini
[theme_settings]
name = "Lektor"
github_url = "https://github.com/lektor"
```
And those settings will be accessed in templates through the config env
variable:
```jinja
{{ config.theme_settings.<variable_name> }}
```
Example:
```jinja
<a href="{{ config.theme_settings.github_url }}">Github</a>
```
will output:
```
<a href="https://github.com/lektor/lektor">Github</a>
```
## The theme.ini file
Themes could provide a `theme.ini` file, that is optional, but it's required if
you want to add your theme to the lektor community themes.
Example:
```ini
name = "Demo theme"
license = "MIT"
licenselink = "https://github.com/lektor/lektor-demo-theme/blob/master/LICENSE.md"
description = "Simple, minimal theme for Lektor "
homepage = "https://github.com/lektor/lektor-demo-theme"
tags = "simple,minimal,demo"
features = "blog"
lektor_minimum_required_version = 3.1
[author]
name = "lektor"
homepage = "http://getlektor.com/"
[original]
author = ""
homepage = ""
repo = ""
[packages]
lektor-disqus-comments = 0.2
```
The `[original]` section is only required if you are porting an existing theme.
!!!! Not implemeted yet
The `lektor_minimum_required_version` is used by Lektor to check the
compatibility when installing a theme.
## Releasing a theme
!!!! Not implemeted yet
You could add a theme to lektor community theme, open a pull request against
(lektor themes)[https://github.com/lektor/lektor-themes] adding it as a git
submodule.
You should also include an `images/` folder with an screenshot and a thumbnail:
```
demo-theme
└── images
├── thumbnail.png
└── screenshot.png
```
Themes added to this lektor-themes repository, will automatically added to the
lektor website.

View File

@ -0,0 +1,20 @@
title: Customizing a theme
---
sort_key: 20
---
summary: Explains how models, templates, or assets could be overrided.
---
body:
You could personalize a theme by overrided some files, for example if a theme
provide a blog model in:
```
/themes/<theme>/models/blog.ini
```
You could override it by creating a blog model:
```
/models/blog.ini
```

View File

@ -0,0 +1,73 @@
title: Installing a theme
---
sort_key: 10
---
summary: Explains how to install Lektor themes.
---
body:
For installing a theme you just need to copy it to the `themes/` folder
```
project
├── assets
├── models
├── content
...
└── themes
└── lektor-theme-nix
```
Themes are normally distibute by github repos, so you could install a theme by
cloning the repo:
```bash
cd themes
git clone URL_TO_THEME_REPO
```
For example, for installing `lektor-theme-nix`:
```bash
cd themes
git clone https://github.com/rlaverde/lektor-theme-nix.git
```
If you download several themes, setting `themes` variable will allow to only load
a particular theme.
!!!! Not implemeted yet.
You could add the `themes` variable to the `.lektorproject` file and lektor will
search in the (community themes)[/themes] and automatically install it.
```ini
[project]
themes = lextor-theme-nix
```
## Installing multiple themes
Lektor also support installing several themes, copy them to the `themes/`
folder, and set the `themes` variable to indicate the precedence (optional).
```
project
├── assets
├── models
├── content
...
└── themes
├── lektor-theme-other-theme/
└── lektor-theme-nix/
```
```ini
[project]
themes = lextor-theme-nix,lektor-theme-other-theme
```
This will make `lektor-theme-nix`, to have a higher precedence, and files present
in both themes will be loaded from it.
!! If you don't set `themes` variable, all themes will be loaded, but the order
isn't preserved.

View File

@ -0,0 +1,22 @@
title: Installing plugins with a theme.
---
sort_key: 40
---
summary: Explains how a theme could depend or include several plugins.
---
body:
!!!! Not implemeted yet.
Themes could depend on [plugins](../../plugins), and they will be loaded along
the theme.
1. You could use the `[packages]` section of the `theme.ini` to install
released packages:
```ini
[packages]
lektor-disqus-comments = 0.2
```
2. Plugins can be added to the `packages/` folder in the theme. Each plugin has
to go into a separate folder.