jekyll-theme-perry
This is a custom Jekyll theme used for my own websites, but anyone who likes it is welcome to make use of it for their own purposes. I have developed this as a hobby, the coding is not necessarily brilliant so if you want to use it, but have some suggestions as to how it could be improved, then please feel free to submit issues, pull/merge requests etc for me to look at. I can't guarantee I will make any changes, but I will certainly be interested to get feedback from better developers :smiley:
Installation
Add this line to your Jekyll site's Gemfile:
gem "jekyll-theme-perry"
And add this line to your Jekyll site's _config.yml:
theme: jekyll-theme-perry
And then execute:
$ bundle
Or install it yourself as:
$ gem install jekyll-theme-perry
Features
- Responsive layout
- HTML5
- Jekyll SEO Tag support
- Jekyll Redirect From support
- Jekyll Archvies support
- Post Series support
Usage
Before making use of this theme, there are a number of settings that need to be added to the
_config.yml file, and a couple of yaml files to be added to the _data directory.
The following items need to be added to the _config.yml file otherwise there will be errors:
titleYour site title;authorThe global site author (more details below);urlThe full url of the website;-
gems: ['jekyll-seo-tag']Essential gem used by the theme.
The Jekyll SEO Tag plugin is included to handle the SEO tags for the theme. If it is not
included in the gems list then the theme will fail.
The navigation menu is generated based on a yaml file in the _data folder. The file needs to be
named links.yml and the format is as follows:
- url: /
title: Home
- url: /blog
title: Blog
sub:
- url: /blog/jekyll
title: Jekyll
- url: /blog/technology
title: Technology
- url: /about
title: About Me
Author information needs to be included in the file _data\authors.yml and can be leveraged in much
the same way as it is by the Jekyll SEO Tag plugin as detailed here, although much
more detail has been included in this theme so the following options are available for use on author
pages:
richard:
name: Richard Perry
about:
email:
web:
facebook:
flickr:
github:
gravatar:
google:
instagram:
linkedin:
twitter:
That's all that needs to be done to get the theme up and running, but that's not all there is. The
theme has built in support for the Jekyll Archives and Jekyll Redirect From gems with
a layouts for both included by default. To make use of these plugins, you need to include the gems
in your _config.yml file. The gems section should now something like this:
gems:
- jekyll-seo-tag
- jekyll-archives
- jekyll-redirect-from
Or
gems: ['jekyll-seo-tag','jekyll-archives','jekyll-redirect-from']
In the page footer, you can include copyright information, a 'Powered by Jekyll' attribution and a
'Hosted by' attribution. All you need to do is include the following in your _config.yml file:
meta:
copyright:
year: '2009' # First year of copyright attribution, this will show 2009 - 2017
powered-by: true
hosting:
name: GitHub Pages
link: //pages.github.com/
The copyright year is the year you want the copyright to start from. The copyright attribution will
use site.data.authors[site.author].name, so set that appropriately. If you just want the copyright
to display the current year then it should be set to copyright: true with no year.
Also, you can include a logo as part of your header with the logo tag in your _config.yml file.
Archives
Archive pages for Categories, Tags, Year, Month & Day can all be automatically generated through the
Jekyll Archives gem as mentioned above, and the theme includes a single layout for them all
(this can be overidden with your own archive.html layout file, or using the Jekyll Archives
configuration settings). To make use of the plugin, you need to add the configuration options
relevant to you. Further information on this can be found here.
This theme also has support for generating lists of posts organised by date in reverse order for use
as additional archives. The posts are listed and grouped by year and month. This feature can be used
on any page by putting {% include archives.html %} within any loop i.e.
{% for post in site.posts %}
{% include archives.html %}
{% endfor %}
Post Series
There is also support for creating post series with quick links to the other posts in the series (Of
course, you could just use Categories and/or Tags for this as the Jekyll Archives plugin
creates the archive pages for these already). To make use of this feature you will need to add a
_data\series.yml file using the following format:
- name: "Migrating to Jekyll"
description: "At the back end of last year, I started migrating my website to Jekyll. This series
details my journey through that."
image: "/assets/images/jekyll.png"
copyright: "Copyright © 2017 <a href='//jekyllrb.com/' title='Jekyll'>Jekyll</a>"
permalink: /series/jekyll/
start: "2014-03-18 19:30:00+00:00"
end: "2014-04-14 21:00:00+00:00"
Then to add a post to the series simply add series: Migrating to Jekyll to the frontmatter. Then
to create a page to list all posts in the series in chronological order create a page with the same
line in the frontmatter and a layout of series. Post summaries for each post in the series will
then be included at the bottom of the page displayed with the oldest post first.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/richardp2/jekyll-theme-perry. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
Development
To set up your environment to develop this theme, run bundle install.
Your theme is setup just like a normal Jekyll site! To test your theme, run bundle exec jekyll
serve and open your browser at http://localhost:4000. This starts a Jekyll server using your
theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make
modifications to your theme and to your content, your site will regenerate and you should see the
changes in the browser after a refresh, just like normal.
When your theme is released, only the files in _layouts, _includes, _sass and assets
tracked with Git will be released.
License
The theme is available as open source under the terms of the MIT License.