4.3 KiB
title | permalink |
---|---|
Permalinks | /docs/permalinks/ |
Permalinks are the output path for your pages, posts, or collections. They allow you to structure the directories of your source code different from the directories in your output.
Front Matter
The simplest way to set a permalink is using front matter. You set the
permalink
variable in front matter to the output path you'd like.
For example, you might have a page on your site located at
/my_pages/about-me.html
and you want the output url to be /about/
. In
front matter of the page you would set:
---
permalink: /about/
---
Global
Setting a permalink in front matter for every page on your site is no fun.
Luckily, Jekyll lets you set the permalink structure globally in your _config.yml
.
To set a global permalink, you use the permalink
variable in _config.yml
.
You can use placeholders to your desired output. For example:
permalink: /:categories/:year/:month/:day/:title:output_ext
Note that pages and collections (excluding posts
and drafts
) don't have time
and categories (for pages, the above :title
is equivalent to :basename
), these
aspects of the permalink style are ignored for the output.
For example, a permalink style of
/:categories/:year/:month/:day/:title:output_ext
for the posts
collection becomes
/:title.html
for pages and collections (excluding posts
and drafts
).
Placeholders
Here's the full list of placeholders available:
Variable | Description |
---|---|
|
{{ entry.desc }} |
Built-in formats
For posts, Jekyll also provides the following built-in styles for convenience:
Permalink Style | URL Template |
---|---|
|
|
Rather than typing permalink: /:categories/:year/:month/:day/:title/
, you can just type permalink: pretty
.
Specifying permalinks through the front matter
Built-in permalink styles are not recognized in front matter. As a result, permalink: pretty
will not work.
Collections
For collections (including posts
and drafts
), you have the option to override
the global permalink in the collection configuration in _config.yml
:
collections:
my_collection:
output: true
permalink: /:collection/:name
Collections have the following placeholders available:
Variable | Description |
---|---|
|
{{ entry.desc }} |
Pages
For pages, you have to use front matter to override the global permalink,
and if you set a permalink via front matter defaults in _config.yml
,
it will be ignored.
Pages have the following placeholders available:
Variable | Description |
---|---|
|
{{ entry.desc }} |