Migrate to Netlify Today

Netlify announces the next evolution of Gatsby Cloud. Learn more

ContactSign Up
Community Plugin
View plugin on GitHub

🔥 Whats new in this fork

This fork allowes us set defaults value for any field which comes from statamic api as null. It also adds Option to pass collection query params for sorting, filtering etc.

You have option to set default values globally or collection based

/*
* Any query parameter you want to pass globally like 'sort=-title&filter[featured]=true'
* ref: https://statamic.dev/rest-api#filtering
*/
globalQueryParams: 'sort=-title'

/*
* Default key value pair for null values.
* It will be merged with default value if defined on collections level
*/
globalDefaultValues: { 
  avatar: {id: "", permalink: ""}
}

collections: [
      { 
        handle: 'docs', 
        defaultValues: { 
          video: "",
          content: "",
          avatar: {
            id: "",
            permalink: ""
          }
        },
        queryParams: "sort=-title" // optional
      }
      ,
      'fieldtypes',
      'knowledge-base',
      'modifiers',
      'tags',
      'variables',
    ],

Gatsby Source Statamic

A Gatsby source plugin for Statamic 3 which will allow you to pull data from Statamic’s Content API into your Gatsby site.

Install

  npm i gatsby-source-statamic -S

How to use

Sample Config

// In your gatsby-config.js
plugins: [
{
  resolve: `gatsby-source-statamic`,
  options: {
    /*
    * The rest api route prefix that your Statamic site is using.
    * If not set, it uses the default of 'api'
    *
    * https://statamic.dev/rest-api#customizing-the-api-url
    */
    restApiRoutePrefix: 'api',
    /*
     * The base URL of the Statamic site without the trailing slash. This is required.
     * Example : 'http://statamic-docs.test'
     */
    baseUrl: `http://statamic-docs.test`,
    /*
     * Custom URL's to make use of Statamic's built in filtering, sorting, pagination, etc.
     * The key is used as the name for the node in GraphQl
     *
     * https://statamic.dev/rest-api#filtering
     * https://statamic.dev/rest-api#sorting
     * https://statamic.dev/rest-api#selecting-fields
     * https://statamic.dev/rest-api#pagination
     */
    customUrls: {
      fieldtypesTitlesSortedReverse:
        'http://statamic-docs.test/api/collections/fieldtypes/entries?sort=-title',
    },
    /*
    * Statamic Collections
    *
    * https://statamic.dev/rest-api#entries
    */
    collections: [
      'docs',
      'fieldtypes',
      'knowledge-base',
      'modifiers',
      'tags',
      'variables',
    ],
    /*
    * Statamic Taxonomies
    *
    * https://statamic.dev/rest-api#taxonomy-terms
    */
    taxonomies: ['tags', 'types'],
    /*
    * If true, adds Statamic Globals
    *
    * https://statamic.dev/rest-api#globals
    */
    globals: true,
    /*
    * If true, adds Statamic Users
    *
    * https://statamic.dev/rest-api#users
    */
    users: true,
    /*
    * Statamic Assets
    *
    * https://statamic.dev/rest-api#assets
    */
    assets: ['main'],
  },
},

Config options

Key Value Required
apiUrl String: the API URL Yes
baseUrl String: the base URL of your Statamic site Yes
customUrls Object: Allows you to add custom URL’s to take advantage of Statamtic’s filtering, sorting, etc. No
collections Array[String]: names of your Statamic Collections No
taxonomies Array[String]: names of your Statamic Taxonomies No
globals Boolean: if true, adds Statamic Globals No
users Boolean: if true, adds Statamic Users No
assets Array[String]: names of your Statamic Assets No

How to query

Get all of the titles from the ‘docs’ collection sorted in ASC order

query MyQuery {
  allCollectionDocs(sort: {fields: [title], order: ASC}) {
    edges {
      node {
        title
      }
    }
  }
}

GraphQL Naming

The naming conventions for various Statamic resources within GraphQL are as follows (using the example config above):

Statamic Resource GraphQL Name
customURLS the key of the customURLS object: ie allFieldtypesTitlesSortedReverse
collections allCollectionDocs, allCollectionKnowledgeBase, etc.
taxonomies allTaxonomyTags, allTaxonomyTypes
globals allGlobals
users allUsers
assets allAssetsMain
© 2023 Gatsby, Inc.