The site object is accessible everywhere. The site object has the following default attributes, but is also extendible by adding content fields.
site.name
Returns the site name
site.domain
Returns the site’s primary full domain. E.g. www.my-plate-site.com.
site.content_objects.[:plural_content_type_name]
Returns all Abstract Content Objects for the given content type name in a collection.
E.g., when you have a content type with the (plural) name 'categories', site.content_objects.categories
returns a collection object with all categories in it.
site.elements.[:plural_content_type_name]
Returns all Elements for the given content type name in a collection.
E.g., when you have a content type with the (plural) name ‘forms', site.elements.forms
returns a collection object with all 'Form’ elements in it.
You can also get all elements of a site in a collection: site.elements.all
site.[:plural_post_type_name]
Returns a collection with all posts (objects with the specified post type). E.g. {{ site.pages }}
returns a collection with all posts with the content type ‘page’.
site.languages
Returns an array of objects representing the available languages for the site.
Input:
{{ site.languages }}
Output:
[ { "shortcode" => "nl", "name" => "Dutch, "url" => "/dutch-url" }, { "shortcode" => "en", "name" => "English, "url" => "/en/english-url" }, { "shortcode" => "de", "name" => "German, "url" => "/de/german-url" } ]
The url attribute returns the url of the translation for the Post you are on. If there is no translation found, the root url for the language is returned. E.g. ‘/en’ for English, ‘/fr’ for French, and so on.
Input:
{% for language in site.languages %} <a href="{{ language.url }}">{{ language.name }}</a> {% endfor %}
Output:
<a href="/dutch-url">Dutch</a> <a href="/en/english-url">English</a> <a href="/de">German</a> <!-- uses root german url if no translation is found !>