Hexo+Github个人博客设置以及优化

一、博客设置

在站点目录下分别执行:

hexo new page "categories" # 新增分类 hexo new page "tags" # 新增标签 hexo new page "about" # 新增关于 

可以在对应的 index.md 中添加 comments: false 来关闭评论功能;
然后再主题配置文件 _config.yml 中打开注释:

menu: 首页: / || home 关于: /about/ || user 标签: /tags/ || tags 分类: /categories/ || th 归档: /archives/ || archive 

主题配置文件中配置脚本:

canvas_nest: //cdn.jsdelivr.net/gh/theme-next/theme-next-canvas-nest@1.0.0/canvas-nest.min.js canvas_nest_nomobile: //cdn.jsdelivr.net/gh/theme-next/theme-next-canvas-nest@1.0.0/canvas-nest-nomobile.min.js 

并启用:

canvas_nest: enable: true onmobile: true # display on mobile or not color: "0,0,255" # RGB values, use ',' to separate opacity: 0.5 # the opacity of line: 0~1 zIndex: -1 # z-index property of the background count: 99 # the number of lines 

主题配置文件 _config.yml 中编辑:
avatar: [头像路径]

修改模板 /themes/next/layout/_macro/post.swig, 搜索 rel="tag">#, 将 # 换成 <i class="fa fa-tag"></i>

(function(){ if('{{ page.password }}'){ if (prompt('请输入密码') !== '{{ page.password }}'){ alert('密码错误'); history.back(); } } })(); 

写文章时加入:

--- title: 2018 date: 2018-10-25 16:10:03 password: 123456 --- 

在博客配置文件中设置:

skip_render: README.md 
npm install hexo-symbols-count-time --save 
symbols_count_time: symbols: true time: true total_symbols: true total_time: true 
# Post wordcount display settings # Dependencies: https://github.com/theme-next/hexo-symbols-count-time symbols_count_time: separated_meta: true item_text_post: true item_text_total: false awl: 4 # Average Word Length (chars count in word). Default: 4. wpm: 275 # Words Per Minute. Default: 275. 

themes/layout/_parrials/footer.swing 中添加:

<span id="sitetime"></span> <script language=javascript> function siteTime(){ window.setTimeout("siteTime()", 1000); var seconds = 1000; var minutes = seconds * 60; var hours = minutes * 60; var days = hours * 24; var years = days * 365; var today = new Date(); var todayYear = today.getFullYear(); var todayMonth = today.getMonth()+1; var todayDate = today.getDate(); var todayHour = today.getHours(); var todayMinute = today.getMinutes(); var todaySecond = today.getSeconds(); var t1 = Date.UTC(2018,06,07,12,00,00); // 设置建立网站的时间 var t2 = Date.UTC(todayYear,todayMonth,todayDate,todayHour,todayMinute,todaySecond); var diff = t2-t1; var diffYears = Math.floor(diff/years); var diffDays = Math.floor((diff/days)-diffYears*365); var diffHours = Math.floor((diff-(diffYears*365+diffDays)*days)/hours); var diffMinutes = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours)/minutes); var diffSeconds = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours-diffMinutes*minutes)/seconds); document.getElementById("sitetime").innerHTML=" 已运行"+diffYears+" 年 "+diffDays+" 天 "+diffHours+" 小时 "+diffMinutes+" 分钟 "+diffSeconds+" 秒"; } siteTime(); </script> 

主题配置文件中设置:

# For example, you put your favicons into `hexo-site/source/images` directory. # Then need to rename & redefine them on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. favicon: #small: /images/favicon-16x16-next.png small: /images/Memento.ico medium: /images/favicon-32x32-next.png apple_touch_icon: /images/apple-touch-icon-next.png safari_pinned_tab: /images/logo.svg #android_manifest: /images/manifest.json #ms_browserconfig: /images/browserconfig.xml 

TODO: 首页 index.html 会出现异常,无法用 gulp 压缩

get_font_family(config) { custom_family = hexo-config('font.' + config + '.family') // 在这里把引号去除 return custom_family is a 'string' ? unquote(custom_family) : null } 
global: # external: true will load this font family from host. external: true family: '"Consolas", "Helvetica Neue", Helvetica, Arial' 

参考:

卸载原装的 hexo-generator-index, 并安装 hexo-generator-index-pin-top:

npm uninstall hexo-generator-index --save npm install hexo-generator-index-pin-top --save 

然后在文章中添加 top:

--- title: 2018 date: 2018-10-25 16:10:03 top: 10 --- 

top 值越大位置越靠前;
设置置顶标记, 定位 /themes/next/layout/_macro/post.swig<div class="post-meta"> 标签下:

{% if post.top %} <i class="fa fa-thumb-tack"></i> <font color=7D26CD>置顶</font> <span class="post-meta-divider">|</span> {% endif %} 
# Progress bar in the top during page loading. # Dependencies: https://github.com/theme-next/theme-next-pace pace: true # Themes list: # pace-theme-big-counter | pace-theme-bounce | pace-theme-barber-shop | pace-theme-center-atom # pace-theme-center-circle | pace-theme-center-radar | pace-theme-center-simple | pace-theme-corner-indicator # pace-theme-fill-left | pace-theme-flash | pace-theme-loading-bar | pace-theme-mac-osx | pace-theme-minimal pace_theme: pace-theme-minimal 
npm install hexo-generator-searchdb --save 

在博客配置文件中添加:

search: path: search.xml field: post format: html limit: 10000 

然后在主题配置文件中启用本地查询:

# Local search # Dependencies: https://github.com/theme-next/hexo-generator-searchdb local_search: enable: true # If auto, trigger search by changing input. # If manual, trigger search by pressing enter key or search button. trigger: auto # Show top n results per article, show all results by setting to -1 top_n_per_article: 1 # Unescape html strings to the readable one. unescape: false 

next 主题配置文件中启用:

back2top: enable: true # Back to top in sidebar. sidebar: true # Scroll percent label in b2t button. scrollpercent: true 

在主题配置文件中启用:

# Follow me on GitHub banner in right-top corner. github_banner: enable: true permalink: https://github.com/Memento1990 title: Follow me on GitHub 

TODO: Firefox 浏览器下失效

在主题配置文件中启用:

# Show Views / Visitors of the website / page with busuanzi. # Get more information on http://ibruce.info/2015/04/04/busuanzi busuanzi_count: enable: true total_visitors: true total_visitors_icon: user total_views: true total_views_icon: eye post_views: true post_views_icon: eye 

二、文章设置

在路径 \themes\next\layout\_macro 中新建 passage-end-tag.swig 文件,并添加以下内容:

<div> {% if not is_index %} <div style="text-align:center;color: #ccc;font-size:14px;">-------------本文至此结束<i class="fa fa-heartbeat"></i>感谢您的阅读-------------</div> {% endif %} </div> 

接着打开 \themes\next\layout\_macro\post.swig 文件, 在 post-body 之后, post-footer 之前添加代码(post-footer之前两个DIV):

<div> {% if not is_index %} {% include 'passage-end-tag.swig' %} {% endif %} </div> 

最后再主题配置文件中启用:

# 文章末尾添加“本文结束”标记 passage_end_tag: enabled: true 
npm install hexo-addlink --save 

在博客配置文件中进行设置:

addlink: before_text: hello # text before the post link after_text: bye # text after the post link 

在主题配置文件中启用:

# Automatically Excerpt. Not recommend. # Use <!-- more --> in the post to control excerpt accurately. auto_excerpt: enable: true length: 150 

三、优化设置

修改主题配置文件:

font: enable: true # Uri of fonts host, e.g. //fonts.googleapis.com (Default). host: //fonts.lug.ustc.edu.cn # 中科大 # //fonts.geekzu.org # 极客族 # //fonts.css.network # 捷速网络 香港 

安装 gulp 相关包:

npm install gulp -g npm install gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-imagemin gulp --save 

在 Hexo 站点根目录下新建 gulpfile.js 脚本文件, 代码:

var gulp = require('gulp'); var minifycss = require('gulp-minify-css'); var uglify = require('gulp-uglify'); var htmlmin = require('gulp-htmlmin'); var htmlclean = require('gulp-htmlclean'); var imagemin = require('gulp-imagemin'); var del = require('del'); var Hexo = require('hexo'); // 清除public文件夹 gulp.task('clean', function () { return del(['public/**/*']); }); // 利用Hexo API 来生成博客内容, 效果和在命令行运行: hexo g 一样 // generate html with 'hexo generate' var hexo = new Hexo(process.cwd(), {}); gulp.task('generate', function (cb) { hexo.init().then(function () { return hexo.call('generate', { watch: false }); }).then(function () { return hexo.exit(); }).then(function () { return cb() }).catch(function (err) { console.log(err); hexo.exit(err); return cb(err); }) }) // 压缩 public 目录 css gulp.task('minify-css', function () { return gulp.src('./public/**/*.css') .pipe(minifycss()) .pipe(gulp.dest('./public')); }); // 压缩 public 目录 html gulp.task('minify-html', function () { return gulp.src('./public/**/*.html') .pipe(htmlclean()) .pipe(htmlmin({ removeComments: true, minifyJS: true, minifyCSS: true, minifyURLs: true, }).on('error', function(e){ console.log(e); })) .pipe(gulp.dest('./public')) }); // 压缩 public/js 目录 js gulp.task('minify-js', function () { return gulp.src('./public/**/*.js') .pipe(uglify()) .pipe(gulp.dest('./public')); }); // 压缩public目录下的所有img: 这个采用默认配置 gulp.task('minify-img', function () { return gulp.src('./public/images/**/*.*') .pipe(imagemin()) .pipe(gulp.dest('./public/images')) }) // 同上,压缩图片,这里采用了: 最大化压缩效果。 gulp.task('minify-img-aggressive', function () { return gulp.src('./public/images/**/*.*') .pipe(imagemin( [imagemin.gifsicle({ 'optimizationLevel': 3 }), imagemin.jpegtran({ 'progressive': true }), imagemin.optipng({ 'optimizationLevel': 7 }), imagemin.svgo()], { 'verbose': true })) .pipe(gulp.dest('./public/images')) }) // 执行顺序: 清除public目录 → 产生原始博客内容 → 执行压缩混淆 gulp.task('build', gulp.series('clean', 'generate', gulp.parallel('minify-html', 'minify-css', 'minify-js', 'minify-img-aggressive')), function (cb) { }); gulp.task('default', gulp.series(['build'])) 

然后每次执行 gulp 命令后就会自动执行 clean, generate, [同步执行相关压缩方法]

四、其他设置

References

原文链接:https://www.cnblogs.com/memento/p/10569566.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/2323

(0)
上一篇 2022年7月30日
下一篇 2022年7月30日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml