https://jarrekk.github.io/Jalpc/
- 3 steps to setup this theme at your website!
- Features
- Put in a Jalpc Plug
- Upgrading Jalpc
- Thanks to the following
- Contributing
- Change Log
- Ad
This is a simple, beautiful and swift theme for Jekyll. It's mobile first, fluidly responsive, and delightfully lightweight.
If you're completely new to Jekyll, I recommend checking out the documentation at http://jekyllrb.com or there's a tutorial by Smashing Magazine.
Here is a document of how to setup this theme with 3 steps.
The index page is seprated into several sections and they are located in _includes/sections
,the configuration is in _data/landing.yml
and section's detail configuration is in _data/*.yml
.
These files are used to dynamically render pages, so you almost don't have to edit html files to change your own theme, besides you can use jekyll serve --watch
to reload changes.
The following is mapping between yml files to sections.
- landing.yml ==> index.html
- index/language.yml ==> index.html
- index/careers.yml ==> _includes/sections/career.html
- index/skills.yml ==> _includes/sections/skills.html
- index/projects.yml ==> _includes/sections/projects.html
- index/links.yml ==> _includes/sections/links.html
This yml file is about blog page navbar
- blog.yml ==> _includes/header.html
The following is mapping between yml files to donation
- donation/donationlist.yml ==> blog/donate.html
- donation/alipay.yml ==> blog/donate.html
- donation/wechat_pay.yml ==> blog/donate.yml
I use Chart.js to show skills, the type of skills' chart is radar, if you want to custom, please read document of Chart.js and edit _includes/sections/skills.html and _data/index/skills.yml.
In blog page, we categorize posts into several categories by url, all category pages use same template html file - _includes/category.html
.
For example: URL is http://127.0.0.1:4000/python/
. In _data/blog.yml
, we define this category named Python
, so in _includes/category.html
we get this URL(/python/) and change it to my category(Python), then this page are posts about Python. The following code is about how to get url and display corresponding posts in _includes/category.html
.
<div class="row">
<div class="col-lg-12 text-center">
<div class="navy-line"></div>
{% assign category = page.url | remove:'/' | capitalize %}
{% if category == 'Html' %}
{% assign category = category | upcase %}
{% endif %}
<h1>{{ category }}</h1>
</div>
</div>
<div class="wrapper wrapper-content animated fadeInRight blog">
<div class="row">
<ul id="pag-itemContainer" style="list-style:none;">
{% assign counter = 0 %}
{% for post in site.categories[category] %}
{% assign counter = counter | plus: 1 %}
<li>
The pagination in jekyll is not very perfect,so I use front-end web method,there is a blog about the method and you can refer to jPages.
Many third party page counter platforms are too slow,so I count my website page view myself,the javascript file is static/js/count.min.js (static/js/count.js),the backend API is written with flask on Vultr VPS, detail code please see jalpc-flask.
The landing page has multilingual support with the i18next plugin.
Languages are configured in the _data/index/language.yml
file.
If you don't need this feature, please clear content in file
_data/language.yml
and folderstatic/locales/
.
Add a new language entry
languages:
- locale: 'en'
flag: 'static/img/flags/United-States.png'
- locale: '<language_locale>'
flag: '<language_flag_url>'
Add a new json (static/locales/<language_locale>.json
) file that contains the translations for the new locale.
Example en.json
{
"website":{
"title": "Jalpc"
},
"nav":{
"home": "Home",
"about_me": "About",
"skills": "Skills",
"career": "Career",
"blog": "Blog",
"contact": "Contact"
}
}
Next you need to add html indicators in all place you want to use i18n.(_includes/sections/*.html
and index.html
)
Example:
<a class="navbar-brand" href="#page-top" id="i18_title"><span data-i18n="website.title">{{ site.title }}</span></a>
Next you need to initialise the i18next plugin(index.html
):
$.i18n.init(
resGetPath: 'locales/__lng__.json',
load: 'unspecific',
fallbackLng: false,
lng: 'en'
}, function (t)
$('#i18_title').i18n();
});
I use Google analytics and GrowingIO to do web analytics, you can choose either to realize it,just register a account and replace id in _config.yml
.
I use Disqus to realize comment. You should set disqus_shortname and get public key and then, in _config.yml
, edit the disqus value to enable Disqus.
I use AddToAny to share my blog on other social network platform. You can go to this website to custom your share buttons and paste code at _includes/share.html
.
I use javascript to realize blog search,you can double click Ctrl
or click the icon at lower right corner of the page,the detail you can got to this repo: https://github.com/androiddevelop/jekyll-search.
Just use it.
All CSS and JS files are compressed at /static/assets
.
I use UglifyJS2 and clean-css to compress CSS and JS files. If you want to custom CSS and JS files, you need to do the following:
- Install UglifyJS2 and clean-css:
npm install -g uglifyjs; npm install -g clean-css
, then runnpm install
at root dir of project. - Compress script is build.js, index page has its own CSS and JS compressed files, they are :
- app-index-xxx.min.css
- app-index-xxx.min.js
- i18-xxx.min.js
404 page are
- fof-xxx.min.css
- fof-xxx.min.js
other pages are
- app-xxx.min.css
- app-xxx.min.js
- jPage-xxx.min.js
xxx is date when you compress your files.
3. If you want to add/remove CSS/JS files, just edit build.js, and run npm run build
at root dir of project, link/src files will use new files.
If you want to give credit to the Jalpc theme with a link to my personal website http://www.jack003.com, that'd be awesome. No worries if you don't.
Jalpc is always being improved by its users, so sometimes one may need to upgrade.
If git remote -v
doesn't have an upstream listed, you can do the following to add it:
git remote add upstream https://github.com/jarrekk/jalpc_jekyll_theme.git
git pull upstream gh-pages
There may be merge conflicts, so be sure to fix the files that git lists if they occur. That's it!
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
- v1.1.1
- display skills with Chart.js
- add shelljs and colors
- compress CSS/JS file with build.js automatically
- v1.1.0
- Speed up!! reduce request times and file size
- change bower to npm
- compress CSS/JS files with uglifyjs and clean-css
- v1.0.5
- add donation page
- fix basuurl and url bug
- v1.0.4
- use _data to config index page
- separate index page by sections
- v1.0.3
- change color
- remove unused css code
- v1.0.2
- use jPages to realize pagination
- v1.0.1
- first release