> For the complete documentation index, see [llms.txt](https://docs.prestashop-project.org/1-5-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.prestashop-project.org/1-5-documentation/english-documentation/developer-guide/developer-tutorials/helpers.md).

# Helpers

PrestaShop 1.5 has Helper classes, which enable you to generate standard HTML elements for the back-office as well as for module configuration pages.

## Several types of helper <a href="#helpers-severaltypesofhelper" id="helpers-severaltypesofhelper"></a>

There are 5 types of helper classes, all inheriting from the Help parent class:

* [HelperForm](/1-5-documentation/english-documentation/developer-guide/developer-tutorials/helpers/helperform.md): used to generate an edition form for an object of type ObjectModel. Example: editing the client's profile.
* [HelperOptions](/1-5-documentation/english-documentation/developer-guide/developer-tutorials/helpers/helperoptions.md): used to generate a configuration form, the values of which are stored in the `configuration` table. Example: the "Preferences" page.
* [HelperList](/1-5-documentation/english-documentation/developer-guide/developer-tutorials/helpers/helperlist.md): used to generate a table of elements. The elements can belong to ObjectModel-type objects, but they do not have to. Example: client list, order status list.
* HelperView: used to generate a View page. Example: the page that is displayed when the client lists her orders, her carts, etc.
* HelperHelpAccess: used to generate the toolbar's help link.

## Their templates <a href="#helpers-theirtemplates" id="helpers-theirtemplates"></a>

The helpers use Smarty templates which are found in the following folder: `admin/themes/default/template/helpers/`**`name_of_the_helper`**`/`

Each template can be overloaded.

## Overloading <a href="#helpers-overloading" id="helpers-overloading"></a>

An `AdminController` can overload any help template, simply by creating a `.tpl` file of the same name in the folder named `admin/themes/default/controllers/`**`name_of_the_controller`**`/helpers/`**`name_of_the_helper`**`/`

If possible, it should extend the parent template, not just replace it. Smarty 3 allows for inheritance by declaring `{block name=""}` tags. A child template can overload a parent block by open a block of the same name.

In addition to this section, you can read how to [use helpers to overload a back-office template](/1-5-documentation/english-documentation/developer-guide/developer-tutorials/helpers/using-helpers-to-overload-a-back-office-template.md).

### Template inheritance example: adding a new type of field in a form <a href="#helpers-templateinheritanceexample-addinganewtypeoffieldinaform" id="helpers-templateinheritanceexample-addinganewtypeoffieldinaform"></a>

For the sake of this example, let's change the edition for for the client's addresses. We want a field that would display the name and e-mail of the client, if these are known, or an e-mail input field otherwise.

We must create a new template: `/admin-dev/themes/default/template/controllers/addresses/helpers/form/form.tpl`

This template will contain the following code:

```
{extends file="helpers/form/form.tpl"}
 
{block name="field"}
    {if $input.type == 'text_customer'}
        {if isset($customer)}
            ...
        {else}
            ...
        {/if}
    {else}
        {$smarty.block.parent}
    {/if}
{/block}
```

We first declare the template's parent, then we can overload its `field` block. That block contains the field display. Our code checks the field type:

* if it is of type `text_customer`, then it handles the content display.
* If it is of any other type, it gives way to the parent's handling code.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.prestashop-project.org/1-5-documentation/english-documentation/developer-guide/developer-tutorials/helpers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
