47

I would like to use Jekyll to create a site. not a blog. Is there a way to avoid to have the creation date specified in the url and in the page's file name?

I think that the idea behind Jekyll is brilliant, but it seems too tied to blog generation content while it could be useful also in a more general use case.

alexyz78
  • 4,485
  • 6
  • 37
  • 46
  • Have a look at 1. [jekyll-Permalinks](http://jekyllrb.com/docs/permalinks/), and 2. [jekyll-configuration](http://jekyllrb.com/docs/configuration/). – Jatin Ganhotra Dec 29 '11 at 08:04

4 Answers4

50

In the _config file you can change the permalink to anything you like, for example mine is

permalink: /blog/:title

As for the date you can choose your own date using the YAML front matter, again in mine i have

title: example
date: you can pick what ever date you want
Ben
  • 47,286
  • 44
  • 159
  • 208
joshuahornby10
  • 3,954
  • 7
  • 33
  • 47
  • 5
    +1 for having the answer without an external resource, thanks a bunch! I opted for permalink: /:title as many blogs follow this format. – aaron-coding Jan 24 '15 at 15:13
11

If you aren't producing blog pages, you can create files in the directory structure mapping to certain URLs. Running on localhost, if your directory has the structure

- _layouts/
- config.yml
- index.html
- some_other_page.html
- some_directory/
    - index.html
    - some_sub_page.html

You'll have content at the following locations after jekyll has processed the files:

  • 0.0.0.0:4000 (index.html)
  • 0.0.0.0:4000/some_other_page.html (some_other_page.html)
  • 0.0.0.0:4000/some_directory (some_directory/index.html)
  • 0.0.0.0:4000/some_directory/some_sub_page.html (some_directory/some_sub_page.html)

You can also use the permalink attribute on each post to set one manually, or set a different default in config.yml Permalinks only have a small subset of variables available to use and need to be defined in every single file you want to put in a non-standard location.

This directory structure will automatically categorize your posts too. So you can have:

- some_category (defined in the yaml front matter or the _config.yml
    - index.html
    - _posts/
        - some_post.md
        - some_other_post.md

And posts will automatically have the category 'some category', and index.html will appear at 0.0.0.0:4000/some-category, with the default permalink format. The category variable is available as :category in the permalink format string.

0xcaff
  • 10,837
  • 3
  • 39
  • 54
heliotrope
  • 971
  • 7
  • 13
11

What the docs say:

You configure permalinks in your _config.yml file like this:

permalink: /:categories/:year/:month/:day/:title.html

If you don’t specify any permalink setting, Jekyll uses the above pattern as the default. The permalink can also be set using a built-in permalink style:

permalink: date

Although you can specify a custom permalink pattern using template variables, Jekyll also provides the following built-in styles for convenience.

  • date = /:categories/:year/:month/:day/:title.html
  • pretty = /:categories/:year/:month/:day/:title/
  • ordinal = /:categories/:year/:y_day/:title.html
  • none = /:categories/:title.html

Source: https://jekyllrb.com/docs/permalinks/


This is the basic setting I use:

permalink: pretty

This sets pages to the pretty permalink style. Thus '/contact.md' will become '/contact/'.

How I use it for blog posts:

permalink: /blog/:title/

This makes sure the path contains the (sluggified) title.

How I use it for collections:

permalink: /desiredpath/:name/

This makes sure the path contains the filename.

JoostS
  • 9,344
  • 3
  • 27
  • 50
7

I came across this old question while looking for a way to organize jekyll pages in a _pages directory, similarly to _posts. then access this pages without displaying the whole path in the url.

The approach that worked better for me, is to use jekyll collections as follows:

1 - Add a pages collection in _config.yml :

collections:
   pages:
     output: true
     permalink: /:path/

2 - create a new directory named _pages (it should have the same collection name, prefixed by _)

3 - add the pages in the _pages folder, as .md or .html files starting with YAML Front Matter.

eg. /_pages/about.md will looks like:

---
layout: page
---

<!-- about page content -->

after building that, the URL of the about page will be <your-web-site>/about .

Alternatively, to display a collection name, you have to define its permalink as:

permalink: /:collection/:path/
marcanuy
  • 19,934
  • 8
  • 56
  • 109
yaitloutou
  • 1,450
  • 16
  • 23