A simple yet classy theme for your Jekyll website or blog. Customizable to fit your style or brand.
Built with these awesome libraries:
Here's a demo. It also works on GitHub Pages. I also use it for my own website.
Inspired by dirkfabisch's Mediator theme, which I previously used for my own blog, as well as Type Theme.
Cover image by Chris M. Morris (flickr).
This theme comes with a number of features, including:
If you're just getting started with Jekyll, you can use this repository as a starting point for your own site. Just download this project and add all the files to your project. Add your blog posts to the posts/
directory, and create your pages with the proper Jekyll front matter (see posts.html
for an example).
If your site already uses Jekyll, follow these steps:
_includes
, _layouts
, and _sass
directories with those from this project.index.html
with the one from this project, and copy over the posts.html
file as well._config.yml
from this project in to yours, and update the necessary information.Don't forget to install Jekyll and other dependencies:
# cd into project directory
cd centrarium
# install Bundler if you don't have it already
gem install bundler
# install jekyll, jekyll-archives, jekyll-sitemap, and jekyll-paginate
bundle install
This theme is ready to import into Stackbit. This theme can be deployed to Netlify and you can connect any headless CMS including Forestry, NetlifyCMS, DatoCMS or Contentful.
Links in the header and footer are auto-generated. Links will be made for all files marked category: page
, that have a title, and have the custom main_nav
front-matter variable set to true
. You can modify the rules for link generation in _layouts/nav_links.html
.
If you want change the CSS of the theme, you'll probably want to check out these files in the _sass/
directory:
base/_variables.scss
: Common values found throughout the project, including base font size, font families, colors, and more.base/_typography.scss
: Base typography values for the site (see typography.html
for a demonstration)_layout.scss
: The primary styles for the layout and design of the theme.Here are the important variables from base/_variables.scss
you can tweak to customize the theme to your liking:
$base-font-family
: The font-family of the body text. Make sure to @import
any new fonts!$heading-font-family
: The font-family of the headers. Make sure to @import
any new fonts!$base-font-size
: The base font-size. Defaults to $em-base from Bourbon (bourbon/settings/_px-to-em.scss
).$base-font-color
: The color for the body text.$action-color
: The color for links in the body text.$highlight-color
: The color for the footer and page headers (when no cover image provided).All configuration options can be found in _config.yml
.
index.html
header, and the footer.index.html
header.See the documentation for jekyll-paginate-v2 for more details.
Although this theme comes with a combined, categorized archive (see posts.html
), you can enable further archive creation thanks to jekyll-archives. Support for category and tag archive pages is included, but you can also add your own archive pages for years, months, and days.
To change archive settings, see the jekyll-archives section of _config.yml
:
jekyll-archives:
enabled:
- categories
- tags
layout: 'archive'
permalinks:
category: '/category/:name/'
tag: '/tag/:name/'
To fully disable the archive, remove the jekyll-archives section AND remove it from the gems list.
NOTE: the Jekyll Archive gem is NOT included with GitHub pages! Disable the archive feature if you intend to deploy your site to GitHub pages. Here is a guide on how you can use the jekyll archive
gem with GitHub pages. The general gist: compile the Jekyll site locally and then push that compiled site to GitHub.
A sitemap is also generated using jekyll-sitemap.
Inside of a post, you can enable syntax highlighting with the {% highlight <language> %}
Liquid tag. For example:
{% highlight javascript %}
function demo(string, times) {
for (var i = 0; i < times; i++) {
console.log(string);
}
}
demo("hello, world!", 10);
{% endhighlight %}
You can change the HighlightJS theme in _config.yml
:
highlightjs_theme: "monokai_sublime"
You can enable Disqus comments for you site by including one config option:
If you want to disable Disqus for only a specific page, add disqus_disabled: true to the page's front matter.
You can enable basic Google Analytics pageview tracking by including your site's tracking ID:
Your personal social network settings are combined with the social sharing options. In the social section of _config.yml
, include an entry for each network you want to include. For example:
social:
- name: Twitter # Name of the service
icon: twitter # Font Awesome icon to use (minus fa- prefix)
username: TheBenCentra # (User) Name to display in the footer link
url: https://twitter.com/TheBenCentra # URL of your profile (leave blank to not display in footer)
desc: Follow me on Twitter # Description to display as link title, etc
share: true # Include in the "Share" section of posts
Using the Open Graph Protocol or Twitter Card metadata, you can automatically set the images and text used when people share your site on Twitter or Facebook. These take a bit of setup, but are well worth it. The relevant fields are at the end of the _config.yml
file.
Also there is another protocol, the Open Source protocol, for saying where your site is hosted if the source is open. This helps develops more easily see your code if they are interested, or if they have issues. For more, see http://osprotocol.com.
You can enhance the posts.html
archive page with descriptions of your post categories. See the descriptions section of _config.yml
:
# Category descriptions (for archive pages)
descriptions:
- cat: jekyll
desc: "Posts describing Jekyll setup techniques."
You can add page-specific javascript files by adding them to the top-level /js
directory and including the filename in the custom_js page's configuration file:
# Custom js (for individual pages)
---
layout: post
title: "Dummy Post"
date: 2015-04-18 08:43:59
author: Ben Centra
categories: Dummy
custom_js:
- Popmotion
- Vue
---
The /js/
directory would contain the corresponding files:
$ ls js/
Popmotion.js Vue.js
Want to help make this theme even better? Contributions from the community are welcome!
Please follow these steps:
MIT. See LICENSE.MD.