侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 44 篇文章
  • 累计创建 90 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Hexo博客-Webstack网址导航

雪穗
2023-06-19 / 0 评论 / 0 点赞 / 36 阅读 / 0 字
温馨提示:
若部分素材不小心影响到您的利益,请联系我删除。

说明:

1.鉴于每个人的博客根目录名称都不太一样,本文 博客根目录 一律以 [BlogRoot] 代替

2.站点配置文件 _config.yml ,路径为 [BlogRoot]_config.yml

3.主题配置文件 _config.yml ,路径为 [BlogRoot]\themes\butterfly_config.yml

4.以 [NavRoot] 指代 [E:/gitcode/blog-nav]

5.Nav 站点配置文件 _config.yml ,路径为 [NavRoot]_config.yml

6.Nav 主题配置文件 _config.webstack.yml ,路径为 [NavRoot]_config.webstack.yml

参考:

1.优雅的使用Webstack打造个人网址导航

2.Hexo 博客搭建基础教程 (二)

1.为什么要单独做一个网址收藏页面

我们知道直接在Hexo博客中可以添加网站链接,生成网址收藏页面,类似于友链,但是当收藏的网站比较多时,单独建一个网站专门用来收藏网址会更方便一些,而且这个网站还可以直接嵌入到博客中。

2.部署网址导航的仓库

1.在Github新建一个仓库 blog-nav ,这个仓库可以private(如果通过vercel指定二级域名,private或者public都可以)或者public(通过生成Page自定义域名)。

2.本地新建 [E:/gitcode/blog-nav] 目录,在此目录下执行如下代码用来安装 Hexo和相关依赖

npm install -g hexo-cli #全局安装hexo
hexo init blog-nav   #新建一个blog_nav目录并在此目录下进行hexo项目的初始化
cd blog-nav #到blog-nav目录下
npm i   #安装或更新相关依赖

文件目录如下:

node_modules:依赖包
scaffolds:生成文章的一些模板
source:用来存放你的文章
themes:主题
.gitignore:发布时忽略的文件(可忽略)
_config.landscape.yml:主题的配置文件
_config.yml:博客的配置文件
package.json:项目名称、描述、版本、运行和开发等信息

2.1 部署方式1

推荐直接采用方式1进行配置并推送,方式2也可行不过比较麻烦

1.初始化仓库

git init
git branch -M main  #将Master分支转为Main分

2.安装 webstack 主题,类似于同样基于 HexoButterfly 主题

# hexo >= 5.0
npm install hexo-theme-webstack -S

3.安装 hexo 针对git的 deploy 组件

npm install --save hexo-deployer-git

4.修改站点配置文件 _config.yml,把主题改为 webstack,并且配置推送的仓库

theme: webstack # theme: landscape
deploy:
  type: git
  repo: https://github.com/Einstein-schrodinger/blog-nav.git
  branch: main #github是main分支

5.将 [NavRoot] 根目录下的 _config.landscape.yml 改名为**_config.webstack.yml**,复制 [NavRoot]\node_moules\hexo-theme-webstack_config.example.yml 内的内容到主题配置文件 _config.webstack.yml

6.一键三连

hexo cl && hexo g && hexo d

7.还可以修改 [NavRoot] 根目录的 package.json文件,在第10行添加 “clgd”: “hexo cl && hexo g && hexo d”,注意第9行末尾要加 ,,这样直接执行npm run clgd来推送生成的文件。

{
  "name": "hexo-site",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "build": "hexo generate",
    "clean": "hexo clean",
    "deploy": "hexo deploy",
    "server": "hexo server",
+   "clgd": "hexo cl && hexo g && hexo d"
  },
  "hexo": {
    "version": "6.3.0"
  },
  "dependencies": {
    "hexo": "^6.3.0",
    "hexo-deployer-git": "^3.0.0",
    "hexo-generator-archive": "^2.0.0",
    "hexo-generator-category": "^2.0.0",
    "hexo-generator-index": "^3.0.0",
    "hexo-generator-tag": "^2.0.0",
    "hexo-renderer-ejs": "^2.0.0",
    "hexo-renderer-marked": "^6.0.0",
    "hexo-renderer-stylus": "^2.1.0",
    "hexo-server": "^3.0.0",
    "hexo-theme-landscape": "^0.0.3",
    "hexo-theme-webstack": "^2.1.0"
  }
}

2.2 部署方式2

1.与远程仓库 blog-nav 关联

git init 之后会出现 .gitignore 文件,紧接着对其修改保证只推送 public 文件(其它文件推送也没影响,只是为了简洁)

git init
# 修改 .gitignore 文件
echo "博客的网址收藏" >> README.md  
git add README.md
git commit -m "first commit"
git branch -M main  #将Master分支转为Main分
git remote add origin https://github.com/Einstein-schrodinger/blog-nav.git #与远程仓库进行关联
#git pull --rebase origin main #可选 如果在git push origin main报错,可以执行此句再git push
git push -u origin main

