Posts and types.
Posts are the content on a FleekSite site: the articles, products, pages, events and more that your templates present. Every post carries a numeric type that decides what it is and which layout renders it. This page lists the types and shows how a post reaches your Liquid.
It helps to hold two ideas apart. Templates are theme code, the Liquid that decides how a page looks. Posts are content, the records that code presents. A product, an article and an "about" page are all posts; the product grid and the article layout that display them are templates.
Content, not code
A post is a record with a title, a body, a permalink and a set of related pieces such as its author, media and tags. What makes posts more than a flat list is the type: a number that classifies the record. The type decides three things at once, the layout the pipeline wraps the post in, the collection alias you read it by, and the name it is also exposed under in the context. All three draw on one list of type names, set out in full on the post type reference.
The twenty content types
These are the content types a site can hold. The number is stored on the post as its type; the name is how the platform refers to it.
| Type | Name | Type | Name |
|---|---|---|---|
| 2 | blog | 12 | collection |
| 3 | product | 13 | category |
| 4 | landing | 14 | shipping_option |
| 5 | picture | 15 | evaluation |
| 6 | audio | 16 | application |
| 7 | video | 17 | job |
| 8 | page | 18 | question |
| 9 | testimonial | 19 | service |
| 10 | location | 20 | course |
| 11 | event | 21 | class |
The post type reference gives the same list with the collection alias and layout permalink for each type.
A post in the render context
When a post is the page being rendered, the pipeline prepares the record and puts it into your Liquid in four forms at once, so whichever you reach for resolves the same data:
- As
page, the page being rendered.{{ page.title }}. - As
post, the same record under a content-oriented name.{{ post.title }}. - Merged at the root, so every field is available with no prefix where the name is free.
{{ title }},{{ body }},{{ teaser }}. - Under its type name, so a product (type 3) is also
{{ product }}and an article (type 2) is also{{ blog }}.
Preparing the record does more than snake-case its columns. The pipeline attaches the related pieces a theme expects and normalises a few fields:
author, resolved from the post's user relation.media, the post's images, video and audio as a list, andprimary_media, the one chosen to lead.variants,tags,dataandmeta, always present (an empty list or object when the post has none).priceas a string with two decimal places; a value below1.00is floored to0.00.permalinkcleaned to begin with a slash, pluscomments,previous_postandnext_post.
{% comment %} On a product page (type 3) the post is the page, and also {{ product }} {% endcomment %}
class="product">
class="name">{{ title }}
>
class="price">{{ site.currency }} {{ price }}
>
{% if primary_media %}
src="{{ primary_media.url }}" alt="{{ title }}">
{% endif %}
class="gallery">
{% for image in media %}
src="{{ image.url }}" alt="{{ title }}">
{% endfor %}
>
>Every field the record carries is documented on the objects page. To read posts other than the current page, use the {% collection %} tag; see the collection tag.
System types
Above the twenty content types sit two internal ones, 101 (DOMAIN) and 102 (SITE_CONFIGURATION). They are platform records, not content, and they are kept out of your way: {% collection posts %} filters to types below 100 by default, so a plain listing never surfaces them. You can iterate posts freely without leaking a system row. The post type reference notes them again alongside the content types.