Hexo+NextT基本设置【3】

时间:2023-03-09 19:34:21
Hexo+NextT基本设置【3】

该系列博客列表请访问:http://www.cnblogs.com/penglei-it/category/934299.html

摘要
      或许在你看到我这篇我文章之前,你已经成功的通过Github+Hexo+NextT搭建个人博客这篇文章搭建了自己的博客系统。但是尽管您已经成功建立博客网站,但是你需要对网站做合适的配置和调整才能迎合你的网站要求。本文主要介绍HEXO的基本操作命令和网站的基本配置方法。而在本篇文章中我将着力讲解NextT主题的配置。其他主题的配置与此类似。

安装

Hexo 安装主题的方式非常简单,只需要将主题文件拷贝至站点目录的 themes 目录下, 然后修改下配置文件即可。具体到 NexT 来说,安装步骤如下:

在Hexo目录,打开命令窗口(打开方式参见Github+Hexo+NextT搭建个人博客这篇文章),输入如下命令:

$ git clone https://github.com/iissnan/hexo-theme-next themes/next

稍等片刻,Next主题下载完成。

文件内容

在 Hexo 中有两份主要的配置文件,其名称都是 _config.yml。 其中,一份位于站点根目录下,主要包含 Hexo 本身的配置;另一份位于主题目录下,这份配置由主题作者提供,主要用于配置主题相关的选项。为了描述方便,在以下说明中,将前者称为站点配置文件, 后者称为主题配置文件。

  • 站点配置文件内容
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/ # Site
title: 白衣秀才
subtitle: 青春就是疯狂的奔跑,然后华丽的跌倒,站起来,再跑……
description: 青春就是疯狂的奔跑,然后华丽的跌倒,站起来,再跑……
author: 白衣秀才
language: zh-Hans
timezone: Asia/Shanghai # URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://penglei.top
root: /
permalink: :year/:month/:day/:title/
permalink_defaults: # Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render: # Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link: true # Open external links in new tab
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace: # Category & Tag
default_category: uncategorized
category_map:
tag_map: # Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss # Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page # Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/ theme: next # Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: git@github.com:whitescholars/whitescholars.github.io.git
branch: master #首页的分页设置
index_generator:
per_page: 5
#归档页的分页设置
archive_generator:
per_page: 30
yearly: true
monthly: true
#标签页的分页设置
tag_generator:
per_page: 20 # 自定义站点内容搜索
# 需要先安装插件:
# npm install hexo-generator-search --save
search:
path: search.xml
# 如只想索引文章,可设置为post
field: post #RSS订阅
plugin:
- hexo-generator-feed
#Feed Atom
feed:
type: atom
path: atom.xml
limit: 20 #打赏
reward_comment: 坚持原创技术分享,您的支持将鼓励我继续创作!
wechatpay: http://cgcyg.img48.wal8.com/img48/564414_20170102112604/14833637422.png
alipay: http://cgcyg.img48.wal8.com/img48/564414_20170102112604/148336403046.png
  • 主题配置文件内容
