---
title: "Developer"
manual: "Pagewide CSS classes"
version: "12.0"
permalink: "https://docs.typo3.org/permalink/svent/pageclasses:developer@12.0"
source: "Developer/Index.rst"
rendered: "2026-10-19T06:46:01+00:00"
---

# Developer {#developer}

## Hook: change the classes {#developer-hook}

Before the body tag is rendered, the hook `pageclassesCssHook` gets all
collected classes and may add, change or remove them. The array is passed by
reference, keys and values are the (HTML-escaped) class names.

Register the hook in the `ext_localconf.php` of your extension:

**EXT:my_extension/ext_localconf.php**

```php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['pageclasses']['pageclassesCssHook'][]
    = \MyVendor\MyExtension\Hook\PageclassesHook::class;
```

**EXT:my_extension/Classes/Hook/PageclassesHook.php**

```php
namespace MyVendor\MyExtension\Hook;

class PageclassesHook
{
    /**
     * @param object $parentObject the plugin \SvenT\Pageclasses\Plugin\Pageclasses
     * @param array<string, string> $pageClasses
     */
    public function processPageclassesCssHook($parentObject, array &$pageClasses): void
    {
        $pageClasses['is-christmas'] = 'is-christmas';
    }
}
```

## TypoScript {#developer-typoscript}

The body tag is rendered by the `USER` object `plugin.tx_pageclasses_pi1`
(class `\SvenT\Pageclasses\Plugin\Pageclasses`, method `main`). It returns
the complete body tag, e.g. `<body class="home layout_0">`, or `<body>` if
there is no class.
