2020-03-03 14:35:14 +01:00
---
2020-03-08 14:02:21 +01:00
weight: 1
2020-03-03 14:35:14 +01:00
title: "Theme Documentation - Basics"
2020-03-08 14:02:21 +01:00
date: 2020-03-06T21:29:01+08:00
lastmod: 2020-03-06T21:29:01+08:00
2020-03-03 14:35:14 +01:00
draft: false
author: "Dillon"
authorLink: "https://dillonzq.com"
2020-03-08 14:02:21 +01:00
description: "Discover what the Hugo - LoveIt theme is all about and the core-concepts behind it."
2020-03-03 14:35:14 +01:00
tags: ["installation", "configuration"]
categories: ["documentation"]
2020-03-08 17:27:17 +01:00
featuredImage: "/images/theme-documentation-basics/featured-image.jpg"
2020-04-21 16:55:06 +02:00
2020-04-22 19:22:29 +02:00
lightgallery: true
2020-04-21 16:55:06 +02:00
toc:
auto: false
2020-03-03 14:35:14 +01:00
---
2020-03-08 14:02:21 +01:00
Discover what the Hugo - **LoveIt** theme is all about and the core-concepts behind it.
2020-03-03 14:35:14 +01:00
<!-- more -->
## 1 Requirements
Thanks to the simplicity of Hugo, [Hugo ](https://gohugo.io/ ) is the only dependency of this theme.
2020-04-24 20:05:43 +02:00
Just install latest version of [:(far fa-file-archive fa-fw): Hugo extended (> 0.62.0) ](https://gohugo.io/getting-started/installing/ ) for your OS (**Windows**, **Linux** , **macOS** ).
2020-03-03 14:35:14 +01:00
{{< admonition note " Why not support earlier versions of Hugo ? " > }}
2020-04-27 19:38:22 +02:00
Since [Markdown Render Hooks ](https://gohugo.io/getting-started/configuration-markup#markdown-render-hooks ) was introduced in the [Hugo Christmas Edition ](https://gohugo.io/news/0.62.0-relnotes/ ), this theme only supports Hugo versions above **0.62.0** .
2020-03-03 14:35:14 +01:00
{{< / admonition > }}
2020-03-17 17:52:36 +01:00
{{< admonition note " Why need the Hugo extended version ? " > }}
2020-04-21 16:55:06 +02:00
Since the theme processes SCSS to CSS, Hugo needs to be the **extended** version.
2020-03-17 17:52:36 +01:00
{{< / admonition > }}
2020-03-03 14:35:14 +01:00
## 2 Installation
The following steps are here to help you initialize your new website. If you don’ t know Hugo at all, we strongly suggest you learn more about it by following this [great documentation for beginners ](https://gohugo.io/getting-started/quick-start/ ).
2020-03-08 14:02:21 +01:00
### 2.1 Create Your Project
2020-03-03 14:35:14 +01:00
Hugo provides a `new` command to create a new website:
```bash
hugo new site my_website
cd my_website
```
2020-03-08 14:02:21 +01:00
### 2.2 Install the Theme
2020-03-03 14:35:14 +01:00
The **LoveIt** theme’ s repository is: [https://github.com/dillonzq/LoveIt ](https://github.com/dillonzq/LoveIt ).
2020-04-24 20:05:43 +02:00
You can download the [latest release :(far fa-file-archive fa-fw): .zip file ](https://github.com/dillonzq/LoveIt/releases ) of the theme and extract it in the `themes` directory.
2020-03-08 14:02:21 +01:00
Alternatively, clone this repository to the `themes` directory:
2020-03-03 14:35:14 +01:00
```bash
2020-03-21 09:59:23 +01:00
git clone https://github.com/dillonzq/LoveIt.git themes/LoveIt
2020-03-03 14:35:14 +01:00
```
Or, create an empty git repository and make this repository a submodule of your site directory:
```bash
2020-03-08 14:02:21 +01:00
git init
2020-03-21 09:59:23 +01:00
git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt
2020-03-03 14:35:14 +01:00
```
2020-03-08 14:02:21 +01:00
### 2.3 Basic Configuration {#basic-configuration}
2020-03-03 14:35:14 +01:00
The following is a basic configuration for the LoveIt theme:
```toml
baseURL = "http://example.org/"
2020-03-09 20:33:28 +01:00
# [en, zh-cn, fr, ...] determines default content language
defaultContentLanguage = "en"
2020-03-08 14:02:21 +01:00
# language code
2020-03-03 14:35:14 +01:00
languageCode = "en"
title = "My New Hugo Site"
# Change the default theme to be use when building the site with Hugo
theme = "LoveIt"
[params]
# LoveIt theme version
2020-04-21 16:55:06 +02:00
version = "0.2.X"
2020-03-08 14:02:21 +01:00
[menu]
[[menu.main]]
identifier = "posts"
2020-03-19 05:35:37 +01:00
# you can add extra information before the name (HTML format is supported), such as icons
2020-03-08 14:02:21 +01:00
pre = ""
2020-04-23 10:49:30 +02:00
# you can add extra information after the name (HTML format is supported), such as icons
post = ""
2020-03-08 14:02:21 +01:00
name = "Posts"
url = "/posts/"
# title will be shown when you hover on this menu link
title = ""
weight = 1
[[menu.main]]
identifier = "tags"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Tags"
url = "/tags/"
title = ""
weight = 2
[[menu.main]]
identifier = "categories"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Categories"
url = "/categories/"
title = ""
weight = 3
2020-03-03 14:35:14 +01:00
```
2020-03-08 14:02:21 +01:00
{{< admonition > }}
2020-03-03 14:35:14 +01:00
When building the website, you can set a theme by using `--theme` option. However, we suggest you modify the configuration file (**config.toml**) and set the theme as the default.
{{< / admonition > }}
2020-03-08 14:02:21 +01:00
### 2.4 Create Your First Post
2020-03-03 14:35:14 +01:00
Here is the way to create your first post:
```bash
2020-03-08 17:46:34 +01:00
hugo new posts/first_post.md
2020-03-03 14:35:14 +01:00
```
Feel free to edit the post file by adding some sample content and replacing the title value in the beginning of the file.
2020-03-08 14:02:21 +01:00
{{< admonition > }}
2020-04-21 16:55:06 +02:00
By default all posts and pages are created as a draft. If you want to render these pages, remove the property `draft: true` from the metadata, set the property `draft: false` or add `-D` /`--buildDrafts` parameter to `hugo` command.
2020-03-03 14:35:14 +01:00
{{< / admonition > }}
2020-03-08 14:02:21 +01:00
### 2.5 Launching the Website Locally
2020-03-03 14:35:14 +01:00
Launch by using the following command:
```bash
hugo serve
```
Go to `http://localhost:1313` .
2020-03-08 14:02:21 +01:00
![Basic configuration preview ](/images/theme-documentation-basics/basic-configuration-preview.png "Basic configuration preview" )
2020-03-03 14:35:14 +01:00
{{< admonition tip > }}
When you run `hugo serve` , when the contents of the files change, the page automatically refreshes with the changes.
{{< / admonition > }}
2020-04-21 16:55:06 +02:00
{{< admonition > }}
Since the theme use `.Scratch` in Hugo to implement some features,
it is highly recommended that you add `--disableFastRender` parameter to `hugo server` command for the live preview of the page you are editing.
```bash
hugo serve --disableFastRender
```
{{< / admonition > }}
2020-03-08 14:02:21 +01:00
### 2.6 Build the Website
2020-03-03 14:35:14 +01:00
When your site is ready to deploy, run the following command:
```bash
hugo
```
A `public` folder will be generated, containing all static content and assets for your website. It can now be deployed on any web server.
{{< admonition tip > }}
The website can be automatically published and hosted with [Netlify ](https://www.netlify.com/ ) (Read more about [Automated HUGO deployments with Netlify ](https://www.netlify.com/blog/2015/07/30/hosting-hugo-on-netlifyinsanely-fast-deploys/ )).
2020-03-08 14:02:21 +01:00
Alternatively, you can use [AWS Amplify ](https://gohugo.io/hosting-and-deployment/hosting-on-aws-amplify/ ), [Github pages ](https://gohugo.io/hosting-and-deployment/hosting-on-github/ ), [Render ](https://gohugo.io/hosting-and-deployment/hosting-on-render/ ) and more...
2020-03-03 14:35:14 +01:00
{{< / admonition > }}
## 3 Configuration
2020-03-08 14:02:21 +01:00
### 3.1 Site Configuration {#site-configuration}
2020-03-03 14:35:14 +01:00
2020-03-08 14:02:21 +01:00
In addition to [Hugo global configuration ](https://gohugo.io/overview/configuration/ ) and [menu configuration ](#basic-configuration ), **LoveIt** lets you define the following parameters in your site configuration (here is a `config.toml` , whose values are default).
2020-03-03 14:35:14 +01:00
2020-04-27 19:38:22 +02:00
Please open the code block below to view the complete sample configuration :(far fa-hand-point-down fa-fw)::
2020-03-03 14:35:14 +01:00
```toml
[params]
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 changed > }} LoveIt theme version
version = "0.2.X"
2020-03-03 14:35:14 +01:00
# site description
2020-03-09 20:33:28 +01:00
description = "This is My New Hugo Site"
2020-03-03 14:35:14 +01:00
# site keywords
keywords = ["Theme", "Hugo"]
# site default theme ("light", "dark", "auto")
defaultTheme = "auto"
2020-03-08 14:02:21 +01:00
# public git repo url only then enableGitInfo is true
2020-03-03 14:35:14 +01:00
gitRepo = ""
2020-04-18 14:54:54 +02:00
# {{< version 0 . 1 . 1 > }} which hash function used for SRI, when empty, no SRI is used
2020-03-19 09:54:47 +01:00
# ("sha256", "sha384", "sha512", "md5")
2020-03-09 13:25:55 +01:00
fingerprint = ""
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} date format
dateFormat = "2006-01-02"
2020-04-26 17:58:15 +02:00
# {{< version 0 . 2 . 0 > }} App icon config
[params.app]
# optional site title override for the app when added to an iOS home screen or Android launcher
2020-04-26 19:19:23 +02:00
title = "LoveIt"
2020-04-26 17:58:15 +02:00
# whether to omit favicon resource links
2020-04-26 19:19:23 +02:00
noFavicon = false
2020-04-26 17:58:15 +02:00
# modern SVG favicon to use in place of older style .png and .ico files
2020-04-26 19:19:23 +02:00
svgFavicon = ""
# Android browser theme color
2020-04-26 17:58:15 +02:00
themeColor = "#ffffff"
# Safari mask icon color
iconColor = "#5bbad5"
# Windows v8-10 tile color
tileColor = "#da532c"
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} Search config
2020-04-15 09:46:50 +02:00
[params.search]
enable = true
# type of search engine ("lunr", "algolia")
type = "lunr"
2020-04-28 20:34:28 +02:00
# max index length of the chunked content
2020-04-29 21:22:52 +02:00
contentLength = 4000
2020-04-21 16:55:06 +02:00
# placeholder of the search bar
placeholder = ""
2020-04-28 20:34:28 +02:00
# {{< version 0 . 2 . 1 > }} max number of results length
maxResultLength = 10
2020-04-30 20:34:17 +02:00
# {{< version 0 . 2 . 3 > }} snippet length of the result
snippetLength = 30
2020-04-28 20:34:28 +02:00
# {{< version 0 . 2 . 1 > }} HTML tag name of the highlight part in results
highlightTag = "em"
2020-05-01 17:54:29 +02:00
# {{< version 0 . 2 . 4 > }} whether to use the absolute URL based on the baseURL in search index
absoluteURL = false
2020-04-15 09:46:50 +02:00
[params.search.algolia]
index = ""
appID = ""
searchKey = ""
2020-04-21 16:55:06 +02:00
# Header config
2020-03-03 14:35:14 +01:00
[params.header]
# desktop header mode ("fixed", "normal", "auto")
desktopMode = "fixed"
# mobile header mode ("fixed", "normal", "auto")
mobileMode = "auto"
2020-04-29 09:11:33 +02:00
# {{< version 0 . 2 . 0 > }} Header title config
[params.header.title]
# URL of the LOGO
logo = ""
# title name
name = ""
# you can add extra information before the name (HTML format is supported), such as icons
pre = ""
# you can add extra information after the name (HTML format is supported), such as icons
post = ""
2020-04-21 16:55:06 +02:00
# Footer config
2020-03-03 14:35:14 +01:00
[params.footer]
2020-04-21 16:55:06 +02:00
enable = true
# {{< version 0 . 2 . 0 > }} Custom content (HTML format is supported)
custom = ''
# {{< version 0 . 2 . 0 > }} whether to show Hugo and theme info
hugo = true
# {{< version 0 . 2 . 0 > }} whether to show copyright info
copyright = true
# {{< version 0 . 2 . 0 > }} whether to show the author
author = true
2020-03-03 14:35:14 +01:00
# Site creation time
since = 2019
2020-03-19 05:35:37 +01:00
# ICP info only in China (HTML format is supported)
2020-03-03 14:35:14 +01:00
icp = ""
2020-03-19 05:35:37 +01:00
# license info (HTML format is supported)
2020-03-17 14:16:04 +01:00
license = '< a rel = "license external nofollow noopener noreffer" href = "https://creativecommons.org/licenses/by-nc/4.0/" target = "_blank" > CC BY-NC 4.0< / a > '
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} Section (all posts) page config
[params.section]
# special amount of posts in each section page
paginate = 20
# date format (month and day)
dateFormat = "01-02"
2020-04-22 17:58:40 +02:00
# amount of RSS pages
rss = 10
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} List (category or tag) page config
[params.list]
# special amount of posts in each list page
paginate = 20
# date format (month and day)
dateFormat = "01-02"
2020-04-22 17:58:40 +02:00
# amount of RSS pages
rss = 10
2020-04-21 16:55:06 +02:00
# Home page config
2020-03-03 14:35:14 +01:00
[params.home]
2020-04-22 17:58:40 +02:00
# {{< version 0 . 2 . 0 > }} amount of RSS pages
rss = 10
2020-04-21 16:55:06 +02:00
# Home page profile
2020-03-03 14:35:14 +01:00
[params.home.profile]
enable = true
# Gravatar Email for preferred avatar in home page
gravatarEmail = ""
# URL of avatar shown in home page
avatarURL = "/images/avatar.png"
# subtitle shown in home page
2020-03-09 20:33:28 +01:00
subtitle = "This is My New Hugo Site"
2020-03-03 14:35:14 +01:00
# whether to use typeit animation for subtitle
typeit = true
# whether to show social links
social = true
2020-04-18 14:54:54 +02:00
# {{< version 0 . 2 . 0 > }} disclaimer (HTML format is supported)
2020-03-16 18:03:08 +01:00
disclaimer = ""
2020-04-21 16:55:06 +02:00
# Home page posts
2020-03-03 14:35:14 +01:00
[params.home.posts]
enable = true
# special amount of posts in each home posts page
paginate = 6
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 deleted > }} default behavior when you don't set "hiddenFromHomePage" in front matter
2020-03-03 14:35:14 +01:00
defaultHiddenFromHomePage = false
2020-04-21 16:55:06 +02:00
# Social config about the author
2020-03-03 14:35:14 +01:00
[params.social]
GitHub = "xxxx"
2020-04-24 13:04:37 +02:00
Linkedin = ""
2020-03-03 14:35:14 +01:00
Twitter = "xxxx"
Instagram = "xxxx"
Facebook = "xxxx"
Telegram = "xxxx"
2020-04-24 13:04:37 +02:00
Medium = ""
Gitlab = ""
Youtubelegacy = ""
Youtubecustom = ""
Youtubechannel = ""
Tumblr = ""
Quora = ""
Keybase = ""
Pinterest = ""
Reddit = ""
Codepen = ""
FreeCodeCamp = ""
Bitbucket = ""
Stackoverflow = ""
Weibo = ""
Odnoklassniki = ""
VK = ""
Flickr = ""
Xing = ""
Snapchat = ""
Soundcloud = ""
Spotify = ""
Bandcamp = ""
Paypal = ""
Fivehundredpx = ""
Mix = ""
Goodreads = ""
Lastfm = ""
Foursquare = ""
Hackernews = ""
Kickstarter = ""
Patreon = ""
Steam = ""
Twitch = ""
Strava = ""
Skype = ""
Whatsapp = ""
Zhihu = ""
Douban = ""
Angellist = ""
Slidershare = ""
Jsfiddle = ""
Deviantart = ""
Behance = ""
Dribbble = ""
Wordpress = ""
Vine = ""
Googlescholar = ""
Researchgate = ""
Mastodon = ""
Thingiverse = ""
Devto = ""
Gitea = ""
XMPP = ""
Matrix = ""
Bilibili = ""
Email = "xxxx@xxxx.com"
2020-04-22 17:58:40 +02:00
RSS = true # {{< version 0 . 2 . 0 > }}
2020-03-03 14:35:14 +01:00
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 changed > }} Page config
2020-03-03 14:35:14 +01:00
[params.page]
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} whether to hide a page from home page
hiddenFromHomePage = false
# {{< version 0 . 2 . 0 > }} whether to hide a page from search results
hiddenFromSearch = false
2020-04-26 20:27:26 +02:00
# {{< version 0 . 2 . 0 > }} whether to enable twemoji
twemoji = false
2020-04-21 16:55:06 +02:00
# whether to enable lightgallery
lightgallery = false
# {{< version 0 . 2 . 0 > }} whether to enable the ruby extended syntax
ruby = true
# {{< version 0 . 2 . 0 > }} whether to enable the fraction extended syntax
fraction = true
# {{< version 0 . 2 . 0 > }} whether to enable the fontawesome extended syntax
fontawesome = true
# whether to show link to Raw Markdown content of the content
2020-03-03 14:35:14 +01:00
linkToMarkdown = true
2020-05-01 17:29:24 +02:00
# {{< version 0 . 2 . 4 > }} whether to show the full text content in RSS
rssFullText = false
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} Table of the contents config
[params.page.toc]
# whether to enable the table of the contents
enable = true
# whether to make the table of the contents automatically collapsed
auto = true
# {{< version 0 . 2 . 0 changed > }} {{< link " https: / / katex . org / " KaTeX > }} mathematical formulas
[params.page.math]
enable = true
# default block delimiter is $$ ... $$ and \\[ ... \\]
blockLeftDelimiter = ""
blockRightDelimiter = ""
# default inline delimiter is $ ... $ and \\( ... \\)
inlineLeftDelimiter = ""
inlineRightDelimiter = ""
# KaTeX extension copy_tex
copyTex = true
# KaTeX extension mhchem
mhchem = true
2020-04-24 20:05:43 +02:00
# {{< version 0 . 2 . 0 > }} Code config
[params.page.code]
# whether to show the copy button of the code block
copy = true
2020-04-25 21:25:10 +02:00
# the maximum number of lines of displayed code by default
maxShownLines = 10
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / docs . mapbox . com / mapbox-gl-js " " Mapbox GL JS " > }} config
[params.page.mapbox]
# access token of Mapbox GL JS
accessToken = ""
# style for the light theme
lightStyle = "mapbox://styles/mapbox/light-v9"
# style for the dark theme
darkStyle = "mapbox://styles/mapbox/dark-v9"
2020-04-27 19:38:22 +02:00
# whether to add {{< link " https: / / docs . mapbox . com / mapbox-gl-js / api # navigationcontrol " NavigationControl > }}
2020-04-21 16:55:06 +02:00
navigation = true
2020-04-27 19:38:22 +02:00
# whether to add {{< link " https: / / docs . mapbox . com / mapbox-gl-js / api # geolocatecontrol " GeolocateControl > }}
2020-04-21 16:55:06 +02:00
geolocate = true
2020-04-27 19:38:22 +02:00
# whether to add {{< link " https: / / docs . mapbox . com / mapbox-gl-js / api # scalecontrol " ScaleControl > }}
2020-04-21 16:55:06 +02:00
scale = true
2020-04-27 19:38:22 +02:00
# whether to add {{< link " https: / / docs . mapbox . com / mapbox-gl-js / api # fullscreencontrol " FullscreenControl > }}
2020-04-21 16:55:06 +02:00
fullscreen = true
# {{< version 0 . 2 . 0 changed > }} social share links in post page
[params.page.share]
enable = true
Twitter = true
Facebook = true
2020-04-27 19:38:22 +02:00
Linkedin = false
2020-04-21 16:55:06 +02:00
Whatsapp = true
2020-04-27 19:38:22 +02:00
Pinterest = false
Tumblr = false
HackerNews = false
Reddit = false
VK = false
Buffer = false
Xing = false
Line = true
Instapaper = false
Pocket = false
Digg = false
Stumbleupon = false
Flipboard = false
Weibo = true
Renren = false
Myspace = true
Blogger = true
Baidu = false
Odnoklassniki = false
Evernote = true
Skype = false
Trello = false
Mix = false
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 changed > }} Comment config
[params.page.comment]
enable = true
# {{< link " https: / / disqus . com / " Disqus > }} comment config
[params.page.comment.disqus]
# {{< version 0 . 1 . 1 > }}
enable = false
# Disqus shortname to use Disqus in posts
shortname = ""
# {{< link " https: / / github . com / gitalk / gitalk " Gitalk > }} comment config
[params.page.comment.gitalk]
# {{< version 0 . 1 . 1 > }}
enable = false
owner = ""
repo = ""
clientId = ""
clientSecret = ""
# {{< link " https: / / github . com / xCss / Valine " Valine > }} comment config
[params.page.comment.valine]
enable = false
appId = ""
appKey = ""
placeholder = ""
avatar = "mp"
meta= ""
pageSize = 10
lang = ""
visitor = true
recordIP = true
2020-04-27 21:24:48 +02:00
highlight = true
enableQQ = false
serverURLs = ""
2020-04-21 16:55:06 +02:00
# {{< link " https: / / developers . facebook . com / docs / plugins / comments " " Facebook comment " > }} config
[params.page.comment.facebook]
enable = false
width = "100%"
numPosts = 10
appId = ""
languageCode = ""
# {{< version 0 . 2 . 0 > }} {{< link " https: / / comments . app / " " Telegram comments " > }} config
[params.page.comment.telegram]
enable = false
siteID = ""
limit = 5
height = ""
color = ""
colorful = true
dislikes = false
outlined = false
2020-04-24 17:28:47 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / commento . io / " " Commento " > }} comment config
[params.page.comment.commento]
2020-04-24 20:05:43 +02:00
enable = false
2020-04-21 16:55:06 +02:00
# {{< version 0 . 2 . 0 > }} SEO config
[params.page.seo]
# Publisher info
[params.page.seo.publisher]
name = "xxxx"
[params.page.seo.publisher.logo]
url = "logo.png"
width = 127
height = 40
# Logo info
[params.page.seo.logo]
url = "logo.png"
width = 127
height = 40
# Image info
[params.page.seo.image]
url = "cover.png"
width = 800
height = 600
# Site verification code config for Google/Bing/Yandex/Pinterest/Baidu
2020-03-03 14:35:14 +01:00
[params.verification]
google = ""
bing = ""
yandex = ""
pinterest = ""
baidu = ""
2020-04-21 16:55:06 +02:00
2020-04-22 11:50:30 +02:00
# {{< version 0 . 2 . 0 > }} Analytics config
[params.analytics]
enable = false
# Google Analytics
[params.analytics.google]
id = ""
# whether to anonymize IP
anonymizeIP = true
# whether to use cookie
cookie = false
# Fathom Analytics
[params.analytics.fathom]
id = ""
# server url for your tracker if you're self hosting
server = ""
2020-04-21 16:55:06 +02:00
# CSS and JS Files CDN config
2020-03-03 14:35:14 +01:00
[params.cdn]
2020-04-18 14:54:54 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / github . com / necolas / normalize . css " " normalize . css " > }}@8.0.1
2020-04-29 19:10:29 +02:00
normalizeCSS = ""
2020-04-24 17:47:47 +02:00
# {{< link " https: / / fontawesome . com / " " fontawesome-free " > }}@5.13.0
2020-04-29 19:10:29 +02:00
fontawesomeFreeCSS = ""
2020-04-24 13:04:37 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / github . com / simple-icons / simple-icons " " simple-icons " > }}@2.9.0
2020-04-29 19:10:29 +02:00
# ("https://cdn.jsdelivr.net/npm/simple-icons@v2/icons/")
simpleIconsPrefix = ""
2020-03-03 14:35:14 +01:00
# animate.css@3.7.2 https://github.com/daneden/animate.css
2020-04-29 19:10:29 +02:00
animateCSS = ""
2020-04-24 17:47:47 +02:00
# {{< link " https: / / github . com / cferdinandi / smooth-scroll " " smooth-scroll " > }}@16.1.3
2020-04-29 19:10:29 +02:00
smoothScrollJS = ""
2020-04-18 14:54:54 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / github . com / algolia / autocomplete . js " " autocomplete . js " > }}@0.37.1
2020-04-29 19:10:29 +02:00
autocompleteJS = ""
2020-04-18 14:54:54 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / lunrjs . com / " " lunr . js " > }}@2.3.8
2020-04-29 19:10:29 +02:00
lunrJS = ""
2020-04-24 17:47:47 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / github . com / algolia / algoliasearch-client-javascript " " algoliasearch " > }}@4.2.0
2020-04-29 19:10:29 +02:00
algoliasearchJS = ""
2020-03-17 14:16:04 +01:00
# {{< link " https: / / github . com / aFarkas / lazysizes " " lazysizes " > }}@5.2.0
2020-04-29 19:10:29 +02:00
lazysizesJS = ""
2020-04-30 17:21:52 +02:00
# {{< version 0 . 2 . 3 > }} {{< link " https: / / github . com / fregante / object-fit-images " " object-fit-images " > }}@3.2.4
objectFitImagesJS = ""
2020-04-26 20:27:26 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / github . com / twitter / twemoji " " twemoji " > }}@12.1.5
2020-04-29 19:10:29 +02:00
twemojiJS = ""
2020-04-29 19:23:27 +02:00
# {{< link " https: / / github . com / sachinchoolur / lightgallery . js " " lightgallery . js " > }}@1.1.3
# {{< link " https: / / github . com / sachinchoolur / lg-thumbnail . js " " lg-thumbnail . js " > }}@1.1.0
2020-04-29 19:28:55 +02:00
# {{< link " https: / / github . com / sachinchoolur / lg-zoom . js " " lg-zoom . js " > }}@1.0.1
2020-04-29 19:10:29 +02:00
lightgalleryCSS = ""
lightgalleryJS = ""
lightgalleryThumbnailJS = ""
lightgalleryZoomJS = ""
2020-04-18 14:54:54 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / github . com / zenorocha / clipboard . js " " clipboard . js " > }}@2.0.6
2020-04-29 19:10:29 +02:00
clipboardJS = ""
2020-04-24 17:47:47 +02:00
# {{< link " https: / / github . com / ellisonleao / sharer . js " " sharer . js " > }}@0.4.0
2020-04-29 19:10:29 +02:00
sharerJS = ""
2020-04-30 17:21:52 +02:00
# {{< link " https: / / github . com / alexmacarthur / typeit " " typeit " > }}@6.5.1
2020-04-29 19:10:29 +02:00
typeitJS = ""
2020-03-17 14:16:04 +01:00
# {{< link " https: / / github . com / KaTeX / KaTeX " " katex " > }}@0.11.1
2020-04-29 19:10:29 +02:00
katexCSS = ""
katexJS = ""
katexAutoRenderJS = ""
katexCopyTexCSS = ""
katexCopyTexJS = ""
katexMhchemJS = ""
2020-04-24 17:47:47 +02:00
# {{< link " https: / / github . com / knsv / mermaid " " mermaid " > }}@8.5.0
2020-04-29 19:10:29 +02:00
mermaidJS = ""
2020-04-24 17:47:47 +02:00
# {{< link " https: / / echarts . apache . org / " " echarts " > }}@4.7.0
2020-04-29 19:10:29 +02:00
echartsJS = ""
echartsMacaronsJS = ""
2020-04-29 19:49:33 +02:00
# {{< version 0 . 2 . 0 > }} {{< link " https: / / docs . mapbox . com / mapbox-gl-js " mapbox-gl > }}@1.10.0
2020-04-29 19:10:29 +02:00
mapboxGLCSS = ""
mapboxGLJS = ""
2020-04-15 09:46:50 +02:00
# {{< link " https: / / github . com / MoePlayer / APlayer " " aplayer " > }}@1.10.1
2020-04-29 19:10:29 +02:00
aplayerCSS = ""
aplayerJS = ""
2020-04-15 09:46:50 +02:00
# {{< link " https: / / github . com / metowolf / MetingJS " " meting " > }}@2.0.1
2020-04-29 19:10:29 +02:00
metingJS = ""
2020-03-17 14:16:04 +01:00
# {{< link " https: / / github . com / gitalk / gitalk " " gitalk " > }}@1.6.2
2020-04-29 19:10:29 +02:00
gitalkCSS = ""
gitalkJS = ""
2020-04-29 19:49:33 +02:00
# {{< link " https: / / valine . js . org / " " valine " > }}@1.4.14
2020-04-29 19:10:29 +02:00
valineJS = ""
2020-03-03 14:35:14 +01:00
2020-04-21 16:55:06 +02:00
# Markup related config in Hugo
2020-03-03 14:35:14 +01:00
[markup]
2020-03-17 14:16:04 +01:00
# {{< link " https: / / gohugo . io / content-management / syntax-highlighting " " Syntax Highlighting " > }}
2020-03-03 14:35:14 +01:00
[markup.highlight]
codeFences = true
guessSyntax = true
lineNos = true
2020-04-18 14:54:54 +02:00
lineNumbersInTable = true
2020-03-17 14:16:04 +01:00
# false is a necessary configuration
# ({{< link " https: / / github . com / dillonzq / LoveIt / issues / 158 " > }})
2020-03-03 14:35:14 +01:00
noClasses = false
# Goldmark is from Hugo 0.60 the default library used for Markdown
[markup.goldmark]
[markup.goldmark.extensions]
definitionList = true
footnote = true
linkify = true
strikethrough = true
table = true
taskList = true
typographer = true
[markup.goldmark.renderer]
# whether to use HTML tags directly in the document
unsafe = true
# Table Of Contents settings
[markup.tableOfContents]
startLevel = 2
endLevel = 6
2020-04-21 16:55:06 +02:00
# Author config
2020-03-03 14:35:14 +01:00
[author]
name = "xxxx"
2020-04-22 17:58:40 +02:00
email = ""
2020-03-03 14:35:14 +01:00
link = ""
2020-04-21 16:55:06 +02:00
# Sitemap config
2020-03-03 14:35:14 +01:00
[sitemap]
changefreq = "weekly"
filename = "sitemap.xml"
priority = 0.5
2020-04-27 19:38:22 +02:00
# {{< link "https://gohugo.io/content-management/urls#permalinks" "Permalinks config" >}}
2020-03-03 14:35:14 +01:00
[Permalinks]
# posts = ":year/:month/:filename"
posts = ":filename"
2020-04-21 16:55:06 +02:00
# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "Privacy config" >}}
2020-03-03 14:35:14 +01:00
[privacy]
2020-04-22 11:50:30 +02:00
# {{< version 0 . 2 . 0 deleted > }} privacy of the Google Analytics (replaced by params.analytics.google)
2020-03-03 14:35:14 +01:00
[privacy.googleAnalytics]
2020-04-22 11:50:30 +02:00
# ...
[privacy.twitter]
enableDNT = true
2020-03-03 14:35:14 +01:00
[privacy.youtube]
privacyEnhanced = true
# Options to make output .md files
[mediaTypes]
[mediaTypes."text/plain"]
suffixes = ["md"]
# Options to make output .md files
[outputFormats.MarkDown]
mediaType = "text/plain"
isPlainText = true
isHTML = false
# Options to make hugo output files
[outputs]
2020-04-18 14:54:54 +02:00
# {{< version 0 . 2 . 0 changed > }}
2020-04-15 09:46:50 +02:00
home = ["HTML", "RSS", "JSON"]
2020-03-03 14:35:14 +01:00
page = ["HTML", "MarkDown"]
section = ["HTML", "RSS"]
taxonomy = ["HTML", "RSS"]
taxonomyTerm = ["HTML"]
```
2020-04-27 19:38:22 +02:00
{{< admonition > }}
Note that some of these parameters are explained in details in other sections of this documentation.
{{< / admonition > }}
{{< admonition note " Hugo environments " > }}
Default environments are `development` with `hugo serve` and `production` with `hugo` .
Due to limitations in the local `development` environment,
the **comment system** , **CDN** and **fingerprint** will not be enabled in the `development` environment.
You could enable these features with `hugo serve -e production` .
{{< / admonition > }}
2020-04-15 09:46:50 +02:00
{{< admonition tip " Tips about CDN Configuration " > }}
Full HTML tags or URLs are supported for CDN configuration:
```toml
smoothScrollJS = '< script src = "https://cdn.jsdelivr.net/npm/smooth-scroll@16.1.3/dist/smooth-scroll.min.js" integrity = "sha256-vP+F+14A1ogChQs5Osd5LJl/ci9TbzjiZjjEbcqOXrY=" crossorigin = "anonymous" > < / script > '
# Or
smoothScrollJS = 'https://cdn.jsdelivr.net/npm/smooth-scroll@16/dist/smooth-scroll.min.js'
```
{{< / admonition > }}
2020-04-24 13:04:37 +02:00
{{< admonition tip " Tips about social Configuration " > }}
{{< version 0 . 2 . 0 > }}
You can directly set your ID to get a default social link and its icon:
```toml
[params.social]
Mastodon = "@xxxx"
```
The social link generated is `https://mastodon.technology/@xxxx` .
Or You can set more options through a dict:
```toml
[params.social]
[params.social.Mastodon]
# weight when arranging icons (the greater the weight, the later the icon is positioned)
weight = 0
# your social ID
id = "@xxxx"
# prefix of your social link
prefix = "https://mastodon.social/"
# content hovering on the icon
title = "Mastodon"
```
The default configuration of all supported social links is located in `themes/LoveIt/assets/data/social.yaml` ,
which is you can refer to.
{{< / admonition > }}
2020-03-09 20:33:28 +01:00
![Complete configuration preview ](/images/theme-documentation-basics/complete-configuration-preview.png "Complete configuration preview" )
2020-03-08 14:02:21 +01:00
2020-03-03 14:35:14 +01:00
### 3.2 Favicons, Browserconfig, Manifest
2020-03-08 14:02:21 +01:00
It is recommended to put your own favicons:
2020-03-03 14:35:14 +01:00
* apple-touch-icon.png (180x180)
* favicon-32x32.png (32x32)
* favicon-16x16.png (16x16)
* mstile-150x150.png (150x150)
* android-chrome-192x192.png (192x192)
* android-chrome-512x512.png (512x512)
into `/static` . They’ re easily created via [https://realfavicongenerator.net/ ](https://realfavicongenerator.net/ ).
Customize `browserconfig.xml` and `site.webmanifest` to set theme-color and background-color.
2020-03-08 14:02:21 +01:00
### 3.3 Add Logo and Cover for SEO
2020-03-03 14:35:14 +01:00
Add a logo image (127x40) and a cover image (800x600) in the `static` directory.
### 3.4 Style Customization
2020-03-08 14:02:21 +01:00
**LoveIt** theme has been built to be as configurable as possible by defining custom `.scss` style files.
2020-03-03 14:35:14 +01:00
2020-03-14 14:47:51 +01:00
The directory including the custom `.scss` style files is `config/css` relative to **your project root directory** .
2020-03-03 14:35:14 +01:00
2020-03-14 14:47:51 +01:00
In `config/css/_override.scss` , you can override the variables in `themes/LoveIt/assets/css/_variables.scss` to customize the style.
2020-03-03 14:35:14 +01:00
Here is a example:
```scss
@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,700&display=swap&subset=latin-ext');
$code-font-family: Fira Mono, Source Code Pro, Menlo, Consolas, Monaco, monospace;
```
2020-03-14 14:47:51 +01:00
In `config/css/_custom.scss` , you can add some css style code to customize the style.
2020-03-08 14:02:21 +01:00
## 4 Multilingual and i18n
2020-04-16 12:31:06 +02:00
**LoveIt** theme is fully compatible with Hugo multilingual mode, which provides in-browser language switching.
2020-03-08 14:02:21 +01:00
2020-04-16 12:31:06 +02:00
![Language Switch ](/images/theme-documentation-basics/language-switch.gif "Language Switch" )
2020-03-08 14:02:21 +01:00
2020-04-16 12:31:06 +02:00
### 4.1 Compatibility {#language-compatibility}
2020-03-08 14:02:21 +01:00
2020-04-29 10:49:45 +02:00
{{< version 0 . 2 . 0 changed > }}
2020-04-26 17:00:29 +02:00
| Language | Hugo Code | HTML `lang` Attribute | Theme Docs | Lunr.js Support |
|:-------------------- |:---------:|:---------------------:|:-----------------------------:|:-----------------------------:|
| English | `en` | `en` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): |
| Simplified Chinese | `zh-cn` | `zh-CN` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): |
| French | `fr` | `fr` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| Polish | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): |
| Brazilian Portuguese | `pt-br` | `pt-BR` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
2020-04-27 20:08:31 +02:00
| Italian | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
2020-03-08 14:02:21 +01:00
2020-04-16 12:31:06 +02:00
### 4.2 Basic Configuration
2020-03-08 14:02:21 +01:00
After learning [how Hugo handle multilingual websites ](https://gohugo.io/content-management/multilingual ), define your languages in your [site configuration ](#site-configuration ).
For example with English, Chinese and French website:
```toml
2020-04-16 12:31:06 +02:00
# [en, zh-cn, fr, pl, ...] determines default content language
2020-03-08 14:02:21 +01:00
defaultContentLanguage = "en"
[languages]
[languages.en]
weight = 1
title = "My New Hugo Site"
languageCode = "en"
languageName = "English"
[[languages.en.menu.main]]
identifier = "posts"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Posts"
url = "/posts/"
title = ""
weight = 1
[[languages.en.menu.main]]
identifier = "tags"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Tags"
url = "/tags/"
title = ""
weight = 2
[[languages.en.menu.main]]
identifier = "categories"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Categories"
url = "/categories/"
title = ""
weight = 3
2020-03-09 20:33:28 +01:00
[languages.zh-cn]
2020-03-08 14:02:21 +01:00
weight = 2
title = "我的全新 Hugo 网站"
2020-03-09 20:33:28 +01:00
# language code, CN only here
2020-03-08 14:02:21 +01:00
languageCode = "zh-CN"
languageName = "简体中文"
# whether to include Chinese/Japanese/Korean
hasCJKLanguage = true
2020-03-09 20:33:28 +01:00
[[languages.zh-cn.menu.main]]
2020-03-08 14:02:21 +01:00
identifier = "posts"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "文章"
url = "/posts/"
title = ""
weight = 1
2020-03-09 20:33:28 +01:00
[[languages.zh-cn.menu.main]]
2020-03-08 14:02:21 +01:00
identifier = "tags"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "标签"
url = "/tags/"
title = ""
weight = 2
2020-03-09 20:33:28 +01:00
[[languages.zh-cn.menu.main]]
2020-03-08 14:02:21 +01:00
identifier = "categories"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "分类"
url = "/categories/"
title = ""
weight = 3
[languages.fr]
weight = 3
title = "Mon nouveau site Hugo"
languageCode = "fr"
languageName = "Français"
[[languages.fr.menu.main]]
identifier = "posts"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Postes"
url = "/posts/"
title = ""
weight = 1
[[languages.fr.menu.main]]
identifier = "tags"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
name = "Balises"
url = "/tags/"
title = ""
weight = 2
[[languages.fr.menu.main]]
identifier = "categories"
name = "Catégories"
pre = ""
2020-04-23 10:49:30 +02:00
post = ""
2020-03-08 14:02:21 +01:00
url = "/categories/"
title = ""
weight = 3
```
Then, for each new page, append the language code to the file name.
Single file `my-page.md` is split in three files:
* in English: `my-page.en.md`
* in Chinese: `my-page.zh-cn.md`
* in French: `my-page.fr.md`
{{< admonition > }}
Be aware that only translated pages are displayed in menu. It’ s not replaced with default language content.
{{< / admonition > }}
{{< admonition tip > }}
2020-04-27 19:38:22 +02:00
Use [Front Matter parameter ](https://gohugo.io/content-management/multilingual#translate-your-content ) to translate urls too.
2020-03-08 14:02:21 +01:00
{{< / admonition > }}
2020-04-16 12:31:06 +02:00
### 4.3 Overwrite Translation Strings
2020-03-08 14:02:21 +01:00
2020-04-16 12:31:06 +02:00
Translations strings are used for common default values used in the theme. Translations are available in [some languages ](#language-compatibility ), but you may use another language or want to override default values.
2020-03-08 14:02:21 +01:00
To override these values, create a new file in your local i18n folder `i18n/<languageCode>.toml` and inspire yourself from `themes/LoveIt/i18n/en.toml` .
2020-04-29 14:53:45 +02:00
By the way, as these translations could be used by other people, please take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR ](https://github.com/dillonzq/LoveIt/pulls ) to the theme!
2020-04-15 09:46:50 +02:00
## 5 Search
{{< version 0 . 2 . 0 > }}
Based on [Lunr.js ](https://lunrjs.com/ ) or [algolia ](https://www.algolia.com/ ), searching is supported in **LoveIt** theme.
### 5.1 Output Configuration
In order to generate `index.json` for searching, add `JSON` output file type to the `home` of the `outputs` part in your [site configuration ](#site-configuration ).
```toml
[outputs]
home = ["HTML", "RSS", "JSON"]
```
### 5.2 Search Configuration
Based on `index.json` generated by Hugo, you could activate searching.
Here is the search configuration in your [site configuration ](#site-configuration ):
```toml
[params.search]
enable = true
# type of search engine ("lunr", "algolia")
type = "lunr"
2020-04-28 20:34:28 +02:00
# max index length of the chunked content
2020-04-29 21:22:52 +02:00
contentLength = 4000
2020-04-28 20:34:28 +02:00
# placeholder of the search bar
placeholder = ""
# {{< version 0 . 2 . 1 > }} max number of results length
maxResultLength = 10
2020-04-30 20:34:17 +02:00
# {{< version 0 . 2 . 3 > }} snippet length of the result
snippetLength = 30
2020-04-28 20:34:28 +02:00
# {{< version 0 . 2 . 1 > }} HTML tag name of the highlight part in results
highlightTag = "em"
2020-05-01 17:54:29 +02:00
# {{< version 0 . 2 . 4 > }} whether to use the absolute URL based on the baseURL in search index
absoluteURL = false
2020-04-15 09:46:50 +02:00
[params.search.algolia]
index = ""
appID = ""
searchKey = ""
```
2020-04-28 20:34:28 +02:00
{{< admonition note " How to choose search engine ? " > }}
2020-04-27 19:38:22 +02:00
The following is a comparison of two search engines:
2020-04-15 09:46:50 +02:00
* `lunr` : simple, no need to synchronize `index.json` , no limit for `contentLength` ,
but high bandwidth and low performance (Especially for Chinese which needs a large segmentit library)
* `algolia` : high performance and low bandwidth, but need to synchronize `index.json` and limit for `contentLength`
2020-04-28 20:34:28 +02:00
2020-04-29 21:22:52 +02:00
{{< version 0 . 2 . 3 > }} The content of the post is separated by `h2` and `h3` HTML tag to improve query performance and basically implement full-text search.
`contentLength` is used to limit the max index length of the part starting with `h2` and `h3` HTML tag.
2020-04-15 09:46:50 +02:00
{{< / admonition > }}
{{< admonition tip " Tips about algolia " > }}
You need to upload `index.json` files to algolia to activate searching.
2020-04-28 20:34:28 +02:00
You could upload the `index.json` files by browsers but a CLI tool may be better.
[Algolia Atomic ](https://github.com/chrisdmacrae/atomic-algolia ) is a good choice.
2020-04-15 09:46:50 +02:00
To be compatible with Hugo multilingual mode,
you need to upload different `index.json` for each language to the different index of algolia, such as `zh-cn/index.json` or `fr/index.json` ...
{{< / admonition > }}