# ---------------------------------------------------------------
# Site Information Settings
# --------------------------------------------------------------- # Put your favicon.ico into `hexo-site/source/` directory.
favicon: http://cgcyg.img48.wal8.com/img48/564414_20170102112604/148332830202.png # Set default keywords (Use a comma to separate)
keywords: "Hexo, NexT, penglei.top ,blog" # Set rss to false to disable feed link.
# Leave rss as empty to use site's feed link.
# Set rss to specific value if you have burned your feed already.
rss: /atom.xml # Specify the date when the site was setup
#since: 2015 # icon between year and author @Footer
authoricon: heart # Footer `powered-by` and `theme-info` copyright
copyright: true # Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog.
# See: https://support.google.com/webmasters/answer/139066
# Tips: Before you open this tag, remeber set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com )
canonical: true # Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization.
seo: false # ---------------------------------------------------------------
# Menu Settings
# --------------------------------------------------------------- # When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash (/archives -> archives)
menu:
home: /
categories: /categories
archives: /archives
tags: /tags
about: /about
#sitemap: /sitemap.xml
#commonweal: /404.html # Enable/Disable menu icons.
# Icon Mapping:
# Map a menu item to a specific FontAwesome icon name.
# Key is the name of menu item and value is the name of FontAwsome icon. Key is case-senstive.
# When an question mask icon presenting up means that the item has no mapping icon.
menu_icons:
enable: true
#KeyMapsToMenuItemKey: NameOfTheIconFromFontAwesome
home: home
about: user
categories: th
schedule: calendar
tags: tags
archives: archive
sitemap: sitemap
commonweal: heartbeat # ---------------------------------------------------------------
# Scheme Settings
# --------------------------------------------------------------- # Schemes
#scheme: Muse
#scheme: Mist
scheme: Pisces # ---------------------------------------------------------------
# Font Settings
# - Find fonts on Google Fonts (https://www.google.com/fonts)
# - All fonts set here will have the following styles:
# light, light italic, normal, normal intalic, bold, bold italic
# - Be aware that setting too much fonts will cause site running slowly
# - Introduce in 5.0.1
# ---------------------------------------------------------------
font:
enable: true # Uri of fonts host. E.g. //fonts.googleapis.com (Default)
host: # Global font settings used on <body> element.
global:
# external: true will load this font family from host.
external: true
family: Lato # Font settings for Headlines (h1, h2, h3, h4, h5, h6)
# Fallback to `global` font settings.
headings:
external: true
family: # Font settings for posts
# Fallback to `global` font settings.
posts:
external: true
family: # Font settings for Logo
# Fallback to `global` font settings.
# The `size` option use `px` as unit
logo:
external: true
family:
size: # Font settings for <code> and code blocks.
codes:
external: true
family:
size: # ---------------------------------------------------------------
# Sidebar Settings
# --------------------------------------------------------------- # Social Links
# Key is the link label showing to end users.
# Value is the target link (E.g. GitHub: https://github.com/iissnan)
social:
GitHub: https://github.com/whitescholars
微博: http://weibo.com/u/3034107691?refer_flag=1001030102_&is_all=1 # Social Links Icons
# Icon Mapping:
# Map a menu item to a specific FontAwesome icon name.
# Key is the name of the item and value is the name of FontAwsome icon. Key is case-senstive.
# When an globe mask icon presenting up means that the item has no mapping icon.
social_icons:
enable: true
# Icon Mappings.
# KeyMapsToSocalItemKey: NameOfTheIconFromFontAwesome
GitHub: github
Twitter: twitter
微博: weibo # Sidebar Avatar
# in theme directory(source/images): /images/avatar.jpg
# in site directory(source/uploads): /uploads/avatar.jpg
avatar: http://cgcyg.img48.wal8.com/img48/564414_20170102112604/148335731153.png # Table Of Contents in the Sidebar
toc:
enable: true # Automatically add list number to toc.
number: true # Creative Commons 4.0 International License.
# http://creativecommons.org/
# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero
#creative_commons: by-nc-sa
#creative_commons: sidebar:
# Sidebar Position, available value: left | right
position: left
#position: right # Sidebar Display, available value:
# - post expand on posts automatically. Default.
# - always expand for all pages automatically
# - hide expand only when click on the sidebar toggle icon.
# - remove Totally remove sidebar including sidebar toggler.
display: always
#display: always
#display: hide
#display: remove # Blogrolls
#links_title: Links
links_layout: block
#links_layout: inline
links:
博客园: http://www.cnblogs.com/penglei-it/
长江大学石油软件实验班: http://www.petrosoftware-class.com/ # ---------------------------------------------------------------
# Post Settings
# --------------------------------------------------------------- # Automatically scroll page to section which is under <!-- more --> mark.
scroll_to_more: true # Automatically excerpt description in homepage as preamble text.
excerpt_description: true # Automatically Excerpt. Not recommand.
# Please use <!-- more --> in the post to control excerpt accurately.
auto_excerpt:
enable: true
length: 150 # Post meta display settings
post_meta:
item_text: true
created_at: true
updated_at: false
categories: true # Wechat Subscriber
#wechat_subscriber:
#enabled: true
#qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg
#description: ex. subscribe to my blog by scanning my public wechat account # ---------------------------------------------------------------
# Misc Theme Settings
# --------------------------------------------------------------- # Custom Logo.
# !!Only available for Default Scheme currently.
# Options:
# enabled: [true/false] - Replace with specific image
# image: url-of-image - Images's url
custom_logo:
enabled: false
image: # Code Highlight theme
# Available value:
# normal | night | night eighties | night blue | night bright
# https://github.com/chriskempson/tomorrow-theme
highlight_theme: normal # ---------------------------------------------------------------
# Third Party Services Settings
# --------------------------------------------------------------- # MathJax Support
mathjax:
enable: false
per_page: false
cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML # Swiftype Search API Key
#swiftype_key: # Baidu Analytics ID
baidu_analytics: 23d814c46207990b1bb576bcdf937df8 # Duoshuo ShortName
duoshuo_shortname: penglei # Disqus
#disqus_shortname: # Hypercomments
#hypercomments_id: # Gentie productKey
#gentie_productKey: # Baidu Share
# Available value:
# button | slide
# Warning: Baidu Share does not support https.
#baidushare:
## type: button # Share
jiathis: true
# Warning: JiaThis does not support https.
#add_this_id: # Share
duoshuo_share: true
duoshuo_hotartical: true # Google Webmaster tools verification setting
# See: https://www.google.com/webmasters/
#google_site_verification: # Google Analytics
#google_analytics: # CNZZ count
cnzz_siteid: 1261104557 # Application Insights
# See https://azure.microsoft.com/en-us/services/application-insights/
# application_insights: # Make duoshuo show UA
# user_id must NOT be null when admin_enable is true!
# you can visit http://dev.duoshuo.com get duoshuo user id.
duoshuo_info:
ua_enable: true
admin_enable: true
user_id: 6370865374186963713
admin_nickname: 博主 # Facebook SDK Support.
# https://github.com/iissnan/hexo-theme-next/pull/410
facebook_sdk:
enable: false
app_id: #<app_id>
fb_admin: #<user_id>
like_button: #true
webmaster: #true # Facebook comments plugin
# This plugin depends on Facebook SDK.
# If facebook_sdk.enable is false, Facebook comments plugin is unavailable.
facebook_comments_plugin:
enable: false
num_of_posts: 10 # min posts num is 1
width: 100% # default width is 550px
scheme: light # default scheme is light (light or dark) # Show number of visitors to each article.
# You can visit https://leancloud.cn get AppID and AppKey.
leancloud_visitors:
enable: true
app_id: ErKf3oTlvgx8tsfSYNbUTu2I-gzGzoHsz
app_key: MPPjt8qkE6WgiqYi4QWyy0OE # Show PV/UV of the website/page with busuanzi.
# Get more information on http://ibruce.info/2015/04/04/busuanzi/
busuanzi_count:
# count values only if the other configs are false
enable: true
# custom uv span for the whole site
site_uv: true
site_uv_header: 本站访客数
site_uv_footer: 人次
# custom pv span for the whole site
site_pv: true
site_pv_header: 本站总访问量
site_pv_footer: 次
# custom pv span for one page only
page_pv: false
page_pv_header: 本文总阅读量
page_pv_footer: 次 # Tencent analytics ID
tencent_analytics: 60261186 # Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO
baidu_push: true # 自动生成sitemap
# 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml # Google Calendar
# Share your recent schedule to others via calendar page
#
# API Documentation:
# https://developers.google.com/google-apps/calendar/v3/reference/events/list
calendar:
enable: false
calendar_id: <required>
api_key: <required>
orderBy: startTime
offsetMax: 24
offsetMin: 4
timeZone:
showDeleted: false
singleEvents: true
maxResults: 250 # Algolia Search
algolia_search:
enable: false
hits:
per_page: 10
labels:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}"
hits_stats: "${hits} results found in ${time} ms" #! ---------------------------------------------------------------
#! DO NOT EDIT THE FOLLOWING SETTINGS
#! UNLESS YOU KNOW WHAT YOU ARE DOING
#! --------------------------------------------------------------- # Motion
use_motion: true # Fancybox
fancybox: true # Script Vendors.
# Set a CDN address for the vendor you want to customize.
# For example
# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
# Be aware that you should use the same version as internal ones to avoid potential problems.
# Please use the https protocol of CDN files when you enable https on your site.
vendors:
# Internal path prefix. Please do not edit it.
_internal: lib # Internal version: 2.1.3
jquery: # Internal version: 2.1.5
# See: http://fancyapps.com/fancybox/
fancybox:
fancybox_css: # Internal version: 1.0.6
# See: https://github.com/ftlabs/fastclick
fastclick: # Internal version: 1.9.7
# See: https://github.com/tuupola/jquery_lazyload
lazyload: # Internal version: 1.2.1
# See: http://VelocityJS.org
velocity: # Internal version: 1.2.1
# See: http://VelocityJS.org
velocity_ui: # Internal version: 0.7.9
# See: https://faisalman.github.io/ua-parser-js/
ua_parser: # Internal version: 4.6.2
# See: http://fontawesome.io/
fontawesome: # Internal version: 1
# https://www.algolia.com
algolia_instant_js:
algolia_instant_css: # Assets
css: css
js: js
images: images # Theme version
version: 5.1.0

