Post types
The Micropub API lets you publish a variety of post types, and Indiekit lets you decide how these different types are handled. You can do this by using a publication preset, configuring values manually, or a combination of both.
For example, to use the Jekyll preset but override the note
and photo
post types, you would add the following to your configuration:
json
{
"plugins": ["@indiekit/preset-jekyll"],
"publication": {
"postTypes": [
{
"type": "note",
"name": "Journal entry",
"post": {
"path": "_journal/{yyyy}-{MM}-{dd}-{slug}.md",
"url": "journal/{yyyy}/{MM}/{slug}"
}
},
{
"type": "photo",
"name": "Photograph",
"post": {
"path": "_photos/{yyyy}-{MM}-{dd}-{slug}.md",
"url": "photos/{yyyy}/{MM}/{slug}"
},
"media": {
"path": "media/photos/{yyyy}/{filename}"
}
}
]
}
}
{
"plugins": ["@indiekit/preset-jekyll"],
"publication": {
"postTypes": [
{
"type": "note",
"name": "Journal entry",
"post": {
"path": "_journal/{yyyy}-{MM}-{dd}-{slug}.md",
"url": "journal/{yyyy}/{MM}/{slug}"
}
},
{
"type": "photo",
"name": "Photograph",
"post": {
"path": "_photos/{yyyy}-{MM}-{dd}-{slug}.md",
"url": "photos/{yyyy}/{MM}/{slug}"
},
"media": {
"path": "media/photos/{yyyy}/{filename}"
}
}
]
}
}
Each post type can take the following values:
Name | Description |
---|---|
type | The IndieWeb post type. Required. |
name | The name you use for this post type on your own site. You needn’t specify this value, but some Micropub clients use it in their publishing interfaces. Required. |
post.path | Where posts should be saved in your content store. Required. |
post.url | Permalink (the URL path) for posts on your website. Required. |
media.path | Where media files should be saved in your content store. Required for photo , video and audio post types only. |
media.url | Public accessible URL for media files. This can use the same template variables as media.path . Optional, defaults to media.path . |
Path and URL tokens
Values for *.path
and *.url
can be customised using the following tokens:
Token | Path type | Description |
---|---|---|
y | post media | Calendar year, eg 2020 |
yyyy | post media | Calendar year (zero-padded), eg 2020 |
M | post media | Month number, eg 9 |
MM | post media | Month number (zero-padded), eg 09 |
MMM | post media | Month name (abbreviated), eg Sep |
MMMM | post media | Month name (wide), eg September |
w | post media | Week number, eg 1 |
ww | post media | Week number (zero-padded), eg 01 |
D | post media | Day of the year, eg 1 |
DDD | post media | Day of the year (zero-padded), eg 001 |
D60 | post media | Day of the year (sexageismal), eg 57h |
d | post media | Day of the month, eg 1 |
dd | post media | Day of the month (zero-padded), eg 01 |
h | post media | Hour (12-hour-cycle), eg 1 |
hh | post media | Hour (12-hour-cycle, zero-padded), eg 01 |
H | post media | Hour (24-hour-cycle), eg 1 |
HH | post media | Hour (24-hour-cycle, zero-padded), eg 01 |
m | post media | Minute, eg 1 |
mm | post media | Minute (zero-padded), eg 01 |
s | post media | Second, eg 1 |
ss | post media | Second (zero-padded), eg 01 |
t | post media | UNIX epoch seconds, eg 512969520 |
T | post media | UNIX epoch milliseconds, eg 51296952000 |
uuid | post media | A random UUID |
slug | post | Provided slug, slugified name or a 5 character string, eg ycf9o |
n [1] | post media | Incremental count of posts (for type) in the same day, eg 1 |
basename | media | 5 character alpha-numeric string, eg w9gwi |
ext | media | File extension of uploaded file, eg jpg |
filename | media | basename plus ext , eg w9gwi.jpg |
originalname | media | Original name of uploaded file, eg flower.jpg |
Using the
n
token requires a database to be configured. ↩︎