.gitignore

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
.deploy*/
_multiconfig.yml
source/
*.yml
scaffolds/
themes/
*.json

2.安装 webstack 主题,类似于同样基于 HexoButterfly 主题

# hexo >= 5.0
npm install hexo-theme-webstack -S

3.修改站点配置文件 _config.yml,把主题改为 webstack

theme: webstack # theme: landscape

4.将 [NavRoot] 根目录下的 _config.landscape.yml 改名为 _config.webstack.yml,复制 [NavRoot]\node_moules\hexo-theme-webstack_config.example.yml 内的内容到主题配置文件 _config.webstack.yml

5.编译运行并推送

hexo cl && hexo g
git add .
git commit -m "网址收藏"
git push origin main

3.Vercel部署与自定义域名

1.首先要注册一个Vercel账号,然后关联自己的Github仓库,这样就可以在Vercel中直接托管你的GitHub库中的项目了。

2.当你用你的Github账户关联并绑定手机号登录之后,点击右上角的 Add New Project 创建新的项目,之后导入选项那里选择 Continue with Github,这时候应该能看到你 Github 账号的仓库,选择你刚刚部署成功的仓库 blog-nav,右边的Import选项,表示你要导入该仓库。

3.起一个只能有字母、数字或者或者连字符的项目名称,然后其他默认(项目名称也可以保持默认),点击 Deploy,等待一分钟即可部署成功,部署成功后点击 Continue to Dashboard 跳转到控制面板,下图所示就是控制面板,看到就代表成功部署到了,但是我们现在还不能访问他给出的域名,因为GFW最近把 Vercel 屏蔽了。

4.绑定自定义域名(前提是已经有属于自己的域名,域名需要购买)

一些说明

参考:Hexo博客搭建基础教程(二)

以我的域名:sqwfly.top 为例进行说明

主机记录 解释
www 解析后的域名为www.sqwfly.top
@ 直接解析主域名sqwfly.top
* 泛解析,匹配其他所有域名 *.sqwfly.top
mail 将域名解析为mail.sqwfly.top,通常用于解析邮箱服务器
二级 abc.sqwfly.top,填写 abc
手机网站 m.sqwfly.top,填写 m
显性 URL 不支持泛解析(泛解析:将所有子域名解析到同一地址)

将域名指向云服务器,请选择「A」; 将域名指向另一个域名,请选择「CNAME」; 建立邮箱请选择「MX」,根据邮箱服务商提供的 MX 记录填写。

记录类型 解释
A 用来指定域名的 IPv4 地址(如 8.8.8.8),如果需要将域名指向一个 IP 地址,就需要添加 A 记录。
CNAME 如果需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录。
MX 如果需要设置邮箱,让邮箱能收到邮件,就需要添加 MX 记录。
TXT 在这里可以填写任何东西,长度限制 255。绝大多数的 TXT 记录是用来做 SPF 记录(反垃圾邮件)
NS 域名服务器记录,如果需要将子域名交给其他 DNS 服务商解析,就需要添加 NS 记录。
AAAA 用来指定主机名(或域名)对应的 IPv6 地址(例如:ff06:0:0:0:0:0:0:c3)记录。
SRV 记录了哪台计算机提供了哪个服务。格式为:服务的名字、点、协议的类型,例如:_xmpp-server_tcp。
显性 URL 从一个地址 301 重定向到另一个地址的时候,就需要添加显性 URL 记录(注:DNSPod 目前只支持 301 重定向)。
隐性 URL 类似于显性 URL,区别在于隐性 URL 不会改变地址栏的域名。

点击上方工具栏的 setting,找到 Domains,可以看到已经存在了一个域名 blog-nav-a7r2.vercel.app,由于被墙无法访问,所以需要自定义域名。这里自定义的二级域名为 nav.sqwdream.cloud,点击 Add,此时域名还无法访问,需要进行解析。

webstack_gqytxhTJ

5.腾讯云、阿里云等都是不错的域名代理商,我购买的是腾讯云的域名,需要先注册,进入控制台,搜索 DNS解析DNSPod ,点击进入再点击自己的域名 前往DNSPod控制台,添加记录,最后点击确认进行解析。

Vercel 腾讯云 对应内容
Type 记录类型 CNAME
Name 主机记录 nav
Value 记录值 cname.vercel-dns.com.

6.解析成功,可以成功访问nav.sqwdream.cloud

读者在看到这篇博文时,该域名已被弃用

4.将网址收藏界面嵌入到自己的博客中

最后将这一界面嵌入到自己博客中,只需要修改主题配置文件 _config.yml

纳戒||fas fa-brands fa-ubuntu || hide:
   网址收藏: https://nav.sqwfly.top || fas fa-brands fa-internet-explorer