启用主题

与所有 Hexo 主题启用的模式一样。 当 克隆/下载 完成后,打开站点配置文件, 找到 theme 字段,并将其值更改为 next。

theme: next

到此,NexT 主题安装完成。下一步我们将验证主题是否正确启用。在切换主题之后、验证之前, 我们最好使用 hexo clean 来清除 Hexo 的缓存。

首先启动 Hexo 本地站点,整个命令是 hexo server。 在服务启动的过程,注意观察命令行输出是否有任何异常信息,如果你碰到问题,这些信息将帮助他人更好的定位错误。 当命令行输出中提示出:

INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.

此时即可使用浏览器访问 http://localhost:4000,检查站点是否正确运行。若出现如下界面则证明主题启用成功!

Hexo+NextT基本设置【3】

当然你可能看到的界面和我有些不一样,但是不要紧,下面的教程中接着告诉大家该如何设置成和我的这种风格。

主题设定

  • 选择 Scheme

Scheme 是 NexT 提供的一种特性,借助于 Scheme,NexT 为你提供多种不同的外观。同时,几乎所有的配置都可以 在 Scheme 之间共用。目前 NexT 支持三种 Scheme,他们是:

  1. Muse - 默认 Scheme,这是 NexT 最初的版本,黑白主调,大量留白
  2. Mist - Muse 的紧凑版本,整洁有序的单栏外观
  3. Pisces - 双栏 Scheme,小家碧玉似的清新

