时间:2023-07-03 21:00:01 | 来源:网站运营
时间:2023-07-03 21:00:01 来源:网站运营
使用了静态网页生成器:从WordPress 到 Hugo:2020.10.6 增补:又换回了 Hugo,使用 Github 和 Netlify 托管,真香。hexo
和hugo
。在使用两者之前就有将两者进行过对比,前者基于node.js、后者基于golang,在对比了种种优缺点之后决定还是选择wordpress 。不过还是对比出来一点东西的,个人倾向于hugo。.ejs
、有些主题用了.pug
。jade
文件——一种通过缩进的方式来编写代码的过程、可以和html相互转换。但是不巧的是,我那套主题把pug代码文本放到那种html转换器,并不能很好地转为html代码、直接修改这些文件又废眼睛(像在改一团乱码)。这种糟糕的体验很容易会使一个懒人放弃,于是我拿着一堆md文件正式投奔hugo的怀抱。Chocolatey (Windows)
,步骤如下:管理员身份
打开windows中的Windows PowerShell
(命令提示符)。(windows中搜索powershell,右键“用管理员身份运行”)Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install hugo -confirm
cmd
,例如: C:/Users/用户名/
。(路径随意,按照个人喜好决定)cmd
中,复制下方代码,然后执行(quickstart可以替换为自己的网站名,英文字母)hugo new site quickstart
C:/Users/用户名/
中创建一个名为"quickstart"的文件夹。打开这个文件夹会发现一些熟悉的目录,比方说theme
目录里面放的是主题、content
里面放的就是markdown文件等等。cd /d C:/Users/用户名/quickstart
先网上搜索git,安装一下(都选择默认选项)。然后在老地方CMD中输入:git initgit submodule add https://github.com/reuixiy/hugo-theme-meme.git themes/meme
config.toml
文件,即将这个链接的所有内容复制粘贴到 C:/Users/用户名/quickstart
文件夹下的config.toml
文件中。(怎么打开奇怪后缀名的文件?推荐使用notepad++或者visual studio code)config.toml
文件。对于MemE
主题,该文件的配置说明极其详细,按照文件中说明修改即可。cd /d C:/Users/用户名/quickstart
hugo new posts/my-first-post.md
content/posts
里找到刚才新建的markdown文件,尽情写作吧。(什么是markdown?语法是什么?)在文章的开头(被称为Front Matter
,用于文章生成的一些控制)会自动生成下列部分字段,这里可以根据自己需要修改为:---title: "My First Post" #文章标题description: 文章的描述信息keywords: - post - blogdate: 2019-03-26T08:47:11+01:00 #文章建立时间lastmod: 2019-03-26T08:47:11+01:00 #文章最近修改draft: true #是否为草稿,false则不是草稿、会发布slug: my-first-post #文章别名,用来做永久链接,下方会详细说明tag: #文章的标签 - 第一个tag - 第二个tag - 第n个tagcategories: #文章的目录 - 第一个category - 第二个category - 第n个category---
content
文件夹下。20200126-hugo_changes_urls_of_images.py
的文件。https://hxd.red/wp-contents/uploads/2019/10/10.jpg
,更改后变为 /uploads/2019/10/10.jpg
。data = re.sub('https://hxd.red/wp-contents', '', data) # 修改此处代码,即将'https://hxd.red/wp-contents'替换为空。if __name__ == '__main__': top = r'C:/Users/用户名/quickstart/content/posts' # 修改此处,更变为你的blog文件夹 modify_md_content(top)
hugo server
启动本地服务器(使用浏览器打开网址http://localhost:1313/
即可预览),加上 -D
可以渲染 draft。hugo
生成站点静态文件,生成的静态文件保存在public
文件夹中。宝塔面板
(更方便管理)、环境;解析域名;绑定域名等操作可以查看这篇文章:网站又搬迁啦:顺便说一说使用腾讯云服务器搭建博客和wordpress备份迁移。下方的两条方法均以已安装宝塔面板、已在面板中添加完网站为前提。public
文件夹中的所有文件打包,这里推荐使用tar.gz
格式进行打包。之后可以通过宝塔面板或者ftp传至服务器,然后解压即可。(缺点:传输速度慢、速度慢、速度慢;但是每次可以不将uploads
文件夹打包,图片单独传。)https://github.com/0sheldonhuang0/hxdred_blog.git
。yum install git
/www/wwwroot/<你设置的网站名称或文件夹>
:cd /www/wwwroot/<你设置的网站名称或文件夹>
git clone https://github.com/0sheldonhuang0/hxdred_blog.git #克隆,首次使用git pull https://github.com/0sheldonhuang0/hxdred_blog.git #更新
网站目录
和运行目录
,最终的运行目录即为public
文件夹。config.toml
中设置(使用MemE主题的话)。此外,还可以在文章内使用下方代码进行强行分割。<!--more-->
config.toml
文件中增加(部分内容已经有了,使用MemE
主题的情况下):# URL 结构[permalinks] posts = "/:year/:month/:day/:slug/" # 增加此处 年/月/日/文章别名,保持和wordpress默认的一致 categories = "/categories/:slug/" tags = "/tags/:slug/"
Front Matter
中加入:title: 微信小程序「法语记忆:学背单词动词变位」2019总结slug: conj-helper-2019 #文章别名,用来做永久链接
举个例子:链接就会从https://hxd.red/posts/微信小程序「法语记忆:学背单词动词变位」2019总结
变为https://hxd.red/2020/01/16/conj-helper-2019/
,使得其与搜索引擎中之前收录的链接一致,不会跳成404。content/posts
下方,而要新建页面则直接在content
文件夹下创建对应的文件夹,比如新建文件夹about
。在新的文件夹下创建文件index.md
,页面的Front Matter
类似于文章。创建完成之后可以直接通过https://hxd.red/about
进行访问。fonts.googleapis.com
上找字体,我ping了一下谷歌字体在国内似乎可以正常访问,所以选择心仪的字体,复制类似代码如下:<link href="https://fonts.googleapis.com/css?family=Noto+Serif+SC&display=swap" rel="stylesheet">
themes/主题名/layouts/partials/header.html
文件中的</header>
标签前加入上方代码。themes/主题名/assets/scss/_predefined.scss
(根据具体主题进行变化)中加上刚才的字体名称。字体名称越靠前,浏览器就会优先选用:// Fonts$fonts: "Trebuchet MS", Verdana; //原来$fonts: "Noto Serif SC", "Trebuchet MS", Verdana; //新加入字体,放在最前面
themes/主题名/layouts/partials/header.html
文件中的</header>
标签前加入下面一行代码(这里以百度统计为例,谷歌统计类似):<script>var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?你的专属后缀"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})();</script>
MathJax
来进行渲染,和之前wordpress上使用的是一样的,wordpress上使用短代码来进行控制。这里,只需要在公式的两端加上$$
符号即可。行间显示:$$ f(x) = /sin(x) $$换行显示:$$f(x) = /sin(x) $$
themes/主题名/layouts/partials/header.html
文件中的</header>
标签前加入下面一行代码:<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_SVG"></script>
参考资料在这里config.toml
中加上:[params] toc = true
layouts/partials
这个目录下新建文件toc.html
。该文件的参考示例如下:<!-- toc.html --><!-- ignore empty links with + -->{{ $headers := findRE "<h[1-4].*?>(.|/n])+?</h[1-4]>" .Content }}<!-- at least one header to link to -->{{ if ge (len $headers) 1 }}{{ $h1_n := len (findRE "(.|/n])+?" .Content) }}{{ $re := (cond (eq $h1_n 0) "<h[2-4]" "<h[1-4]") }}{{ $renum := (cond (eq $h1_n 0) "[2-4]" "[1-4]") }}<!--Scrollspy--><div class="toc"> <div class="page-header"><strong>- CATALOG -</strong></div> <div id="page-scrollspy" class="toc-nav"> {{ range $headers }} {{ $header := . }} {{ range first 1 (findRE $re $header 1) }} {{ range findRE $renum . 1 }} {{ $next_heading := (cond (eq $h1_n 0) (sub (int .) 1 ) (int . ) ) }} {{ range seq $next_heading }} <ul class="nav"> {{end}} {{ $anchorId := (replaceRE ".* id=/"(.*?)/".*" "$1" $header ) }} <li class="nav-item"> <a class="nav-link text-left" href="#{{ $anchorId }}"> {{ $header | plainify | htmlUnescape }} </a> </li> <!-- close list --> {{ range seq $next_heading }} </ul> {{ end }} {{ end }} {{ end }} {{ end }} </div></div><!--Scrollspy-->{{ end }}
themes/主题名/assets/scss
文件夹下方增加样式。themes/主题名/layouts/posts/single.html
中的contents
标签下插入下方代码:{{ if .Site.Params.toc | default false }}{{ partial "toc" . }}{{ end }}
参考资料在这里关键词:成器,静态,使用