When working with templates the system provides objects that you can use and will be available depending on what context you are in.
Let’s assume you are working with the product template product.liquid (in a ‘product context’), when using that template you have access to the {{ product }} object which gathers all the properties for a product, you can inspect it using {{ product | print_r}}.
Some objects are always available (but lazy loaded on access) such as collections and products. Whereas there’s also other, such as the customer object, which only exists when a customer has logged in.
These objects are made available server side when using
liquidcode but can be made available client sidejsusing thejsonfilterconst p = {{ product | json}};.
{% comment %}
We can reference a product object since we are in a product context.
{% endcomment %}
{% assign productTitle = product.title | upcase %}
{% assign onSale = false %}
{% if product.compareAtPrice > product.price %}
{% assign onSale = true %}
{% endif %}
{{productTitle}} is {% unless onSale %}not {% endunless %}on sale!
Global objects
There are global objects that can be reached from all contexts.
CMS
| Object | Description |
|---|---|
| {{ site }} | Site information |
| {{ request }} | Site visitor request object |
| {{ settings }} | All the theme settings saved in settings_data.json file |
| {{ pages }} | Lists all pages, also unpublished pages by default |
| {{ blogs }} | Lists all blogs |
| {{ authors }} | Lists all authors |
| {{ navigation }} | Navigation lists |
| {{ countries }} | List of all countries |
| {{ lang }} | Current language |
| {{ currentTags }} | Lists the current tags if used in URL query parameter |
eCommerce
| Object | Description |
|---|---|
| {{ shop }} | Shop information |
| {{ collections }} | Lists of all product collections |
| {{ products }} | List of all products |
| {{ vendors }} | Lists of all vendors |
| {{ customer }} | Logged in customer |
| {{ currency }} | Current currency |
| {{ cart }} | Cart content |
Navigation object
Link lists created under Navigation in admin will be found in the {{ navigation }} object.
Go to the documentation for the navigation object
Site object {{ site }}
You can always print the site object with {{ site | print_r }}
| Property | Description |
|---|---|
| {{ site.id }} | The unique identifier of the site |
| {{ site.name }} | Name of the site, intended mainly for internal purposes. |
| {{ site.lang }} | Default site language |
| {{ site.domain }} | The main domain |
| {{ site.theme }} | The id of the published theme |
| {{ site.contact }} | The contact point given in the site settings for the site contact |
| {{ site.createdAt }} | Date when site was created |
| {{ site.meta.h1 }} | The H1 heading for the site, given in site settings |
| {{ site.meta.title }} | The site title |
| {{ site.meta.description }} | Site description |
| {{ site.meta.keywords }} | Site keywords |
| {{ site.organisation }} | Organisation as stated in the site settings |
| {{ site.location }} | Location as stated in the site settings |
Request object {{ request }}
The request object will specify the host, origin, path, query, referer and scheme of the current request.
| Property | Description |
|---|---|
| {{ request.host }} | The domain name |
| {{ request.origin }} | Origin of the content, different from host if the site is run headless. |
| {{ request.path }} | Current path |
| {{ request.query }} | The query of the request, for example tags=CMS if a tag is chosen on a blog |
| {{ request.referer }} | Address of the previous page |
| {{ request.remote }} | The IP of the site visitor |
| {{ request.scheme }} | http or https |
Using the request information, it is possible to add in user-specific content, for example, if the referer contains “google” the content can be rendered adapted to this.
{% if request.referer contains "google" %}
<aside>
<div class="promo brand">
<h2>Want to create websites?</h2>
<a class="shiny-cta" href="/features">Learn more</a>
</div>
</aside>
{% endif %}
Cart object
{{ cart }}
| Property | Description |
|---|---|
| shopId | Shop Id |
| id | Cart id |
| sessionId | Id of customer session |
| shippingId | Id of chosen shipping |
| lang | Language setting |
| currency | Currency used in cart |
| country | Selected country |
| items | List of items in cart |
| amount | Containing the properties total amount, subtotal (sub), VAT and currency |
| requiresShipping | True if the cart contains items that requires shipping |
| quantity | Items in cart |
| shippings | List with possible shippings and their properties |
| createdAt | Cart creation date |
| totalAmount | Total amount of cart |
| itemsCount | Items in cart |
| shipping | Chosen shipping with properties |
Context dependent objects
Context dependent objects, the name of the object is the same as the current context i.e. page,product, cart, collection.
CMS
| Object | Theme template |
|---|---|
| {{ page }} | page.liquid |
| {{ blog }} | blog.liquid |
| {{ article }} | article.liquid |
Page object
| Property | Description |
|---|---|
| id | Page id |
| authorId | Author id |
| author | Author |
| published | Published date |
| createdAt | First created |
| updatedAt | Latest update date |
| publishAt | Publish date |
| lang | Language |
| handle | Editable page handle |
| title | Page title |
| html | Page content in html-format |
| meta | H1 and meta data: Title, description, keywords and data |
| image | Page image with source, and alt texts |
| text | Page-content in text format |
| format | Editor format |
eCommerce
| Object | Template |
|---|---|
| {{ product }} | product.liquid |
| {{ collection }} | collection.liquid |
Example
In the page.liquid template the object {{ page }} exists and contains fields such as {{ page.html }} which provides all the content or {{ page.createdAt }} for creation date.
To view all the fields the filter
| print_rcan be used.
Referencing outside the context
It is possible to reach the objects outside the context of the object.
pages,blogs,collections,productscombined with a reference to theme settings, handle/id or an position in the array will extract an object (page, blog, collection or product).
Using reference to theme settings
With settings it is possible to reach a specific blog/collection/product/page/article from the theme settings data stored in the settings object.
{% assign collection = collections[settings.homepageCollection] %}
Using handle privacy
{{ pages['privacy'].html }}
Referencing a product from products
The products object will contain all the products in an array, it is possible to pick a product from the array by specifying the position, with 0 being the first. products[0] will pick the first product.