5.Webstack的基本配置

更多详细配置请参考 hexo-theme-webstack

1.网站图标

favicon: /favicon.ico

2.banner

banner: /images/webstack_banner_cn.png

3.网站logo

  • expanded: 侧边栏展开式左上角的 logo

  • collapsed: 侧边栏收起式左上角的 logo

  • dark: 顶栏为暗色时左上角的 logo, 仅 about 页面生效

logo:
  expanded: /images/logo@2x.png
  collapsed: /images/logo-collapsed@2x.png
  dark: /images/logo_dark@2x.png

4.flag

  • icon: 语言图标,默认仅有flag-cn和flag-us, 其他图标自行寻找存放于主题目录/source/images/flags/

  • name: 语言名称

  • default: 该语言是否为默认语言

  • index: 页面链接

flag:
  - name: Chinese
    default: true
    icon: flag-cn
    index: /index.html

5.search

search: true #是否显示搜索框

6.userDefinedSearchData(自定义搜索引擎)

  • custom: 是否启用自定义配置

  • thisSearch: 当前搜索引擎的搜索链接

  • thisSearchIcon: 当前搜索引擎的图标链接,格式为url(图片链接)

  • hotStatus: 是否启用搜热词功能

  • data: 多搜索引擎配置

  • name: 搜索引擎名字 img: 搜索引擎的搜索链接 url: 搜索引擎的图标链接,格式为url(图片链接)

userDefinedSearchData:
  custom: true
  thisSearch: https://www.baidu.com/s?wd=
  thisSearchIcon: url(https://www.baidu.com/favicon.ico)
  hotStatus: true
  data:
    - name: 百度
      img: url(https://www.baidu.com/favicon.ico)
      url: https://www.baidu.com/s?wd=
    - name: 谷歌
      img: url(https://www.google.com/favicon.ico)
      url: https://www.google.com/search?q=

7.githubCorner

右上角的github corner, 将href的属性改为自己的github地址即可。

githubCorner: '<a href="https://github.com/Einstein-schrodinger" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>'

8.since(页面底部的建站年份)

since: 2022

9.menu(侧边栏菜单设置)

  • name: 分组名

  • icon: 分组图标
    config: [主要]分组内容(详细设置查看Config),如果有二级菜单则不需要此项!

  • submenu: 二级菜单,如果有二级菜单则不需要config, 此选项内容包含name, icon, config选项

menu:
  - name: 常用工具
    icon: far fa-star
    config: hotTools
  - name: 其他工具
    icon: fas fa-tools
    submenu:
      - name: 开发工具
        icon: fas fa-tools
        config: devTools
      - name: 我的博客
        icon: fas fa-blog
        config: myBlog

10.expandAll(是否将侧边栏全部展开)

expandAll: true

11.about(侧边栏的关于本站)

  • url: 关于页面链接

  • name: 在侧边栏显示的文字

  • icon: 图标

about:
  url: /about/
  icon: far fa-heart
  name: 关于本站

12.busuanzi(卜算子统计)

  • enable: 是否启用不蒜子统计

  • position: 访问量显示位置, footer显示在页脚, sidebar显示在侧边栏

  • pv: 访问量显示的内容, $pv会被替换为访问量

  • uv: 访客数显示的内容, $uv会被替换为访客数

busuanzi:
  enable: true
  position: sidebar
  pv: 本站总访问量$pv
  uv: 本站总访客数$uv

13.config(网站内容设置)

  • name: 网站名称

  • url: 网站链接

  • img: 网站图标

  • description: 网站描述

- name: 琉璃红梅
  url: https://www.sqwfly.top/
  img: https://www.sqwfly.top/favicon.ico
  description: 尽我所做,做我想做!

14.关联设置名称并添加网站

menusubmenu 中设置的 config 的内容为此选项的名称。

menu

menu:
  - name: 常用工具
    icon: far fa-star
    config: hotTools

常用工具 分组里的网站有以下两种添加方式,以下两种方式任选一种即可,建议使用第二种。

1.在主题配置文件 _config.yml 里添加:

hotTools:
  - name: 琉璃红梅
    url: https://www.sqwfly.top/
    img: https://www.sqwfly.top/favicon.ico
    description: 尽我所做,做我想做!
  - name: Github
    url: https://github.com/
    img: /images/logos/github.png
    description: 面向开源及私有软件项目的托管平台。

2.在站点根目录 /source/_data/ 内新建 hotTools.yml 文件(没有就自行创建),文件内容如下:

- name: 琉璃红梅
  url: https://www.sqwfly.top/
  img: https://www.sqwfly.top/favicon.ico
  description: 尽我所做,做我想做!
- name: Github
  url: https://github.com/
  img: /images/logos/github.png
  description: 面向开源及私有软件项目的托管平台。

0

评论区