semi passable css
[pinopress.git] / README.md
1 # pinopress
2
3 **pinopress** is a modular makefile based static blog generator. that means you run the build script once and every page is generated beforehand.
4 **pinopress** also focuses on extensibility, you can hook your own shell scripts into the build process to easily add any new features.
5
6 built in features include markdown generated blog articles, and a rss feed.
7
8 ## templates
9
10 templates are html snippets that you can customize. these templates are then pieced together to form the final html page. edit them to your liking. they can be found in the `templates/` directory. Here's a brief description of each one that comes by default:
11
12 template          | description
13 ------------------|-----------
14 archivepage       | html used for the archive page
15 archiveitem       | snippet for each list item on archive page
16 rollingpage       | html used for rolling page
17 rollingitem       | snippet for each rolling item
18 feed              | main xml for rss feed
19 feeditem          | xml snippet for each entry in feed
20 articlepage       | html for each article
21 navbar            | sample template for mounts
22
23 ## modules
24
25 modules are shellscripts that are called during the build process that can add extra features.
26
27 here are some potential ideas for modules:
28 - [ ] syntax highlight for code blocks
29 - [x] blog average time to read
30
31 ## pinopress flavored markdown
32
33 pinopress articles are written in an enhanced version of markdown. specification coming soon.
34
35 ## variables
36
37  **pinopress** makes extensive use of **gnu envsubst** so in each template, you can use variables that will be substituted in on build. variables can be used in both templates and blog articles. Here's a list of some that you can use:
38
39 ### global
40
41 `$SITEURL` - the SITEURL variable you set in the pinopress config
42
43 `$USERGLOBAL1` - global variable you can use however you want
44
45 `$USERGLOBAL2` - a second user defined global variable
46
47 ### article only
48
49 `$ARTICLE_TITLE` - title of article, as set in article header
50
51 `$PUBLISHED_DATE` - the date/time the article was published, as set in the article header
52
53 `$DESCRIPTION` - brief description of the blog post
54
55 `$USERLOCAL1` - article specific variable you can use for whatever you want
56
57 `$USERLOCAL2` - another user local variable
58
59 ## mounts
60
61 mounts are the **pinopress** solution to html includes. to include any file from the template directory, use the following syntax:
62 ```
63 <!-- MOUNT_[NAMEOFFILE] -->
64 ```
65 note that the name of file is without any extensions and in all caps. also, mounts are **not** expanded recursively.
66
67 **pinopress** also has the following builtin mounts that are used internally, prefixed by an underscore:
68 ```
69 <!-- _MOUNT_ARTICLECONTENT -->
70 <!-- _MOUNT_ROLLINGITEM -->
71 <!-- _MOUNT_ARCHIVEITEM -->
72 <!-- _MOUNT_FEEDITEM -->
73 ```
74