Mkdocs如何获取页面切换时的当前访问URL以实现分部门RSS生成
Mkdocs 页面切换实时获取当前URL及分部门生成RSS方案
方案1:前端JavaScript动态获取(最便捷)
Mkdocs默认生成单页应用形式的静态站点,可通过注入自定义JS直接在客户端监听路由变化获取实时URL,无需修改后端构建逻辑:
- 在你的项目目录下新建
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()) }) }
- 在
mkdocs.yml配置文件中引入该自定义JS:
extra_javascript: - js/custom.js
方案2:构建阶段注入元数据(更稳定)
如果需要匹配对应部门的RSS订阅源,可提前在构建阶段将部门标识、RSS地址注入到页面属性中,前端直接读取即可,无需解析URL路径:
- 每个部门目录下的所有md文件头部添加Front Matter元数据,以开发部为例:
--- department: developers rss_url: /feed/developers.xml ---
- 自定义Mkdocs插件或者修改主题模板,将元数据注入到页面DOM属性中,比如在主题的base.html模板中添加:
<body data-department="{{ page.meta.department | default('') }}" data-rss-url="{{ page.meta.rss_url | default('') }}">
- 前端可直接读取属性获取对应信息:
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
相关产品推荐
相关产品推荐

