A responsive, clean and simple Hexo theme for a personal website.
🌵 Demo
- Version : 3.0
- Compatibility : Hexo 3 or later
- Fully responsive
- Multiple color schemes
- Pick your own code highlighting scheme
- Configurable navigation menu
- Support for local search
- Projects list
- I18n support
- Disqus integration
- Google analytics / Baidu Tongji / Umami Analytics
- Font Awesome icons
- Simplicity
-
In the
root
directory:$ git clone https://github.com/probberechts/hexo-theme-cactus.git themes/cactus
-
Change the
theme
property in theconfig.yml
file.# theme: landscape theme: cactus
See below for more information on how to customize this theme.
-
Create pages and articles with the
hexo new [layout] <title>
command. For example, to create an "about me" page, run:$ hexo new page about
This will create a new file in
source/about/index.md
Similary, you can create a new article with$ hexo new post "hello world"
and add some interesting content in
source/_posts/hello-world.md
. -
Run:
hexo generate
andhexo server
You can (and should) modify a couple of settings. An overview of all settings can be found in _config.yml. The most important ones are discussed below.
There are two possible methods to override the defaults. As a first option,
you could fork the theme and maintain a custom branch with your settings.
Alternatively, you can configure it from your site's primary configuration
file. Therefore, define your custom settings under the theme_config
variable.
For example:
# _config.yml
theme_config:
colorscheme: white
# themes/cactus/_config.yml
colorscheme: dark
This will override the default black colorscheme in themes/cactus/_config.yml
.
Currently, this theme is delivered with four color schemes: dark, light,
white and classic. Set your preferred color scheme in the _config.yml
file.
colorscheme: light
Alternatively, you can easily create your own color scheme by creating a new
file in source/css/_colors
.
Setup the navigation menu in the _config.yml
:
nav:
home: /
about: /about/
articles: /archives/
projects: http://github.com/probberechts
LINK_NAME: URL
You have two options for the list of blog posts on the home page:
-
Show only the 5 most recent posts (default)
posts_overview: show_all_posts: false post_count: 5
-
Show all posts
posts_overview: show_all_posts: true
Create a projects file source/_data/projects.json
to show a list of your projects on the index page.
[
{
"name":"Hexo",
"url":"https://hexo.io/",
"desc":"A fast, simple & powerful blog framework"
},
{
"name":"Font Awesome",
"url":"http://fontawesome.io/",
"desc":"The iconic font and CSS toolkit"
}
]
Cactus can automatically add links to your social media accounts.
Therefore, update the theme's _config.yml
:
social_links:
github: your-github-url
twitter: your-twitter-url
NAME: your-NAME-url
where NAME
is the name of a Font Awesome icon.
By default, Cactus will use current year in your copyright year information.
If there is a need to customize, please update _config.yml
:
copyright:
start_year: 2016
end_year:
If you are new to Hexo and internationalization (i18n), please read Hexo documentation - internationalization (i18n) section
Currently, the theme is delivered with support for:
- English (en), default
- Brazilian Portuguese (pt-br)
- Catalan (ca)
- Chinese (Simplified, PRC) (zh-CN)
- Dutch (nl)
- French (fr)
- Italian (it)
- Persian (fa)
- Russian (ru)
- Spanish (es)
- German (de)
If you would like to use one the languages listed above, simply set language
to the desired language (e.g., fr
) in _config.yml
.
Otherwise, you can follow the steps below (E.g., to add a Japanese (ja) translation):
- Set
language
toja
in Hexo configuration file_config.yml
- Create a
ja.yml
file in thethemes/cactus/languages/
folder - Copy the content of
themes/cactus/languages/default.yml
and paste it it into theja.yml
file - Replace all English strings by their Japanese translation
Note: Cactus does not support multi-language sites.
This theme support RTL languages for Persian and Arabic language.
If you would like to use RTL layout, change direction
attribute in _config.yml
to rtl
.
Note that this also will change the font to Vazir, which is a Persian font.
direction: rtl
Set the rss
field in the _config.yml
to one of the following values:
rss: false
will totally disable rss (default).rss: atom.xml
sets a specific feed link.rss:
leave empty to use the hexo-generator-feed plugin.
Add you Google, Baidu, Cloudflare or Umami Analytics tracking_id
to the _config.yml
.
google_analytics:
enabled: true
id: 'UA-49627206-1'
baidu_analytics:
enabled: true
id: 2e6da3c375c8a87f5b664cea6d4cb29c
cloudflare_analytics:
enabled: true
id: 0dabb6e21848405483a237e6a7b6ed04
umami_analytics:
enabled: false
id: e77e68be-f6e4-4br3-9365-2b76b57cd571
host: https://analytics.domain.com
First, create a site on Disqus: https://disqus.com/admin/create/.
Next, update the _config.yml
file:
disqus:
enabled: true
shortname: SITENAME
where SITENAME
is the name you gave your site on Disqus.
Pick one of the available colorschemes and add it to the _config.yml
:
highlight: COLORSCHEME_NAME
Tags and categories can be included in the front-matter of your posts. For example:
title: Tags and Categories
date: 2017-12-24 23:29:53
tags:
- Foo
- Bar
categories:
- Baz
---
This post contains 2 tags and 1 category.
You can create a page with a tag cloud by running:
$ hexo new page tags
Next, add type: tags
to the front-matter of source/tags/index.md
. You can also
add a tag cloud to the home page by setting the tags_overview
option to true
.
Similarly, you can create a page with an overview of all categories by running:
$ hexo new page categories
and adding type: categories
to the front-matter of source/categories/index.md
.
Finally, don't forget to create a link to these pages, for example in the navigation menu:
nav:
tag: /tags/
category: /categories/
First, install the hexo-generate-search plugin, which will generate a search index file.
$ npm install hexo-generator-search --save
Next, create a page to display the search engine:
$ hexo new page search
and put type: search
in the front-matter.
title: Search
type: search
---
Finally, edit the _config.yml
and add a link to the navigation menu.
nav:
search: /search/
MIT