利用 SiteMap 随机访问站内页面

发布于 2025/08/12建站手札总字数:300阅读时长:1 分钟
文章导读摘要由 Qwen 生成

提供了一个很好的解决方案,通过使用 Hexo 的 sitemap 生成器和 JavaScript 代码来实现随机访问站内页面的功能 以下是你提供的步骤的详细解释:

ARTICLE SERIES

博客定制手记

第 6 / 14 篇
  1. 01配置说说页面
  2. 02在侧边栏中添加欢迎信息
  3. 03自定义右键菜单
  4. 04利用插件自定义页脚菜单
  5. 05博客添加AI总结
  6. 06利用 SiteMap 随机访问站内页面
  7. 07自定义导航栏
  8. 08自定义分类条
  9. 09自定义页脚(新)
  10. 10使用GitHub推送Hexo到服务器
  11. 11在侧边栏添加日历和倒计时
  12. 12自定义字体
  13. 13添加typesense搜索
  14. 14添加网站左上角菜单

注意:本文为早期 Hexo / Butterfly 魔改记录,本站现已迁移到 Astro,相关代码、路径或插件可能已经失效,仅作历史参考。

在网上查找博客美化过程时发现基本上都有“随便逛逛”的功能,于是自己也添加一个。 比较简单只有js代码,但是先要安装插件

前置条件

npm install hexo-generator-sitemap --save

在站点配置文件 _config.yaml中添加:

sitemap:
  path: 
    - sitemap.xml
    - sitemap.txt
  rel: false
  tags: true
  categories: true

添加js

在主题目录下添加·\themes\butterfly\source\js\random.js

function randomPost() {
    fetch('/sitemap.xml').then(res => res.text()).then(str => (new window.DOMParser()).parseFromString(str, "text/xml")).then(data => {
        let ls = data.querySelectorAll('url loc');
        let locationHref,locSplit;
        do {
            locationHref = ls[Math.floor(Math.random() * ls.length)].innerHTML
            locSplit = locationHref.split('/')[3] || ''
        } while (locSplit == '' || locSplit == 'tags');
        //若所有文章都如 https://…….com/posts/2022/07/…… 格式,主域名后字符是 posts,则循环条件改为:
        //while (locSplit !== 'posts');
        location.href = locationHref
    })
}

使用

使用,在菜单栏上添加

<a href="javascript:;" onclick="randomPost()" title="随机访问一篇文章">随机</a>

参考

木木木木木的博客 木木木木木 · immmmm.com

利用 SiteMap 随机访问站内页面

/posts/b5866b9e/
作者
biss
发布于
许可协议
CC BY-NC-SA 4.0
网站
订阅打赏

Comments

利用 SiteMap 随机访问站内页面

Ctrl + 右键:浏览器原生菜单