MkDocs Material

Integrating Cactus Comments with the Material theme for MkDocs.

Please first complete the “Prerequisites” and “Register Your Site” sections in the quick start guide.

Add Custom Directory

If you do not have one already, you will need a custom_dir, set under theme in mkdocs.yml. This allows to extending or overriding parts of the theme.

theme:
  name: material
  custom_dir: overrides

Add main.html for overrides

In the custom_dir, create a file called main.html. This allows overriding a block, the comments block specifically in this case.

Override the content block

Set the contents of main.html to override the content block.

Make sure to change the siteName in the initComments section, and if needed, change the serverName and the defaultHomeserverUrl. See the quick start guide for more information.

{% block content %}
  {{ super() }}

<script type="text/javascript" src="https://latest.cactus.chat/cactus.js"></script>
<link rel="stylesheet" href="https://latest.cactus.chat/style.css" type="text/css">

<div id="comment-section">Loading Comments...</div>

<script>
try {
    var docCommentSectionId = document.getElementById('comments-section-id').innerHTML
} catch {
    var docCommentSectionId = "catch-all"
}
if (docCommentSectionId == null ){
    docCommentSectionId = "catch-all"
}

initComments({
  node: document.getElementById("comment-section"),
  defaultHomeserverUrl: "https://cactus.chat",
  siteName: "<YOUR-SITE-NAME>",
  commentSectionId: docCommentSectionId,
  serverName: "cactus.chat"
})
</script>

{% endblock %}

Set page identifiers

In every markdown file for your site, put a hidden paragraph that contains an unique identifier for the comments section to use. Generally, these go at the top of the markdown file, but that is not required.

Note that a commentSectionId cannot include underscores.

<p hidden id="comments-section-id">put-unique-id-for-each-page-here</p>