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 -SHow 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 |