Scheme 的切换通过更改 主题配置文件,搜索 scheme 关键字。 你会看到有三行 scheme 的配置,将你需用启用的 scheme 前面注释 # 即可。而我使用的就是第三种主题。

Muse主题样式

Hexo+NextT基本设置【3】

Mist主题样式

Hexo+NextT基本设置【3】

  • 设置语言

编辑 站点配置文件, 将 language 设置成你所需要的语言。建议明确设置你所需要的语言,例如选用简体中文,配置如下:

language: zh-Hans
  • 设置菜单

菜单配置包括三个部分,第一是菜单项(名称和链接),第二是菜单项的显示文本,第三是菜单项对应的图标。 NexT 使用的是 Font Awesome 提供的图标, Font Awesome 提供了 600+ 的图标,可以满足绝大的多数的场景,同时无须担心在 Retina 屏幕下 图标模糊的问题。

编辑 主题配置文件,修改以下内容:

设定菜单内容,对应的字段是 menu。 菜单内容的设置格式是:item name: link。其中 item name 是一个名称,这个名称并不直接显示在页面上,她将用于匹配图标以及翻译。

# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash (/archives -> archives)
menu:
home: /
categories: /categories
archives: /archives
tags: /tags
about: /about
#sitemap: /sitemap.xml
#commonweal: /404.html

设置菜单项的显示文本。在第一步中设置的菜单的名称并不直接用于界面上的展示。Hexo 在生成的时候将使用 这个名称查找对应的语言翻译,并提取显示文本。这些翻译文本放置在 NexT 主题目录下的 languages/{language}.yml 。

以简体中文为例,若你需要添加一个菜单项,比如 something。那么就需要修改简体中文对应的翻译文件 languages/zh-Hans.yml,在 menu 字段下添加一项:

menu:
home: 首页
archives: 归档
categories: 分类
tags: 标签
about: 关于
search: 搜索
  • 设置侧栏

默认情况下,侧栏仅在文章页面(拥有目录列表)时才显示,并放置于右侧位置。 可以通过修改 主题配置文件 中的 sidebar 字段来控制侧栏的行为。侧栏的设置包括两个部分,其一是侧栏的位置, 其二是侧栏显示的时机。

设置侧栏的位置,修改 sidebar.position 的值,支持的选项有:

  1. left - 靠左放置
  2. right - 靠右放置
sidebar:
position: left

设置侧栏显示的时机,修改 sidebar.display 的值,支持的选项有:

  1. post - 默认行为,在文章页面(拥有目录列表)时显示
  2. always - 在所有页面中都显示
  3. hide - 在所有页面中都隐藏(可以手动展开)
  4. remove - 完全移除
sidebar:
display: post
  • 设置头像

编辑 主题配置文件, 新增字段 avatar, 值设置成头像的链接地址。其中,头像的链接地址可以是

# Sidebar Avatar
# in theme directory(source/images): /images/avatar.jpg
# in site directory(source/uploads): /uploads/avatar.jpg
avatar: http://cgcyg.img48.wal8.com/img48/564414_20170102112604/148335731153.png
  • 设置作者昵称,描述,Title

