Studio JSON examples
These are complete documents for the Studio Source editor. Choose the named document before pasting. Replacing a document removes its existing sections; merge the example objects into your current arrays when you want to keep them.
The examples use placeholder provider accounts. Replace them before publishing. See Insert a component for saving and previewing.
A homepage with live club information
Choose landing.json. This enables the managed homepage and shows an
introduction, upcoming events, current games and eligible sponsors. The live
sections use your current club records; empty sections may have nothing to show.
{
"enabled": true,
"components": [
{
"type": "cio-hero",
"version": 1,
"heading": {"en": "Welcome to our club", "fr": "Bienvenue au club"},
"body": {"en": "Ask us how to get started.", "fr": "Demandez-nous comment commencer."},
"media": null,
"actions": [{"label": {"en": "Contact us", "fr": "Nous joindre"}, "href": "/contact"}]
},
{"type": "cio-recent-events", "version": 1},
{"type": "cio-current-games", "version": 1},
{"type": "cio-sponsors", "version": 1}
]
}
A newsletter and an Instagram profile
Choose page.json to add these below every page. To target one page's body,
use that page's Markdown editor instead. Copy the Mailchimp identifiers from your
audience's signup form and use your club's public Instagram profile URL.
The visitor activates each provider before remote content loads.
{
"top": [],
"bottom": [
{
"type": "cio-mailchimp-signup",
"version": 1,
"account": "example.us1",
"userId": "0123456789abcdef0123456789abcdef",
"audienceId": "0123456789",
"emailFieldName": "EMAIL",
"nameFields": [{"name": "FNAME", "label": "First name", "required": false}],
"formId": null
},
{
"type": "cio-instagram-profile",
"version": 1,
"profileUrl": "https://www.instagram.com/example.club/"
}
]
}
A results introduction
Choose results.json. This adds presentation copy above the normal results.
The results themselves remain managed by Curling IO.
{
"top": [
{
"type": "cio-text",
"version": 1,
"heading": "Club results",
"body": "Choose a competition to see its published results."
}
],
"bottom": []
}
Rental availability on the homepage
Choose landing.json. Empty filters include every eligible rental. For a subset,
replace the arrays with your club's positive IDs in ascending order, with no
duplicates. Each array accepts up to 50 IDs. This component uses the same rental
availability as the public rentals page.
{
"enabled": true,
"components": [
{"type": "cio-rentals", "version": 1, "productIds": [], "resourceIds": []}
]
}
A menu with a group and live collections
Choose navigation.json. The id values identify entries for later edits; keep
them unique throughout the menu. Use 1 to 64 lowercase letters, digits,
underscores or hyphens. Menu order follows array order. Groups contain leaves,
not other groups. label: null uses the normal translated title.
[
{"type": "route", "id": "home", "route": "home", "label": null},
{
"type": "group",
"id": "club",
"label": {"en": "The club", "fr": "Le club"},
"children": [
{"type": "collection", "id": "pages", "collection": "pages", "label": null},
{"type": "route", "id": "contact", "route": "contact", "label": null}
]
},
{"type": "collection", "id": "news", "collection": "articles", "label": null, "recentLimit": 3},
{"type": "route", "id": "rentals", "route": "rentals", "label": null}
]
Routes accept home, contact, calendar or rentals. Collections accept
pages, articles or product_types. Only articles requires recentLimit,
from 1 to 8. A collection's optional exclude array removes selected entries:
use product type slugs such as bonspiels, or a page/article friendly URL segment
such as 3-ice-rental. Use your existing records' slugs, at most 24 unique entries.
A record leaf uses recordType (page, article, product_type or
product_results), a positive recordId, its unique id, and optional label.
An external leaf uses a complete HTTPS href and a required text label.
A menu allows at most 24 root entries, 24 leaves per group and 64 entries total,
including groups. Record links remain subject to publication and access rules.
Enable the public calendar
Choose calendar.json. Schedule display settings are managed separately in
Calendar.
{"enabled": true}
Select a platform theme
Choose layout.json. kind accepts platform or organization; slug
identifies an available theme. Use the theme picker to
choose a valid theme for your club. The default platform theme is:
{"kind": "platform", "slug": "io-default"}