Inside the default template that comes installed with Craft, the title of a page is set as:

<title>{% if title is defined %}{{ title }} - {% endif %}{{ siteName }}</title>

This works perfectly for the homepage and on pages where the {{ title }} variable is set. However for individual entries inside a channel, only the site name is used for the title.

I've tried to use the {{ entry.title }} variable instead, however in that case the title of the homepage is rendered as 'Homepage - {{ siteName }}'.

What's the best way to achieve the following page titles for the different sections?

Homepage: {{ siteName }}
Page: {{ title }} - {{ siteName }}
Entry: {{ entry.title }} - {{ siteName }}

1 Answer 1


The title var can be set in the child templates, that way you can fine-tune it for each section of your site.

Take a look at these default templates:


{% set title = "News" %}


{% set title = entry.title %}


The main layout just checks if it has been defined or not:

{% if title is defined %}{{ title }} - {% endif %}{{ siteName }}


P.S. Embed templates might be confusing at first, but are really great, check out the docs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.