This Blog Post model is a simple layout for building out content-rich blogs. The main section of the post contains fields with applied validations for slugs, along with relations to authors, categories, and tags, as relations.
The content field is a beefed up Structured Text field with the ability to refer other models, as well as the option to embed several blocks.
The exported JSON comes with all relations and blocks along with the post.
The Blog Post comes with "Real World" Validations in place, primarily allowing for a DRAFT/PUBLISHED workflow and the ability to save (but not publish) drafts that don't pass all validation rules so as to not disrupt an editor's workflow.
The model also has some SEO fallbacks in place, to always inherit the og:title
, og:desc
, and og:image
fields from specific fields in the model, unless overridden when editing a post.
The structure of the Schema is as follows:
This fieldset contains all the "necessary" attributes of a blog post aside from the content itself.
Using a combination of string
, asset
, and relation
fields, editors can establish the Title, Description, Featured Image, and the Slug (with validation to derive unique slugs from the title) of the post.
Additionally, there's relations to models for adding Tags, Catagories, and multiple Authors to each post - standalone models of their own to allow for reusable content best practices.
We've built it out to give editors the best possible experience that focuses on the content, with the entire post being a Structured Text Field.
The field allows for embedding relations to other models as well as blocks, both as standalone and inline.
The accepted relations are to other models such as Tags, Authors, Categories, Landing Pages, and other Blog Posts, for whenever a new record needs to refer to existing ones, encouraging the use of inline references rather than absolute URLs.
Finally, there's a Social Preview field for editors to get a quick glance of how their content would look on popular platforms like LinkedIn, Facebook, and Slack.
The fields here will default to fallbacks set in the model validations, however editors can change this based on their preferences.
This model heavily utilizes blocks in the Structured Text field to give editors a rich content experience.
The Structured Text field can accept the following blocks:
Statistic
: A simple block allowing to flex any applicable stats or callout numbers.
Video
: The ability to embed videos hosted in DatoCMS into a blog post.
CTA
: A simple callout containing a title, description, and button, utilizing the Conditional Fields plugin depending on whether the editor wants to place an internal or external URL.
Media Gallery
: The ability to build rich grids of images, videos, or other media types.
Button
: A simple button utilizing the Conditional Fields plugin depending on whether the editor wants to add an internal or external link.
FAQ
: A simple Question/Answer block made of string fields.
Social Proof
: A grid of Testimonial
blocks to build carousels of quotes.
Testimonial
: A simple quote attributed to a person, which in turn can build Social Proof
sections.
Image
: The ability to embed a single image hosted in DatoCMS.
Additionally, the following blocks can also be added inline:
Social Link
: A simple link to a social media platform.
Button
: Same as above, but within a section of content rather than as a standalone block.
Image
: The ability to add small images inline, particularly useful for icons or logos.
With the combination of fieldsets and blocks, the editors will see a clean editing UI when creating blog posts with a straightforward flow of fields 👇