发布作者: 王小艾
百度收录: 正在检测是否收录...
作品采用: 《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 》许可协议授权
一、实现原理概述
本方案通过创建专属页面模板与JavaScript重定向机制,实现Hexo站点的文章随机跳转功能。系统将自动遍历站点文档库,依据预设条件生成动态跳转列表。
二、功能部署步骤
页面创建指南
在站点根目录执行:
hexo new page random
编辑生成文件:
路径:./source/random/index.md
内容配置:
---
title: 文章随机跳转器
layout: random
permalink: /random/
---
<!- 跳转提示内容可自定义 ->
系统正在智能选取优质内容...
模板配置说明
创建模板文件:
路径:./themes/[主题名称]/layout/random.ejs
插入核心逻辑代码:
<!-- 智能跳转系统 v2.1 (MIT Licensed) -->
<!-- 源码参考:https://furrycon.top/posts/9831e856 -->
<% const posts = site.posts.toArray(); %>
<script>
const qualifiedPosts = [
<% posts.forEach(function(post){ %>
<% if (!post.exclude_from_random) { %>
"<%= url_for(post.path) %>",
<% } %>
<% }); %>
];
(function() {
if(qualifiedPosts.length >= 1) {
const target = qualifiedPosts[Math.floor(Math.random() * qualifiedPosts.length)];
window.location.assign(target);
} else {
console.error('无可用文章');
window.location.replace("<%= url_for('/404.html') %>");
}
})();
</script>
三、文章排除机制
在需要排除的文章Front-matter中添加:
exclude_from_random: true
四、技术特性说明
动态编译机制
自动获取站点编译时生成的posts数组
实时过滤排除标记文章
安全跳转设计
采用location.assign()方法保留跳转历史
空列表时重定向至404页面
五、优化建议
内容策略
建议保留80%以上文章参与随机跳转
排除文章建议不超过总库的20%
性能说明
本方案在编译时生成静态跳转列表
客户端执行跳转逻辑,零服务器消耗
六、版本说明
当前版本v2024在原始方案基础上优化:
增强空值处理机制
改进浏览器历史记录管理
添加控制台错误日志
优化许可证声明格式
七、故障排查
若遇功能异常,检查:
主题目录是否包含random.ejs
文章路径是否包含特殊字符
浏览器是否禁用JavaScript
排除文章数量是否过多
—— 评论区 ——