@maiertech/gatsby-theme-pages-core

A Gatsby theme to add a Page type to Gatsby sites.

Options

Option Default Description
basePath / Basepath for deployments at locations other than root.
contentPath content/pages Location of MDX files with pages. If pages use images, pages can be placed in a sub-directory as index.mdx together with its assets.
fullRelativePath false Set to true to include full path relative to contentPath in path of generated pages.
mdxOtherwiseConfigured false Set this flag true if gatsby-plugin-mdx is already configured for your site.

Frontmatter

Key Required Description
title Post title, which will be slugified.
slug Override slugified title.
description Description for SEO and previews.
images Array of images with src (relative path to image), optional title and mandatory alt text. Images can be embedded into MDX.
canonical_url Canonical URL for SEO.

Schema customization

Page interface

Field Type Description
id ID! Gatsby node GUID.
title String! From frontmatter.
description String! From frontmatter.
images [PageImage!] Images that can be embedded into a page.
body String! MDX body.
path String! Page path.
canonicalUrl String Canonical URL for SEO.

Type MdxPage implements Page. If you prefer to use a data source other than MDX files, you can write a child theme that uses the Page interface.

PageImage type

Field Type Description
src File! Relative path to image.
title String Image title.
alt String! Image alt text.

Images in pages

This theme assumes that you will use gatsby-plugin-image to render images in MDX files. Since StaticImage does not work inside MDX files, you have to declare images in the frontmatter with the images prop.

When you shadow page.js, you need to create an images array with gatsbyImageData objects and provide the images array as prop to MDXRenderer. You can then access and render these images with GatsbyImage inside MDX files. This is not ideal and it is intended as workaround until StaticImage can be used inside MDX files.

The downside of dynamic images is that fragment page-fragment.js contains a hard-wired query for dynamic images as constrained images. Therefore, you cannot modify image options and have to go with what the fragment gives you.