惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
Security @ Cisco Blogs
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
博客园 - 叶小钗
H
Heimdal Security Blog
Microsoft Security Blog
Microsoft Security Blog
Forbes - Security
Forbes - Security
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Schneier on Security
Schneier on Security
C
Cisco Blogs
美团技术团队
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
月光博客
月光博客
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
Arctic Wolf
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News

吖远zzyの博客

记录一下豆包视频去水印的研究过程,以及fallback_api加密数据qAAB开头数据的解密。 | 吖远zzyの博客 解决华为开发者工具 DevEco Studio 登录跳转 localhost:10101 端口被阻止问题 | 吖远zzyの博客 微信小程序个人资质审核血泪史:踩坑,从反复被拒到神奇过审 | 吖远zzyの博客 如何实现公众号自动回复或做一个短视频无水印解析机器人? | 吖远zzyの博客 以后在手机上用 Termux 和 GitHub Actions 更新 Hexo 博客 | 吖远zzyの博客 必备!这款万能小程序能给抖音/豆包视频图集去除水印、还有有趣的测反应、玩成语模拟工具。 自制的一些免费API接口第二弹(获取QQ昵称、头像、抖音/豆包视频去水印等...) 告别原生导航栏:微信小程序自定义导航栏完美适配方案 在安卓手机上运行OpenClaw?当然可以,用Termux折腾OpenClaw安装QQ机器人的踩坑记录... | 吖远zzyの博客 个人开发工具之抖音直播录制工具:一款功能强大的Android直播录制应用 UniApp中Canvas绘图的易错点与踩坑指南 QQ频道机器人与UniApp开发:常见踩坑点与解决方案 UniApp中Canvas绘图不显示的常见问题与解决方案 QQ频道机器人Android客户端使用指南 | 吖远zzyの博客 安卓版QQ频道机器人APP客户端插件开发指南 | 吖远zzyの博客 2024年AI编程助手深度评测:哪款最适合你? uni-app地图定位踩坑记:地图功能和定位的那些坑 uni-app文件上传踩坑记:图片处理和上传全攻略 uni-app表单验证踩坑记:这些坑我替你踩过了 uni-app开发踩坑记录:新手必看的常见问题与解决方案 uni-app安全防护指南:构建可靠的跨端应用 uni-app性能优化指南:从加载到渲染的全方位提升 uni-app动画效果实战:从基础到高级的动画实现指南 uni-app组件开发实战:从基础到进阶的最佳实践 uni-app网络请求与缓存策略:构建高效的数据层 uni-app状态管理进阶:Vuex最佳实践与性能优化 uni-app路由与页面跳转:最佳实践与踩坑指南
Hexo博客实现随机文章功能的完整教程
吖远zzy · 2025-01-01 · via 吖远zzyの博客
  1. 1. 1. 功能介绍
  2. 2. 2. 实现步骤
    1. 2.1. 2.1 创建模板文件
    2. 2.2. 2.2 创建页面文件
    3. 2.3. 2.3 添加菜单项
  3. 3. 3. 功能说明
    1. 3.1. 3.1 工作原理
    2. 3.2. 3.2 优化建议
  4. 4. 4. 常见问题
    1. 4.1. 4.1 页面闪烁
    2. 4.2. 4.2 重复访问
  5. 5. 5. 总结

Hexo博客实现随机文章功能的完整教程 0 次阅读

想要给博客增加一些趣味性?让读者可以随机浏览你的文章是个不错的选择。本文将详细介绍如何在Hexo博客中实现随机文章功能,就跟本博客的侧栏导航中的【手气】菜单一样的效果。

1. 功能介绍

随机文章功能可以让访问者随机浏览博客中的任意一篇文章,这不仅能增加博客的趣味性,还能提高文章的曝光率,让一些早期的优质文章也有机会被读者发现。

2. 实现步骤

2.1 创建模板文件

首先在主题的layout目录下创建random.ejs文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
// 获取所有文章
const posts = site.posts.data;
// 随机选择一篇文章
const randomPost = posts[Math.floor(Math.random() * posts.length)];
%>

<script>
// 立即重定向到随机文章
window.location.href = '<%- url_for(randomPost.path) %>';
</script>

<noscript>
<div style="text-align: center; padding: 20px;">
<p>请点击下方链接访问随机文章:</p>
<a href="<%- url_for(randomPost.path) %>"><%- randomPost.title %></a>
</div>
</noscript>

2.2 创建页面文件

source目录下创建random文件夹,并在其中创建index.md:

1
2
3
4
5
6
7
---
title: 随机文章
date: 2023-12-31 12:00:00
type: random
layout: random
comments: false
---

2.3 添加菜单项

在主题的_config.yml中添加菜单项:

1
2
3
4
5
menu:
random:
path: /random
text: 手气
icon: fas fa-random

3. 功能说明

3.1 工作原理

  1. 当访问者点击”随机文章”菜单时,会访问/random页面
  2. 模板会从所有文章中随机选择一篇
  3. 通过JavaScript自动跳转到选中的文章
  4. 如果浏览器禁用了JavaScript,则显示一个可点击的链接

3.2 优化建议

  1. 性能优化: 如果博客文章很多,可以考虑缓存文章列表
  2. 用户体验: 可以添加加载动画
  3. 功能扩展: 可以按分类或标签随机

4. 常见问题

4.1 页面闪烁

如果出现页面闪烁,可以添加loading效果:

1
2
3
4
5
6
7
8
9
10
11
<style>
.loading {
text-align: center;
padding: 20px;
}
.loading:after {
content: '正在随机选择文章...';
color: #666;
}
</style>
<div class="loading"></div>

4.2 重复访问

如果想避免连续访问同一篇文章,可以使用sessionStorage记录历史:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 获取历史记录
const history = JSON.parse(sessionStorage.getItem('randomHistory') || '[]');
// 过滤已访问的文章
const availablePosts = posts.filter(post => !history.includes(post.path));
// 如果所有文章都访问过,清空历史
if (availablePosts.length === 0) {
sessionStorage.removeItem('randomHistory');
availablePosts = posts;
}
// 随机选择文章
const randomPost = availablePosts[Math.floor(Math.random() * availablePosts.length)];
// 记录到历史
history.push(randomPost.path);
sessionStorage.setItem('randomHistory', JSON.stringify(history));

5. 总结

随机文章功能虽然实现简单,但能大大提升博客的趣味性和用户体验。你还可以基于这个基础功能,添加更多个性化的扩展,比如按照文章热度随机、按照阅读时间随机等。


如果觉得文章对你有帮助,欢迎点赞、评论、分享,你的支持是我继续创作的动力!