diff --git a/src/components/EditPost.astro b/src/components/EditPost.astro
index 8bdbeee..9ed22b1 100644
--- a/src/components/EditPost.astro
+++ b/src/components/EditPost.astro
@@ -4,21 +4,16 @@ import IconEdit from "@/assets/icons/IconEdit.svg";
import { SITE } from "@/config";
export interface Props {
- editPost?: CollectionEntry<"blog">["data"]["editPost"];
- postId?: CollectionEntry<"blog">["id"];
+ hideEditPost?: CollectionEntry<"blog">["data"]["hideEditPost"];
class?: string;
+ post: CollectionEntry<"blog">;
}
-const { editPost, postId, class: className = "" } = Astro.props;
+const { hideEditPost, post, class: className = "" } = Astro.props;
-let editPostUrl = editPost?.url ?? SITE?.editPost?.url ?? "";
-const showEditPost = !editPost?.disabled && editPostUrl.length > 0;
-const appendFilePath =
- editPost?.appendFilePath ?? SITE?.editPost?.appendFilePath ?? false;
-if (appendFilePath && postId) {
- editPostUrl += `/${postId}`;
-}
-const editPostText = editPost?.text ?? SITE?.editPost?.text ?? "Edit";
+const href = `${SITE.editPost.url}${post.filePath}`;
+const showEditPost =
+ SITE.editPost.enabled && !hideEditPost && href.trim() !== "";
---
{
@@ -29,12 +24,14 @@ const editPostText = editPost?.text ?? SITE?.editPost?.text ?? "Edit";
- {editPostText}
+
+ {SITE.editPost.text}
+
)
diff --git a/src/config.ts b/src/config.ts
index 9c86a05..001d7de 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -12,9 +12,9 @@ export const SITE = {
showArchives: true,
showBackButton: true, // show back button in post detail
editPost: {
- url: "https://github.com/satnaing/astro-paper/edit/main/src/data/blog",
+ enabled: true,
text: "Suggest Changes",
- appendFilePath: true,
+ url: "https://github.com/satnaing/astro-paper/edit/main/",
},
dynamicOgImage: true,
} as const;
diff --git a/src/content.config.ts b/src/content.config.ts
index d5ebadc..54f563e 100644
--- a/src/content.config.ts
+++ b/src/content.config.ts
@@ -18,14 +18,7 @@ const blog = defineCollection({
ogImage: image().or(z.string()).optional(),
description: z.string(),
canonicalURL: z.string().optional(),
- editPost: z
- .object({
- disabled: z.boolean().optional(),
- url: z.string().optional(),
- text: z.string().optional(),
- appendFilePath: z.boolean().optional(),
- })
- .optional(),
+ hideEditPost: z.boolean().optional(),
}),
});
diff --git a/src/data/blog/adding-new-post.md b/src/data/blog/adding-new-post.md
index 0688973..ae414ec 100644
--- a/src/data/blog/adding-new-post.md
+++ b/src/data/blog/adding-new-post.md
@@ -1,7 +1,7 @@
---
author: Sat Naing
pubDatetime: 2022-09-23T15:22:00Z
-modDatetime: 2025-03-17T17:41:19.776Z
+modDatetime: 2025-03-20T03:22:19.075Z
title: Adding new posts in AstroPaper theme
slug: adding-new-posts-in-astropaper-theme
featured: true
@@ -71,6 +71,7 @@ Here is the list of frontmatter property for each post.
| **_tags_** | Related keywords for this post. Written in array yaml format. | default = others |
| **_ogImage_** | OG image of the post. Useful for social media sharing and SEO. This can be a remote URL or an image path relative to current folder. | default = `SITE.ogImage` or generated OG image |
| **_canonicalURL_** | Canonical URL (absolute), in case the article already exists on other source. | default = `Astro.site` + `Astro.url.pathname` |
+| **_hideEditPost_** | Hide editPost button under blog title. This applies only to the current blog post. | default = false |
> Tip! You can get ISO 8601 datetime by running `new Date().toISOString()` in the console. Make sure you remove quotes though.
diff --git a/src/data/blog/how-to-configure-astropaper-theme.md b/src/data/blog/how-to-configure-astropaper-theme.md
index 1681f65..e32af53 100644
--- a/src/data/blog/how-to-configure-astropaper-theme.md
+++ b/src/data/blog/how-to-configure-astropaper-theme.md
@@ -1,7 +1,7 @@
---
author: Sat Naing
pubDatetime: 2022-09-23T04:58:53Z
-modDatetime: 2025-03-12T13:39:39.057Z
+modDatetime: 2025-03-20T03:15:57.792Z
title: How to configure AstroPaper theme
slug: how-to-configure-astropaper-theme
featured: true
@@ -38,9 +38,9 @@ export const SITE = {
showArchives: true,
showBackButton: true, // show back button in post detail
editPost: {
- url: "https://github.com/satnaing/astro-paper/edit/main/src/content/blog",
+ enabled: true,
text: "Suggest Changes",
- appendFilePath: true,
+ url: "https://github.com/satnaing/astro-paper/edit/main/",
},
dynamicOgImage: true, // enable automatic dynamic og-image generation
} as const;
@@ -62,7 +62,7 @@ Here are SITE configuration options
| `scheduledPostMargin` | In Production mode, posts with a future `pubDatetime` will not be visible. However, if a post's `pubDatetime` is within the next 15 minutes, it will be visible. You can set `scheduledPostMargin` if you don't like the default 15 minutes margin. |
| `showArchives` | Determines whether to display the `Archives` menu (positioned between the `About` and `Search` menus) and its corresponding page on the site. This option is set to `true` by default. |
| `showBackButton` | Determines whether to display the `Go back` button in each blog post. |
-| `editPost` | This option allows users to suggest changes to a blog post by providing an edit link under blog post titles. This feature can be disabled by removing it from the `SITE` config. You can also set `appendFilePath` to `true` to automatically append the file path of the post to the url, directing users to the specific post they wish to edit. |
+| `editPost` | This option allows users to suggest changes to a blog post by providing an edit link under blog post titles. This feature can be disabled by setting `SITE.editPost.enabled` to `false`. |
| `dynamicOgImage` | This option controls whether to [generate dynamic og-image](https://astro-paper.pages.dev/posts/dynamic-og-image-generation-in-astropaper-blog-posts/) if no `ogImage` is specified in the blog post frontmatter. If you have many blog posts, you might want to disable this feature. See the [trade-off](https://astro-paper.pages.dev/posts/dynamic-og-image-generation-in-astropaper-blog-posts/#trade-off) for more details. |
## Configuring locale
diff --git a/src/layouts/PostDetails.astro b/src/layouts/PostDetails.astro
index da27ea6..0b281b8 100644
--- a/src/layouts/PostDetails.astro
+++ b/src/layouts/PostDetails.astro
@@ -30,7 +30,7 @@ const {
pubDatetime,
modDatetime,
tags,
- editPost,
+ hideEditPost,
} = post.data;
const { Content } = await render(post);
@@ -103,7 +103,7 @@ const nextPost =
size="lg"
class="my-2"
/>
-
+
@@ -111,7 +111,7 @@ const nextPost =
-
+