---
title: "Extending the job board"
manual: "Job board"
version: "main"
permalink: "https://docs.typo3.org/permalink/jweiland/jobboard:developer-extensibility@main"
source: "Developer/Extensibility.rst"
rendered: "2026-10-22T13:15:25+00:00"
---

# Extending the job board {#developer-extensibility}

The extension does not dispatch own PSR-14 events yet. These extension
points exist:

-   **Templates**

    All templates, partials and layouts can be overridden, see
    [Templates and frontend assets](https://docs.typo3.org/permalink/jweiland/jobboard:templates@main).

-   **Job sources**

    New import sources are classes tagged with `api.model`, see
    [Connect a job source to the import](https://docs.typo3.org/permalink/jweiland/jobboard:developer-import-api@main).

-   **DataHandler hooks and events**

    The import writes all records with the DataHandler, so the hooks and
    events of the TYPO3 Core are triggered, for example for search
    indexing.

-   **Page title**

    The page title provider can be replaced with TypoScript, see
    [Job title as page title](https://docs.typo3.org/permalink/jweiland/jobboard:configuration-page-title@main).

-   **Routing**

    The route enhancer can be copied into your site configuration and
    changed, see [Speaking URLs (route enhancer)](https://docs.typo3.org/permalink/jweiland/jobboard:configuration-routing@main).

-   **Logging**

    All messages of the extension use the log channel
    `JWeiland.Jobboard`. Configure own writers in
    `$GLOBALS['TYPO3_CONF_VARS']['LOG']['JWeiland']['Jobboard']`.

The address model `\JWeiland\Jobboard\Domain\Model\Address` extends
the model of EXT:tt_address and adds the map location of EXT:maps2. It is
mapped to the table `tt_address` in
[`EXT:jobboard/Configuration/Extbase/Persistence/Classes.php`](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ExtensionArchitecture/FileStructure/Configuration/Extbase/Persistence/Index.html#file-extension-configuration-extbase-persistence-classes-php).

## Job properties for templates {#developer-domain-model}

Useful properties of `{job}` in Fluid:

-   **`{job.salaryRangeMin}`, `{job.salaryRangeMax}`**

    Lowest and highest salary, for both salary modes. In salary mode
    "Salary grade", these are the lowest and highest positive amount of all
    steps or fixed amounts of all valid selected grades. In salary mode
    "Free salary entry", the maximum falls back to the minimum if it is
    empty. Use these properties instead of evaluating
    `{job.salaryMode}`.

-   **`{job.hasSalaryRange}`**

    `true` if minimum and maximum differ.

-   **`{job.hasSalaryInformation}`**

    `true` if the job has any salary information.

-   **`{job.jobAreas}`, `{job.salaryGrades}`, `{job.benefits}`**

    All related records. `{job.jobArea}` and `{job.salaryGrade}`
    return the first record only.

-   **File properties**

    `{job.employerLogo}`, `{job.headerLogo}`,
    `{job.tenderFile}` and `{job.pdfFiles}` are file references. They are always lists, also `{benefit.image}`.
    Use `<f:for>` to render them.

-   **`{job.isImport}`, `{salaryGrade.hasSteps}`**

    Boolean values.
