Content types
Your own kinds of content, such as size charts or ingredients, shown by your theme.
In the admin Content › Content types
Open Content › Content types. A content type is a kind of content of your own with the fields it needs: a size chart with its table, ingredients with their origin, a designer with a photo and a bio. Each type has entries, and your theme shows them where you place them. The list shows each type with its handle, how many fields it has, how many entries (and how many of them are hidden), and when an entry was last added or changed.
Owners, admins and designers add and change content; everyone else can look.
Add a content type
Choose Add content type, then:
- Name: such as “Size chart”. The Handle is made from it (
size-chart): your theme uses it, so it stays once saved. - Fields: each with a Name, a Key (made from the name; themes use it) and a Kind: text on one line or several, rich text, a number, yes or no, a link, a colour, a date, a date and time, an amount of money, a rating, a choice, an image, a video, or a product or collection of your store. Tick Required for a field every entry must fill in. Up to 30 fields.
- A list of values: tick it for a field that holds several values in order, such as opening hours, a gallery of photos or the products in a look. Every kind but rich text and yes or no can be a list, of up to 50 values. Choose it when you add the field: once the type is saved, a field keeps one value or a list, as it keeps its key, because your theme reads it one way or the other. For the other, add a new field.
- Names each entry: a one-line text field that holds one value; its value names entries in lists and is the title of an entry’s page. If you tick A list of values on that field, give it another kind or remove it, the next such field names entries instead, or the entry’s handle when there is none.
Changing a saved field’s kind or its choices is refused while any entry holds a value that does not fit the new kind (the message says how many entries and which fields): change or clear those values first, or add a new field. Values that fit are kept in the new kind, such as “250” becoming the number 250. Changing a field’s kind to Rich text later cleans what your entries hold in it, in every language, as saving each entry would: anything that could run in a page goes, and only pictures from your own files stay. A type saved before lists had these rules keeps what it has: you can still rename it and add fields.
Entries
Open a type to see its entries, the most recently changed first, each with when it changed and whether it is published. Search entries finds one by its name or handle, and Sort by also offers Name A–Z and As in your theme, the order your theme shows them in.
Tick entries (or the box above them for every one shown) to delete them together, after you confirm. An open entry’s Duplicate copies it, hidden, under its handle with “-copy”, and opens the copy; save your changes first.
Choose Add entry. Fill in its fields; the Handle is made from the first field. Untick Published to keep an entry out of your store while you work on it. Each entry is checked against its fields: a number must be a number, a colour like #1a2b3c, a link an https address or a page of your store, and products and collections must be yours. Rich text has the same toolbar as a product’s description: paragraphs, lists, bold, links, text colour, tables and pictures from your own files, nothing that could run in a page. Up to 1000 entries a type. An entry you open is saved with the bar at the top and stays open; a new type or entry asks before you leave it unsaved.
A list field shows its values one under another. Add value adds a row; change a value where it stands; the cross removes it; drag the grip at a row’s left end to move it (or focus the grip and use the arrow keys, or tap it for Move up, Move down and the rest). Empty rows are left out when you save. A list of pictures adds one with Upload image or Choose image (a list of videos with Upload video or Choose video).
An image or video field takes a file from your computer (Upload image, kept in Content › Files) or one of your files (Choose image); there is no address to type. Your store keeps only its own files there, as it does for pictures in rich text. An entry saved earlier with a picture from another site keeps showing it, and the entry says so: upload one or choose one from your files to replace it.
In other languages
When your store has more than one language, an entry has the Language version switch at the top, as a product has. Choose a language to write the entry’s text in it: each text field (one line, several lines, rich text) and, for a type with pages, the page title and description. A field left empty shows the main language’s words. Numbers, pictures, links, lists and the other fields are the same in every language. Translate with AI fills in the languages not reviewed yet, once the entry is saved, and the Settings › Languages page counts entries with the rest of your store: see Languages. If a save fails for something only the main language shows, such as a handle another entry has, the language version says so: switch to the main language to change it.
Undo
Every change to a content type or an entry is listed in Settings › Time travel and can be undone there, its words in other languages too: a run of Translate with AI or a translations file goes back with the rest of that run or file. Undoing the deletion of a content type brings it back with its entries. See Time travel.
Pages of their own
Tick Give each entry its own page on the content type, and each published entry opens at its own address, such as /pages/stockists/sofia-shop, in your theme’s page layout, and joins your sitemap. A product or collection on the page links to it while your shopper can see it: a product that is a draft or not sold in their market, or an unpublished collection, is left out. The entry’s Search engine listing sets its page title and description. Hidden entries have no page. In another language the page opens under that language’s address, such as /bg/pages/stockists/sofia-shop, with the entry’s words in it.
In your theme
Your theme reads published entries from content, by the type’s handle and then the entry’s:
```liquid {% assign chart = content['size-charts'].tees %} <h2>{{ chart.title }}</h2> {{ chart.table }}
{% for chart in content['size-charts'] %} <a href=“#{{ chart.handle }}”>{{ chart.title }}</a> {% endfor %} ```
A product or collection field gives its handle, for all_products[chart.for_product] or collections[chart.for_collection]; a product your shopper’s market does not sell, or an unpublished collection, gives nothing.
A list field gives its values in order. Loop over it, and size says how many there are:
```liquid {% assign shop = content['stockists']['sofia-shop'] %} <ul> {% for hours in shop.opening_hours %} <li>{{ hours }}</li> {% endfor %} </ul>
{% for photo in shop.photos %} <img src=“{{ photo }}” alt=“{{ shop.title }}” loading=“lazy”> {% endfor %}
{% if shop.looks.size > 0 %} {% for handle in shop.looks %} {% assign look = all_products[handle] %} <a href=“{{ look.url }}”>{{ look.title }}</a> {% endfor %} {% endif %} ```
A list of products or collections leaves out those that would give nothing.
Entries come in your shopper’s language: each text field in it when the entry has it, otherwise in your main language, field by field. Nothing changes in the theme for that.