A free and open-source Jekyll theme. Based on Rohan Chandra type-theme packed with extra features and easily customizable:
Check out this tutorial: Use as Ruby Gem
git clone https://github.com/Sylhare/Type-on-Strap.git
gem install jekyll
, check #1 if you have a problem.bundle install
_config.yml
bundle exec jekyll serve
Here are the main files of the template
Type-on-Strap
├── _includes # theme includes
├── _layouts # theme layouts (see below for details)
├── _portfolio # collection of article to be populated in the portfolio page
├── _posts # Blog posts
├── _sass # Sass partials
├── assets
| ├── js # theme javascript, Katex, jquery, bootstrap, jekyll search,
| ├── css # isolated Bootstrap, font-awesome, katex and main css
| ├── fonts # Font-Awesome, and other fonts
| └── img # Images used for the template
├── pages
| ├── 404.md # To be displayed when url is wrong
| ├── about.md # About example page
| ├── gallery.md # Gallery page for your photos
| ├── portfolio.md # Portfolio page for your projects
| ├── search.html # Search page
| └── tags.md # The tag page
├── _config.yml # sample configuration
├── _data.yml
| ├── authors.yml # Update the post authors configurations
| ├── language.yml # Localization configuration
| ├── social.yml # Social configurations to share posts (RSS, shares, ...)
| └── icons.yml # Footer icons (Twitter, Github, Stackoverflow, ...)
└── index.html # sample home page (blog page paginated)
Open _config.yml
in a text editor to change most of the blog's settings.
If a variable in this document is marked as "optional", disable the feature by removing all text from the variable.
Configure Jekyll as your own blog or with a "baseurl" in _config.yml
:
Jekyll website without a "baseurl" (such as a GitHub Pages website for a given username):
baseurl: ""
url: "https://username.github.io"
Jekyll website with "baseurl" (like the Type on Strap demo page):
baseurl: "/sub-directory"
url: "https://username.github.io/"
Please configure this before using the theme.
Meta variables hold basic information about your Jekyll site which will be used throughout the siteand as meta properties for search engines, browsers, and the site's RSS feed.
Change these variables in _config.yml
:
title: My Jekyll Blog # Name of website
avatar: assets/img/triangle.png # Path of avatar image, to be displayed in the theme's header
description: My blog posts # Short description, primarily used by search engines
favicon: assets/favicon.ico # Icon displayed in the tab
color_theme: auto # color theme auto, dark or light
You can also customize the seo tags default option following the jekyll-seo-tag plugin documentation.The color theme can be set to dark or light (customize it in variables.scss).Using auto you'll have a tiny icon in the navbar allowing the use to manually switch from dark to light theme.
Customize your site header/footer with these variables in _config.yml
:
header_text: Welcome to my Jekyll blog
header_feature_image: assets/img/sample3.png
footer_text: Copyright 2017
If you don't want anything, replace the value by " "
.
Localization string is a way to quickly change the template language for text like Next Post or Follow on, ...You can find all the properties in _data/language.yml
.
By default, it is in english, but you can easily add your own language.
To enable Google Analytics, add your tracking IDto _config.yml
like so:
google_analytics: UA-NNNNNNNN-N
If you have a Disqus account, you can show a comments section below each post.
To enable Disqus comments, add your Disqus shortnameto your project's _config.yml
file:
comments:
disqus_shortname: my_disqus_shortname
Cusdis is an open source alternative to Disqus.You can read more about it in the documentation
To enable it, set your cusdis name in _config.yml
:
comments:
cusdis_app_id: my_data-app-id
Utterances is another open source alternative linked to one's GitHub account.It stores the comments as GitHub issues on a repository for each page.
Install the utterance app to your repo.After installing, add your info in the _config.yml
:
comments:
utterances: # Enable by filling below information. For more info, go to https://utteranc.es
repo: # your public comments repository (e.g. owner/repo)
issue-term: # Issue term (e.g. "comment" consider issues with this word in the title as comments)
theme: # OPTIONAL: Take the `color_theme` by default, or set a custom one like github-dark-orange
label: # OPTIONAL: Adds an issue label in the issue
When KateX is set in _config.yml
:
katex: true # to enable it
You can then wrap math expressions with $$
signs in your posts and make sure you have set the katex
variablein _config.yml
to true
for math typesetting.
For inline math typesetting, type your math expression on the same line as your content. For example:
Type math within a sentence $$2x^2 + x + c$$ to display inline
For display math typesetting, type your math expression on a new line. For example:
$$
\bar{y} = {1 \over n} \sum_{i = 1}^{n}y_i
$$
You can find a cheat sheet of the compatible LaTex symbols online.
Enable the mermaid-js diagram rendering by setting mermaid to true in the _config.yml
.This will load and init the mermaid.min.js.
mermaid: true # to Enable it
Find all the help you need on the official mermaid documentation.You can create with ease diagrams. Add your mermaid script inside two mermaid divs (default Kramdown does not yet support mermaid).With the class="mermaid"
inside the <div>
:
<div class="mermaid">
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
</div>
In _data/social.yml
you can customize the social icons that will be displayed in the post to share your post.You can also enable RSS.The site icons come from Font Awesome.
In _data/icons.yml
you can set the footer icon that will appear at the bottom of the page.They will redirect the user on your profile on the other platform like Twitter, GitHub and so many more!
You can add a cookie consent with a disclaimer if you use Google Analytics while respecting the GDPR.Set to true, there will be a banner at the bottom of the page with the disclaimer, and an approve button.Once the user clicks on "Approve" the cookies will be created for Google Analytics.
The share icons are the one at the bottom of the blog page if enabled,to share the article on those platform.
Display in the footer.All icon variables should be your username enclosed in quotes (e.g. "username") in _data/social.yml
,except for the following variables:
rss: true
email_address: type@example.com
linkedin: https://www.linkedin.com/in/FirstLast
stack_exchange: https://stackexchangecom/users/0000/first-last
stack_overflow: https://stackoverflow.com/users/0000/first-last
youtube: UCqECaJ8Gagnn7YCbPEzWH6g # Youtube token of your channel in the url
You can update the RSS settings in _data/social
to change the default feed path (generated by jekyll-feel).
When writing a post, be sure in jekyll to:
_posts
folder2019-08-21-This-is-my-blog-post.md
Please refer to the Jekyll docs for writing posts.
These are the basic features you can use with the post
layout.
---
layout: post
title: Hello World # Title of the page
hide_title: true # Hide the title when displaying the post, but shown in lists of posts
feature-img: "assets/img/sample.png" # Add a feature-image to the post
thumbnail: "assets/img/thumbnails/sample-th.png" # Add a thumbnail image on blog view
color: rgb(80,140,22) # Add the specified color as feature image, and change link colors in post
bootstrap: true # Add bootstrap to the page
tags: [sample, markdown, html]
---
With thumbnail
, you can add a smaller image than the feature-img
.If you don't have a thumbnail you can still use the same image as the feature one. Or use the gulp task to create it.
The background used when color
is set comes from lineart.png
from xukimsevenyou can edit it in the config file (_config.yml > color_image
). If you want another one, put it in /assets/img
as well.
The bootstrap is not mandatory and is only useful if you want to add bootstrapped content in your page.It will respect the page and theme layout, mind the padding on the sides.
The excerpt are the first lines of an article that is display on the blog page.The length of the excerpt has a default of around 250
characters or can be manually set in the post using:
in conflig.yml
:
excerpt: true
Then in your post, add the excerpt separator
:
---
layout: post
title: Sample Page
excerpt_separator: <!--more-->
---
some text in the excerpt
<!--more-->
... rest of the text not shown in the excerpt ...
The html is stripped out of the excerpt, so it only displays text.
To easily add align images side by side in your article using the aligner.html
include:
{% include aligner.html images="path/to/img1.png,path/to/img2.png,path/to/img3.png" column=3 %}
Use it in any markdown file. There are two fields in the include you need to look into:
,
of all the images' path.
assets/img/
so give the path from there.column=3
set 3 columnscolumn="auto"
makes as many columns as imagesLike all CSS variables in the theme, you can edit the color of the code highlight in _sass > base > _variables.scss.The code highlighting works with base16 you can find existing exampleof your favourite highlight color scheme on this format.
All feature pages besides the "home" one are stored in the page
folder,they will appear in the navigation bar unless you set Hide: true
in the front matter.
Here are the documentation for the other feature pages that can be added through _config.yml
.
Non-standard features are documented below.
This layout includes the head, navigation bar and footer around your content.Unless you're making a custom layout you won't need it.
This page is used as the home page of the template (in the index.html
). It displays the list of articles in _posts
.You can use this layout in another page (adding a title to it will make it appear in the navigation bar).
The recommended width and height for the home picture is width:2484px;
and height:1280px
which are the dimensions of the actual picture for it to be rolling down as you scroll the page.
If your posts are not displaying ensure that you have added the line paginate: 5
to _config.yml
.
The page layout have a bit more features explained here.
---
layout: page
title: "About"
subtitle: "This is a subtitle"
feature-img: "assets/img/sample.png"
permalink: /about.html # Set a permalink your your page
hide: true # Prevent the page title to appear in the navbar
icon: "fa-search" # Will Display only the fontawesome icon (here: fa-search) and not the title
tags: [sample, markdown, html]
---
The hide only hides your page from the navigation bar, it is however still generated and can be access through its link.
Portfolio is a feature page that will take all the markdown/html files in the _portfolio
folder to create a 3-columns image portfolio matrix.
To use the portfolio, simply create a portfolio.md
with this information inside:
---
layout: page
title : Portfolio
---
{% include default/portfolio.html %}
You can format the portfolio posts in the _portfolio
folder using the post layout
. Here are little explaination on some of the possible feature you can use and what they will do.
If you decide to use a date, please be sure to use one that can be parsed such as yyyy-mm-dd
. You can see more format example on the demo posts that are available for the theme:
---
layout: post
title: Circus # Title of the portfolio post
feature-img: "assets/img/portfolio/cake.png" # Will display the image in the post
img: "assets/img/portfolio/cake.png" # Will display the image in the portfolio page
date: 2019-07-25 # Not mandatory, however needs to be in date format to display the date
---
Make sure your _config.yml
contains the following if you are using the theme as a gem:
# PORTFOLIO
collections:
portfolio:
output: true
permalink: /:collection/:name
This creates the collection for Jekyll, so it can find and display your portfolio posts.
You can create a gallery using Masonry JS which will placing the pictures in optimal positionbased on available vertical space.You need to specify the gallery_path
which will be used to find the pictures to render.It will take all the pictures under that directory. Then use the include
to add it in your page.
---
layout: page
title: Gallery
gallery: "assets/img/pexels"
---
{% include default/gallery.html gallery_path=page.gallery %}
The search feature is based on Simple-Jekyll-searchthere is a search.json
file that will create a list of all the site posts, pages and portfolios.
Then there's a search.js
displaying the formatted results entered in the search.html
page.
The search page can be hidden with the hide
option. You can remove the icon by removing icon
:
---
layout: search
title: Search
icon: "search"
---
Tags should be placed between []
in your post metadata. Separate each tag with a comma.Tags are recommended for posts and portfolio items.
For example:
---
layout: post
title: Markdown and HTML
tags: [sample, markdown, html]
---
Tags are case-sensitive
Tag_nAme
≠tag_name
All the tags will be listed in tags.html
with a link toward the pages or posts.The Tag page can be hidden with the hide
option. You can remove the icon by removing icon
(like for the search page).
Jekyll works with liquid tags usually represented by:
{{ liquid.tag | filter }}
These are useful to render your jekyll files.You can learn more about them on shopify's doc
Before you need to have node and npm
installed:
apt-get install nodejs npm libgl1 libxi6
dnf install node npm libglvnd-glx libXi
Then you need to install gulp-cli
and its dependencies:
cd assets/
sudo npm install gulp-cli -g
npm install
You can run the default task that will compress the js, css and images and create the thumbnails for the supported imageformats:
cd assets/
gulp default
gulp thumbnails-all # to create all of the images thumbnails
gulp thumbnails # to create thumbnails for the feature-img/ only
# tip: run a git status to see the changes
git status
You can find more about the gulp tasks in the gulpfile.js.
To create a .md
file in the _posts/ section with the jekyll format of today's date.Use this command with the title you'd like to create the very basic post.
gulp post -n 'title of the post'
A file will be created following the format yyyy-mm-dd-title-of-the-post.md
with default post attributes inside.Nothing will happen if the file exists already.
You can use Type-on-strap as a gem.
Ruby Gem MethodAdd this line to your Jekyll site's Gemfile (or create one):
gem "type-on-strap"
Add this line to your Jekyll site's _config.yml
file:
theme: type-on-strap
Then run Bundler to install the theme gem and dependencies:
bundle install
Then you can start adding content like:
index.html
filepages
)_posts
and _portfolio
to be displayedNow you can use any theme gem with GitHub pages with 29/11/2017 Github Pages Broadcast.For that remove all theme:
attributes from _config.yml
and add instead:
remote_theme: sylhare/Type-on-Strap
This theme is licensed under the The MIT License (MIT)
The following table summarizes how different property types are affected by making an entity read-only. 表 11.1. Affect of read-only entity on property types Property/Association Type Changes flushed t
这是我得到的错误。我所做的: 错误: 然后我又回到我的rails控制台,运行“Post”。搜索索引。删除' 然后,我又试着去看我的模特“show”或“save”,结果在下面的叙述中出现了一个错误: 当我按下“创建帖子”时,它会给我一个错误 这是我的邮政控制器:
TYPE key 返回 key 所储存的值的类型。 可用版本: >= 1.0.0 时间复杂度: O(1) 返回值: none (key不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表) # 字符串 redis> SET weather "sunny" OK redis> TYPE weather string # 列表 r
描述: 记录一个对象的类型。 语法 @type {typeName} 概述 @type标签允许你提供一个表达式,用于标识一个标识符可能包含的值的类型,或由函数返回值的类型。您还可以将其包含与其他JSDoc标签类型的表达式结合使用,如@param 标签。 类型表达式可以包括标识符的namepath(例如,myNamespace.MyClass);一个内置的JavaScript类型(例如,string
Type: Minimal and Clean Free Jekyll Theme Configurations Deployment Posts Pages Navigation Disqus Comments Social Media Links Update favicon Configurations Type theme comes with different customizatio
描述 (Description) 它将事件绑定到对象和回调函数。 每当触发事件时,它都会执行回调。 语法 (Syntax) object.on(event, callback function, [context]) 参数 (Parameters) event - 它绑定一个对象。 callback - 它是对代码的引用。 context - 它是一个可以传递给回调函数的对象。 例子 (Exam