编辑 站点配置文件, 设置 author 为你的昵称。

title: 白衣秀才
subtitle: 青春就是疯狂的奔跑,然后华丽的跌倒,站起来,再跑……
description: 青春就是疯狂的奔跑,然后华丽的跌倒,站起来,再跑……
author: 白衣秀才
language: zh-Hans
timezone: Asia/Shanghai
  • 设置友情链接和自己博客的地址

编辑主配置文件, 设置友情链接地址以及自己博客的地址。

# Blogrolls
#links_title: Links
links_layout: block
#links_layout: inline
links:
博客园: http://www.cnblogs.com/penglei-it/
长江大学石油软件实验班: http://www.petrosoftware-class.com/ # Social Links
# Key is the link label showing to end users.
# Value is the target link (E.g. GitHub: https://github.com/iissnan)
social:
GitHub: https://github.com/whitescholars
微博: http://weibo.com/u/3034107691?refer_flag=1001030102_&is_all=1
  • 配置站点建立时间

这个时间将在站点的底部显示,例如 © 2013 - 2015。 编辑 主题配置文件,新增字段 since。

since: 2013

页面添加

  • 添加“标签”页面

新建“标签”页面,并在菜单中显示“标签”链接。“标签”页面将展示站点的所有标签,若你的所有文章都未包含标签,此页面将是空的。 底下代码是一篇包含标签的文章的例子:

title: 标签测试文章
tags:
- Testing
- Another Tag
---
    • 在终端窗口下,定位到 Hexo 站点目录下。使用 hexo new page 新建一个页面,命名为 tags :
$ cd your-hexo-site
$ hexo new page tags
    • 编辑刚新建的页面,将页面的类型设置为 tags ,主题将自动为这个页面显示标签云。页面内容如下:
title: 标签
date: 2017-1-11 12:39:04
type: "tags"
---
    • 在菜单中添加链接。编辑 主题配置文件 , 添加 tags 到 menu 中,如下:
menu:
home: /
archives: /archives
tags: /tags
  • 添加"分类"页面

新建"分类"页面,并在菜单中显示"分类"链接。"分类"页面将展示站点的所有分类,若你的所有文章都未包含分类,此页面将是空的。 底下代码是一篇包含分类的文章的例子:

title: 测试文章
categories: Testing
---
    • 在终端窗口下,定位到 Hexo 站点目录下。使用 hexo new page 新建一个页面,命名为 categories:
$ cd your-hexo-site
$ hexo new page categories
    • 编辑刚新建的页面,将页面的类型设置为 categories,主题将自动为这个页面显示标签云。页面内容如下:
title: 分类
date: 2017-1-11 12:39:04
type: "categories"
---
    • 在菜单中添加链接。编辑 主题配置文件 , 添加 categories到 menu 中,如下:
menu:
home: /
archives: /archives
categories: /categories

注意:如果有启用 多说 或者 Disqus 评论,页面也会带有评论。(下一篇文章将告诉大家如何启用评论) 若需要关闭的话,请添加字段 comments 并将值设置为 false,如:

title: 分类
date: 2014-12-22 12:39:04
type: "categories"
comments: false
---
  • 添加"404"页面

腾讯公益404页面,寻找丢失儿童,让大家一起关注此项公益事业!效果如下 http://www.ixirong.com/404.html

使用方法,新建 404.html 页面,放到主题的 source 目录下,内容如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8;"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="robots" content="all" />
<meta name="robots" content="index,follow"/>
</head>
<body> <script type="text/javascript" src="http://www.qq.com/404/search_children.js"
charset="utf-8" homePageUrl="your site url "
homePageName="回到我的主页">
</script> </body>
</html>

使用404页面的好处是当站点出现问题,或参数错误,页面不存在就会跳转到404页面。

以上基本包好hexo-next所有的基本配置,设置完成这些,你的全新的博客将展现在你的面前。当然,即便配置了这么多,其实还有很多完善的地方。我将在下一片博客中继续讲解关于hexo的配置,包括集成第三方服务,以及百度推广相关的知识。

最后博客的访问地址是:http://penglei.top/


结语

如果你还需要了解更多技术文章信息,请继续关注白衣秀才的博客
 个人网站:http://penglei.top/
 Github:https://github.com/whitescholars
 微博:http://weibo.com/u/3034107691?refer_flag=1001030102_&is_all=1