From 31e0b7c6f802cfab7250b7e9dfb321b3889ef6ca Mon Sep 17 00:00:00 2001 From: David Fischer Date: Sat, 9 Nov 2024 10:44:32 +0100 Subject: [PATCH] feat(comments): conditional display via frontmatter (#1566) --- docs/features/comments.md | 11 +++++++++++ quartz/components/Comments.tsx | 9 ++++++++- quartz/plugins/transformers/frontmatter.ts | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/features/comments.md b/docs/features/comments.md index 1f11eff..4803773 100644 --- a/docs/features/comments.md +++ b/docs/features/comments.md @@ -114,3 +114,14 @@ afterBody: [ }), ], ``` + +#### Conditionally display comments + +Quartz can conditionally display the comment box based on a field `comments` in the frontmatter. By default, all pages will display comments, to disable it for a specific page, set `comments` to `false`. + +``` +--- +title: Comments disabled here! +comments: false +--- +``` diff --git a/quartz/components/Comments.tsx b/quartz/components/Comments.tsx index 44331cc..5f379a1 100644 --- a/quartz/components/Comments.tsx +++ b/quartz/components/Comments.tsx @@ -25,7 +25,14 @@ function boolToStringBool(b: boolean): string { } export default ((opts: Options) => { - const Comments: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { + const Comments: QuartzComponent = ({ displayClass, fileData, cfg }: QuartzComponentProps) => { + // check if comments should be displayed according to frontmatter + const commentsFlag: boolean = + fileData.frontmatter?.comments === true || fileData.frontmatter?.comments === "true" + if (!commentsFlag) { + return <> + } + return (
} }