---
title: "HBS_RENDERABLES"
manual: "Handlebars"
version: "main"
permalink: "https://docs.typo3.org/permalink/cpsit/typo3-handlebars-forms:co-hbs-renderables@main"
source: "Usage/ContentObjects/Renderables.rst"
rendered: "2026-09-29T09:18:02+00:00"
---

# HBS_RENDERABLES {#co-hbs-renderables}

Iterates the child renderables of the current renderable and resolves each one
according to per-type configuration. Returns a list (array).

When used at the top level (form runtime as current renderable), it iterates the
elements of the current page. For composite renderables such as `Fieldset`,
it iterates their direct children.

**Configuration**

```typoscript
fields = HBS_RENDERABLES
fields {
    # Per-type configuration (key = EXT:form element type)
    Text {
        template = @form-field-text
        label = HBS_LABEL
        value = HBS_TAG
        value.attribute = value
    }

    # Fallback for types without a dedicated block
    default {
        template = @form-field-generic
    }

    # Single content object for a type (no sub-configuration)
    Honeypot = HBS_PASSTHROUGH

    # Suppress a type entirely
    SomeType {
        if.isTrue = 0
    }
}
```

The lookup order for each child element is: exact type key, `default`. If
neither matches, the element is skipped.

**Frontend register**

While iterating, `HBS_RENDERABLES` writes two values to the frontend
register that TypoScript conditions can read via [register](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Data.html#data-type-gettext-register):

-   `HBS_RENDERABLES_COUNT` – total number of renderables in the current iteration
-   `HBS_RENDERABLES_CURRENT` – zero-based index of the element being processed
    (unset after the loop)

> [!NOTE]
> Since TYPO3 v14 the register is part of the frontend register stack on the global
> request object (`frontend.register.stack` request attribute) rather than the
> legacy `$GLOBALS['TSFE']->register` array. The extension handles both automatically.
