You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docusaurus网站中获取Front Matter集成Cusdis评论系统?

Docusaurus集成Cusdis:正确获取页面元数据

你用{props.id}读取到front matter里的introduction是正常行为——这个props就是对应页面front matter中定义的字段值。如果这不是你需要的页面标识,得根据需求调整获取方式,以下是几种常见场景的解决方案:

场景1:在MDX页面中嵌入Cusdis

将Cusdis封装成React组件,通过MDX内置钩子获取页面数据:

import React from 'react';
import { useMDXFrontmatter } from '@docusaurus/mdx-loader';
import { useLocation } from '@docusaurus/router';

export default function CusdisComment() {
  const { frontMatter } = useMDXFrontmatter();
  const location = useLocation();
  
  // 可按需选择用页面路径作为唯一标识,或保留front matter的id
  const pageId = location.pathname; 
  
  return (
    <>
      <script async defer src="https://cusdis.com/js/cusdis.es.js"></script>
      <div id="cusdis"
        data-host="https://cusdis.com"
        data-app-id="**********************************"
        data-page-id={pageId}
        data-page-url={window.location.href}
        data-page-title={frontMatter.title}
        data-theme="auto"
      ></div>
    </>
  );
}

// 在MDX页面中调用组件
<CusdisComment />

场景2:在全局布局中添加Cusdis(所有页面自动加载评论)

修改自定义布局组件,用useCurrentPage钩子获取全局页面数据:

import React from 'react';
import Layout from '@theme/Layout';
import { useCurrentPage } from '@docusaurus/theme-common';

function CustomLayout(props) {
  const currentPage = useCurrentPage();
  
  return (
    <Layout {...props}>
      {props.children}
      {/* 仅在文档页面加载评论,可按需调整判断条件 */}
      {currentPage.type === 'doc' && (
        <>
          <script async defer src="https://cusdis.com/js/cusdis.es.js"></script>
          <div id="cusdis"
            data-host="https://cusdis.com"
            data-app-id="**********************************"
            data-page-id={currentPage.path}
            data-page-url={window.location.href}
            data-page-title={currentPage.metadata.title}
            data-theme="auto"
          ></div>
        </>
      )}
    </Layout>
  );
}

export default CustomLayout;

关键说明

  • 如果需要用页面的路径/URL作为评论系统的唯一标识,优先用location.pathname或currentPage.path,避免和front matter的id混淆。
  • 如果确实要使用front matter里的id,你之前的写法本身无问题,只需确认这符合Cusdis对data-page-id的需求(通常建议用唯一且稳定的标识,比如页面路径)。

内容的提问来源于stack exchange,提问作者Bhavya Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:02:09