You need to enable JavaScript to run this app. Mkdocs如何获取页面切换时的当前访问URL以实现分部门RSS生成
优惠活动
大模型
产品
解决方案
定价
更多

Mkdocs如何获取页面切换时的当前访问URL以实现分部门RSS生成

Mkdocs 页面切换实时获取当前URL及分部门生成RSS方案

方案1:前端JavaScript动态获取(最便捷)

Mkdocs默认生成单页应用形式的静态站点,可通过注入自定义JS直接在客户端监听路由变化获取实时URL,无需修改后端构建逻辑:

  1. 在你的项目目录下新建docs/js/custom.js文件,写入如下代码:
// 获取当前页面完整URL
function fetchCurrentUrl() {
  return window.location.href
}

// 首次页面加载获取URL
console.log('当前访问URL:', fetchCurrentUrl())

// 监听路由切换事件,页面跳转时实时获取新URL
window.addEventListener('popstate', () => {
  console.log('切换后URL:', fetchCurrentUrl())
})

// 若使用Material for Mkdocs主题,可使用官方提供的路由监听钩子,兼容性更好
if (typeof document$ !== 'undefined') {
  document$.subscribe(() => {
    console.log('Material主题页面切换后URL:', fetchCurrentUrl())
  })
}
  1. 在mkdocs.yml配置文件中引入该自定义JS:
extra_javascript:
  - js/custom.js

方案2:构建阶段注入元数据(更稳定)

如果需要匹配对应部门的RSS订阅源,可提前在构建阶段将部门标识、RSS地址注入到页面属性中,前端直接读取即可,无需解析URL路径:

  1. 每个部门目录下的所有md文件头部添加Front Matter元数据,以开发部为例:
---
department: developers
rss_url: /feed/developers.xml
---
  1. 自定义Mkdocs插件或者修改主题模板,将元数据注入到页面DOM属性中,比如在主题的base.html模板中添加:
<body data-department="{{ page.meta.department | default('') }}" data-rss-url="{{ page.meta.rss_url | default('') }}">
  1. 前端可直接读取属性获取对应信息:
const currentDept = document.body.dataset.department
const currentRss = document.body.dataset.rssUrl

方案3:直接配置分部门RSS源(适配你的需求)

你需要的分部门独立RSS源可直接通过RSS插件批量生成,不需要依赖实时URL获取:
安装mkdocs-rss-plugin后,在mkdocs.yml中按目录匹配配置多个feed:

plugins:
  - rss:
      feeds:
        - path: feed/developers.xml
          match_path: ^/developers/
          title: 开发部文档更新通知
        - path: feed/marketing.xml
          match_path: ^/marketing/
          title: 市场部文档更新通知
        - path: feed/hr.xml
          match_path: ^/hr/
          title: 人事部文档更新通知

构建后会自动生成三个独立的RSS文件,直接在对应部门的页面固定展示订阅链接即可。

内容的提问来源于stack exchange,提问作者Kavi Harjani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 05:21:04