# HeadTitle
The HTML `
` element is used to provide a title for an HTML document. The
`HeadTitle` helper allows you to programmatically create and store the title for
later retrieval and output.
The `HeadTitle` helper is a concrete implementation of the [Placeholder helper](placeholder.md).
It overrides the `toString()` method to enforce generating a `` element,
and adds a `headTitle()` method for overwriting and aggregation of title
elements. The signature for that method is `headTitle($title, $setType = null)`;
by default, the value is appended to the stack (aggregating title segments) if
left at `null`, but you may also specify either 'PREPEND' (place at top of
stack) or 'SET' (overwrite stack).
Since setting the aggregating (attach) order on each call to `headTitle` can be
cumbersome, you can set a default attach order by calling
`setDefaultAttachOrder()` which is applied to all `headTitle()` calls unless you
explicitly pass a different attach order as the second parameter.
## Basic Usage
You may specify a title tag at any time. A typical usage would have you setting
title segments for each level of depth in your application: site, module,
controller, action, and potentially resource. This could be achieved in the
module class.
```php
// module/MyModule/Module.php
getParam('application');
$app->getEventManager()->attach('render', [$this, 'setLayoutTitle']);
}
/**
* @param \Zend\Mvc\MvcEvent $e The MvcEvent instance
* @return void
*/
public function setLayoutTitle($e)
{
$matches = $e->getRouteMatch();
$action = $matches->getParam('action');
$controller = $matches->getParam('controller');
$module = __NAMESPACE__;
$siteName = 'Zend Framework';
// Getting the view helper manager from the application service manager
$viewHelperManager = $e->getApplication()->getServiceManager()->get('ViewHelperManager');
// Getting the headTitle helper from the view helper manager
$headTitleHelper = $viewHelperManager->get('headTitle');
// Setting a separator string for segments
$headTitleHelper->setSeparator(' - ');
// Setting the action, controller, module and site name as title segments
$headTitleHelper->append($action);
$headTitleHelper->append($controller);
$headTitleHelper->append($module);
$headTitleHelper->append($siteName);
}
}
```
When you're finally ready to render the title in your layout script, echo the
helper:
```php
= $this->headTitle() ?>
```
Output:
```html
action - controller - module - Zend Framework
```
In case you want the title without the `` and `` tags you can use
the `renderTitle()` method:
```php
= $this->headTitle()->renderTitle() ?>
```
Output:
```html
action - controller - module - Zend Framework
```