The Craft entry‘ variable

Craft makes it extremely easy for us to interact with the content in our database within our templates. Perhaps the most useful item for this is the Craft entry variable.

If Craft knows that the Entries in one of our sections have their own URLs, Craft provides us a variable to help us output all of our content for that Entry. This is true for Singles as well as Channels and Structures where we have selected the setting 'Entries in this section have their own URLs'. Let's take a look at each:

Singles

When we create a Single in our Section settings, we have to tell that Single our Entry Template. The Entry Template maps to the template we want to use to display our content in our templates folder when the Entry URL is visited in the browser.

For example, a user who visits http://website.com/about may be served the content that is displayed in our file craft/templates/about.html

In our about.html template, we can use the Craft entry variable to access all of the content from our About Entry.

{# Single Template #}
{{ entry.title }}
{{ entry.url }}
{{ entry.anyFieldNameUsedInOurAboutSection }}

Channels

While a Channel may have many entries, if we select the setting 'Entries in this section have their own URLs' we can tell Craft which template we want to use for each individual Entry in our Channel.

For example, a user who visits http://website.com/articles/article-slug may be served the content that is displayed in our file craft/templates/articles/_entry.html.

In our articles/_entry.html file we can use the Craft entry variable to access all of the content from our Article Entry for that URL being requested by the browser.

Just as before:

{# Individual Entry Template for our Channel #}
{{ entry.title }}
{{ entry.url }}
{{ entry.anyFieldNameUsedInOurArticleEntry }}

Structures

Individual entries for Structures behave just as Singles and Channels. One difference is that Structures may have an extra segments in their URL referencing their parent Entries. In our Section settings, we still tell a Structure section the Entry Template in which to use to display our individual entry pages, and Craft provides us the entry variable just as before.

{# Individual Entry Template for our Structure  #}
{{ entry.title }}
{{ entry.url }}
{{ entry.anyFieldNameUsedInOurStructureEntry }}

Categories

The behavior we are seeing above also can be applied to other Elements in Craft. When we setup a Category Group in Craft we can select a familiar option as we have seen above: Categories in this group have their own URLs.

We can define our Category URL Format and Category Template and when an individual category is requested from our Category Template, Craft provides us a category variable that behaves just like the entry variable giving us easy access to all of the fields that are available for our Category.

{# Category template #}
{{ category.name }}
{{ category.url }}
{{ category.anyFieldNameUsedInOurCategoryGroupEntry }}

Level up in Craft CMS with practical examples, snippets, and patterns.
Craft The Planet emails are sent out several times a week.