diff --git a/.changeset/quiet-teachers-knock.md b/.changeset/quiet-teachers-knock.md index 9d4b6fae..5bec232a 100644 --- a/.changeset/quiet-teachers-knock.md +++ b/.changeset/quiet-teachers-knock.md @@ -3,3 +3,6 @@ --- Bumb GhostCMS API, No user facing breaking changes. + +NEW: +- You can now set a `route: "blog"` in your `astro.config.mjs` to change the default `/` to your blog/posts \ No newline at end of file diff --git a/packages/starlight-ghostcms/index.ts b/packages/starlight-ghostcms/index.ts index ff69284b..8e1238dd 100644 --- a/packages/starlight-ghostcms/index.ts +++ b/packages/starlight-ghostcms/index.ts @@ -78,11 +78,16 @@ export default function starlightGhostCMS( }); }; - makeRoute("blog", "index.astro"); - makeRoute("blog/[slug]", "[slug].astro"); - makeRoute("blog/about", "about.astro"); - makeRoute("blog/authors", "authors.astro"); - makeRoute("rss.xml", "rss.xml.ts"); + makeRoute(`${config.route}`, + "index.astro"); + makeRoute(`${config.route}/[slug]`, + "[slug].astro"); + makeRoute(`${config.route}/about`, + "about.astro"); + makeRoute(`${config.route}/authors`, + "authors.astro"); + makeRoute("rss.xml", + "rss.xml.ts"); }, }, diff --git a/packages/starlight-ghostcms/src/overrides/MarkdownContent.astro b/packages/starlight-ghostcms/src/overrides/MarkdownContent.astro index 80c0151b..b9df9e05 100644 --- a/packages/starlight-ghostcms/src/overrides/MarkdownContent.astro +++ b/packages/starlight-ghostcms/src/overrides/MarkdownContent.astro @@ -1,22 +1,27 @@ --- import StarlightMarkdownContent from '@astrojs/starlight/components/MarkdownContent.astro' import type { Props } from '@astrojs/starlight/props' - +import config from 'virtual:starlight-ghostcms/config' import { isAnyBlogPostPage } from '../utils/page' import Metadata from '../components/Metadata.astro' import type { Post } from '../schemas/posts' +export function checkpath(path: string){ + return path.split('/').includes(config.route) ? true : false +} + +const isBlog = checkpath(Astro.url.pathname) const isBlogPost = isAnyBlogPostPage(Astro.props.slug) let blogEntry: Post | undefined = undefined --- - {isBlogPost && blogEntry ? : null} + {isBlog && blogEntry ? : null} { - isBlogPost && blogEntry ? ( + isBlog && blogEntry ? ( ) : null diff --git a/packages/starlight-ghostcms/src/overrides/Sidebar.astro b/packages/starlight-ghostcms/src/overrides/Sidebar.astro index ffc8f358..885426c2 100644 --- a/packages/starlight-ghostcms/src/overrides/Sidebar.astro +++ b/packages/starlight-ghostcms/src/overrides/Sidebar.astro @@ -17,19 +17,17 @@ export async function getBlogPageEntries(){ } export function checkpath(path: string){ - if ( path.slice(0, 5) === "/blog" ){ - return true - } else { return false } + return path.split('/').includes(config.route) ? true : false } export function isAbout(path: string){ - if ( path === "/blog/about" ){ + if ( path === `/${config.route}/about` ){ return true } else { return false } } export function isAuthors(path: string){ - if ( path === "/blog/authors" ){ + if ( path === `/${config.route}/authors` ){ return true } else { return false } } @@ -38,7 +36,7 @@ const recentEntries = isBlog ? await getRecentBlogEntries() : [] const aboutPage = await getSluggedPage("about"); const AboutEntry:SidebarEntry = { attrs: {}, badge: undefined, - href: '/blog/about', + href: `/${config.route}/about`, isCurrent: isAbout(Astro.url.pathname), type: 'link', label: aboutPage?.post?.title @@ -55,7 +53,7 @@ const blogSidebar: Props['sidebar'] = isBlog { attrs: {}, badge: undefined, - href: '/blog/authors', + href: `/${config.route}/authors`, isCurrent: isAuthors(Astro.url.pathname), label: 'Our Authors', type: 'link', @@ -63,7 +61,7 @@ const blogSidebar: Props['sidebar'] = isBlog { attrs: {}, badge: undefined, - href: '/blog', + href: `/${config.route}`, isCurrent: isBlogRoot(Astro.props.slug), label: 'All posts', type: 'link', @@ -74,8 +72,8 @@ const blogSidebar: Props['sidebar'] = isBlog entries: recentEntries.map((blogEntry) => ({ attrs: {}, badge: blogEntry.featured?({text: "⭐", variant: "note"}):undefined, - href: `/blog/${blogEntry.slug}`, - isCurrent: isBlogPostPage(Astro.props.slug, `blog/${blogEntry.slug}`), + href: `/${config.route}/${blogEntry.slug}`, + isCurrent: isBlogPostPage(Astro.props.slug, `${config.route}/${blogEntry.slug}`), label: blogEntry.title, type: 'link', })), @@ -89,7 +87,7 @@ const blogSidebar: Props['sidebar'] = isBlog { !isBlog && (
- Blog + Blog
) } diff --git a/packages/starlight-ghostcms/src/overrides/SiteTitle.astro b/packages/starlight-ghostcms/src/overrides/SiteTitle.astro index 328b4874..5093fd36 100644 --- a/packages/starlight-ghostcms/src/overrides/SiteTitle.astro +++ b/packages/starlight-ghostcms/src/overrides/SiteTitle.astro @@ -1,11 +1,12 @@ --- import type { Props } from "@astrojs/starlight/props"; import AstrolightSiteTitle from "@astrojs/starlight/components/SiteTitle.astro"; +import config from 'virtual:starlight-ghostcms/config' ---