Academic Bite Jobs 

Extension key

academic_bite_jobs

Package name

fgtclb/academic-bite-jobs

Version

main

Language

en

Author

FGTCLB

License

This document is published under the Creative Commons BY 4.0 license.

Rendered

Sat, 22 Aug 2026 15:14:28 +0000


The TYPO3 extension Academic Jobs with b-ite displays jobs from the b-Ite eRecruiting platform embedded in the TYPO3 website. All you need to use it is the b-ite key, which can usually be read from existing b-Ite job advertisements in the browser.

The job offers are displayed as tiles, lists and tables. The detailed display of individual job advertisements is automatically linked to the b-ite platform. The b-ite key can be entered in the extension plugin. Custom assignment allows groupings such as appointment procedures, academic staff, non-scientific staff or training positions to be selected.

Further settings for grouping, sorting, display mode and limiting the job advertisements are also available in the plugin.


Introduction 

What the extension does and the main concepts behind it.

Installation 

Install academic_bite_jobs via Composer, the Extension Manager or a TER upload.

Configuration 

Configure the extension and its plugins for your installation.

Templates 

Override and customise the frontend templates.

Known problems 

Known issues and information about them.

Changelog 

Learn about what has changed and which actions are required to upgrade.

What does it do? 

The TYPO3 extension Academic Jobs with b-ite displays jobs from the b-Ite eRecruiting platform embedded in the TYPO3 website. All you need to use it is the b-ite key, which can usually be read from existing b-Ite job advertisements in the browser.

As part of the bundling of requirements for the FGTCLB Academic Extensions, the TYPO3 extension "Academic Jobs b-ite" was created, which only requires the b-ite key to seamlessly display job adverts from the b-ite platform on a TYPO3 website.

The developed plug-in currently supports different categorisations, which are read from b-ite, e.g. appointment procedures, academic staff, non-scientific staff and training positions.

List view, tile view and table view are currently available as display modes. There are also options for grouping and sorting as well as a limit for the number of job adverts to be displayed.

Installation 

The extension has to be installed like any other TYPO3 CMS extension. You can download and install it using one of the following methods.

Install the stable release
composer require 'fgtclb/academic-bite-jobs':'^2'
Copied!
  1. Switch to the module Admin Tools > Extensions.
  2. Switch to Get Extensions.
  3. Search for the extension key academic_bite_jobs.
  4. Import the extension from the repository.
  1. Get the current version from TER by downloading the ZIP version. Alternatively, get the ZIP from the GitHub Releases page.
  2. Switch to the module Admin Tools > Extensions.
  3. Enable Upload Extension.
  4. Select or drag the extension ZIP archive and upload the file.

Configuration 

This extension ships its frontend TypoScript and its backend page TSconfig in two forms: as TYPO3 site sets, and as classic static templates plus page TSconfig files that are selected on a page. Both forms read the very same files, so they configure an installation identically.

Pick one of them per site and stay with it — see Do not combine both for what happens otherwise.

What the sets contain 

The extension ships one content element, so it ships one component set and one aggregate set that depends on it.

Set Delivers
fgtclb/academic-bite-jobs-list The Job list content element: its TypoScript (plugin.tx_academicbitejobs) and the page TSconfig that makes the content element selectable in the backend.
fgtclb/academic-bite-jobs Everything above. This is the set to use unless you deliberately want a subset.

Both depend on fgtclb/academic-base-ctype-group, the set of EXT:academic_base that labels the content element group all academic extensions sort their elements into.

The content element is hidden by default 

EXT:academic_bite_jobs hides its content element for the whole installation and brings it back per component. Whichever of the two mechanisms below you use, it is what makes Job list selectable in the backend again — without one of them the content element is not offered, and existing records keep rendering.

Include the site set 

Add the set to the config.yaml of the site that should offer the content element:

config/sites/my-site/config.yaml (diff)
 base: 'https://example.com/'
 rootPageId: 1
+dependencies:
+  - fgtclb/academic-bite-jobs
Copied!

See also TYPO3 Explained, Using a site set as dependency in a site.

Include static templates 

For an installation that still configures its frontend through sys_template records, the same files are registered as static templates and as selectable page TSconfig files.

Include static TypoScript 

Edit the sys_template record of the site root and add the entry to Include static (from extensions):

Entry Delivers
Academic Bite Jobs: Job list (academic_bite_jobs) The TypoScript of the Job list content element.
Academic Bite Jobs: All components (academic_bite_jobs) Every component this extension ships, in one entry.

Include static page TSconfig 

Edit the page record of the site root, tab Resources, field Page TSconfig, and add the entry:

Entry Delivers
Academic Bite Jobs: Job list (academic_bite_jobs) Makes the Job list content element selectable, and configures its entry in the new content element wizard.
Academic Bite Jobs: All components (academic_bite_jobs) Every component this extension ships, in one entry.

The setting is inherited by every page below the one it is set on.

Do not combine both 

A site that uses the site set and the static template reads the shipped files twice. The site set is applied before the sys_template record, so the second read happens after the site settings and after config/sites/<site>/constants.typoscript — and it resets every constant the extension ships a default for back to that default.

Nothing else is damaged: the Constants and Setup fields of the sys_template record, the page TSconfig of a page and the page TSconfig files selected on a page are all applied afterwards and still win. Use one mechanism per site and the question does not arise.

General configuration 

...

Overriding templates 

EXT:academic_bite_jobs is using Fluid as template engine.

This documentation won't bring you all information about Fluid but only the most important things you need for using it. You can get more information in the section Fluid templates of the Sitepackage tutorial. A complete reference of Fluid ViewHelpers provided by TYPO3 can be found in the ViewHelper Reference

Change the templates using TypoScript constants 

As any Extbase based extension, you can find the templates in the directory Resources/Private/.

If you want to change a template, copy the desired files to the directory where you store the templates.

We suggest that you use a sitepackage extension. Learn how to Create a sitepackage extension.

# TypoScript constants
plugin.tx_academicjobs {
    view {
        templateRootPath = EXT:mysitepackage/Resources/Private/Extensions/myextension/Templates/
        partialRootPath = EXT:mysitepackage/Resources/Private/Extensions/myextension/Partials/
        layoutRootPath = EXT:mysitepackage/Resources/Private/Extensions/myextension/Layouts/
    }
}
Copied!

Known problems 

Please note that this extension is still in development. Changes to existing code may appear in upcoming versions.

If you run into a bug or a feature that would be helpful, please use the issue tracker.

Breaking: Removed TYPO3 v12 support 

Description 

Support for TYPO3 v12 has been removed for the 3.x version line, based on the dual TYPO3 core version support per major version of the academic extensions support matrix.

This includes removing build, test and configuration parts only required for TYPO3 v12. Version specific code paths are dropped in a dedicated step.

Impact 

TYPO3 v12 or older instances can no longer install or update to the 3.x version of the academic extensions and are required to upgrade TYPO3 first.

The extension cannot be installed on TYPO3 v12 anymore but does not break otherwise.

Affected installations 

All installations using an academic extension on TYPO3 v12 that want to upgrade to the 3.x version line.

Migration 

Upgrade the TYPO3 installation to a supported version (TYPO3 v13) beforehand or within the same upgrade step.

Important: The page TSconfig directory is now spelled TSconfig 

Description 

The extensions of this set spelled their page TSconfig directory in three different ways — TsConfig, TSconfig and TSConfig. They now all use TSconfig, which is how TYPO3 spells the term and what the core documentation uses.

In this extension the directory was Configuration/TsConfig.

Nothing was broken before, because every import matched the directory it pointed at. The reason to change it is that a filesystem is case sensitive on Linux and case insensitive on macOS and Windows, so a path copied between two of these extensions resolved on one machine and silently not on another — and a page TSconfig @import that does not resolve raises no error, the configuration is simply absent.

Impact 

Every file this extension ships moved with the directory. The imports inside the extension were updated in the same change, so an installation that only installs the extension has nothing to do.

An integrator who references these paths from their own configuration has to update them, because the old path no longer exists. The files below the directory were reorganised in the same release, so the new path is not the old one with the spelling corrected — take it from the table in Breaking: Site sets and static templates have been restructured:

Page TSconfig of your own site package
# before
@import 'EXT:academic_bite_jobs/Configuration/TsConfig/Wizards/*.tsconfig'
# after
@import 'EXT:academic_bite_jobs/Configuration/TSconfig/Full/page.tsconfig'
Copied!

Affected Installations 

Every installation that imports a page TSconfig file of this extension by path, or that copied such a path into its own site package. An installation that relies only on the auto-included Configuration/page.tsconfig of the extension, or on its site set, is unaffected.

Important: The extension ships page TSconfig for every installation 

Description 

The page TSconfig of this extension used to be reachable through the site set fgtclb/academic-bite-jobs and through nothing else: the new content element wizard entry lived in Configuration/TSconfig/Wizards/NewContentElement.tsconfig, and the only file importing it was Configuration/Sets/AcademicBiteJobs/page.tsconfig. On a site that did not enable that set, the page TSconfig of this extension was never read at all.

Configuration/page.tsconfig of an extension is auto-included for the whole installation since TYPO3 v12.0 (Feature: #96614), and this extension shipped no such file — the only one of these extensions that ships page TSconfig and did not. It ships one now, so what has to hold on every installation no longer depends on the site configuration.

What that file carries is the hide-by-default half of the configuration: it removes academicbitejobs_list from the selectable content element types for the whole installation. The wizard entry and the matching re-enable moved to Configuration/TSconfig/List/page.tsconfig, which a site reaches through the site set fgtclb/academic-bite-jobs-list or through the page field Page TSconfig — so the content element is offered where it is wanted rather than everywhere, and the decision no longer depends on whether a site happens to enable a set.

Impact 

On TYPO3 v13 and v14 the wizard entry is not what makes the content element selectable: the wizard is built from TCA since Feature: #102834, and both versions drop an element whose value appears in TCEFORM.tt_content.CType.removeItems before rendering. The show := addToList() line the file used to carry was dropped with this release — NewContentElementController has no reader for it on either supported version.

Where the content element is offered, and what an installation has to do about it, is described in Breaking: Site sets and static templates have been restructured.

Affected Installations 

All installations of this extension. What to do is in the Breaking entry referenced above; this entry only records that the extension now ships a page TSconfig file that is read without any site configuration.

Important: Plugins assign a record view variable 

Description 

TYPO3 v14 rewrote the header partial of EXT:fluid_styled_content. Where v13 Header/All.html reads {data.header}, the v14 Header/All.fluid.html renders header and subheader with {record -> f:render.text(...)}, and that ViewHelper requires a record object.

Content elements based on lib.contentElement receive that record from the record-transformation data processor, but an Extbase plugin view assigns only the data array. Templates of this extension render the shared header partial, so on TYPO3 v14 they aborted with

The record argument must be an instance of ... Given: null
Copied!

The plugin controllers now assign an additional record view variable, built from the tt_content row of the current content element. TYPO3 v13 ignores it, its header partial keeps reading data, so one implementation serves both core versions.

Impact 

The affected plugins render again on TYPO3 v14. Nothing was removed or renamed, so no configuration or template override needs to be adapted.

Custom templates and template overrides may use the new {record} variable, for example with <f:render.text record="{record}" field="header" />.

Affected Installations 

Installations running the plugins of this extension on TYPO3 v14. TYPO3 v13 installations are unaffected.

Migration 

None required.

Breaking: Site sets and static templates have been restructured 

Description 

The TypoScript and the page TSconfig of this extension were shipped twice: the static template read Configuration/TypoScript/, and the site set fgtclb/academic-bite-jobs shipped its own constants.typoscript and setup.typoscript, each of them a single @import of that folder. The page TSconfig existed only as the wizard file Configuration/TSconfig/Wizards/NewContentElement.tsconfig and was not selectable on a page at all.

Both mechanisms now read one physical copy of every file, and both of them deliver the extension per component instead of as one block:

  • Configuration/TypoScript/List/ holds the TypoScript of the Job list content element and is what the static template registers and what the set points its typoscript key at.
  • Configuration/TSconfig/List/page.tsconfig holds its page TSconfig and is what the page field Page TSconfig offers and what the set points its pagets key at.
  • Configuration/TypoScript/Full/ and Configuration/TSconfig/Full/page.tsconfig are the aggregates for installations that do not use site sets.

The content element is now hidden by default. The always-included Configuration/page.tsconfig removes academicbitejobs_list from the selectable content element types, and the page TSconfig of the component adds it back — so the element is offered where it is wanted instead of on every page of every installation. The TCA registration itself did not move, so the frontend renders existing records exactly as before. Editing such a record in the backend is a different matter — read the warning below before upgrading.

Impact 

A sys_template record that selected the old static template keeps its stored value, and that value now points at a folder holding no constants.typoscript and no setup.typoscript. It is not an error — the frontend simply loses the plugin configuration, and the plugin renders with no template paths.

A site package that imported one of the shipped files by path fails to resolve it. @import of a missing file is silent, so this also shows up as missing configuration rather than as an error message.

The Job list content element is no longer offered in the backend until the page TSconfig of the component is included, through the site set or through the page field Page TSconfig.

The set fgtclb/academic-bite-jobs keeps its name and keeps delivering everything, so a site configuration that depends on it needs no change.

Affected Installations 

Installations that select the static template of this extension in a sys_template record, that import one of the shipped files from an own site package, or that use the content element without including the page TSconfig of this extension.

Migration 

Replace the static template entry in the sys_template record:

Old entry New entry
Academic Bite Jobs (academic_bite_jobs), stored as EXT:academic_bite_jobs/Configuration/TypoScript Academic Bite Jobs: All components (academic_bite_jobs), stored as EXT:academic_bite_jobs/Configuration/TypoScript/Full — or Academic Bite Jobs: Job list (academic_bite_jobs), stored as EXT:academic_bite_jobs/Configuration/TypoScript/List

Add the page TSconfig entry, which did not exist before, in the page record of the site root, tab Resources, field Page TSconfig: Academic Bite Jobs: All components (academic_bite_jobs), stored as EXT:academic_bite_jobs/Configuration/TSconfig/Full/page.tsconfig. Without it the content element is not selectable any more, and existing records of it lose their CType when they are saved from the backend form.

Sites that use the site set instead need no migration — but they must not use both mechanisms at once, see the Configuration chapter.

Adjust every @import in an own site package:

Old path New path
EXT:academic_bite_jobs/Configuration/TypoScript/constants.typoscript EXT:academic_bite_jobs/Configuration/TypoScript/List/constants.typoscript
EXT:academic_bite_jobs/Configuration/TypoScript/setup.typoscript EXT:academic_bite_jobs/Configuration/TypoScript/List/setup.typoscript
EXT:academic_bite_jobs/Configuration/TSconfig/Wizards/NewContentElement.tsconfig EXT:academic_bite_jobs/Configuration/TSconfig/List/page.tsconfig
EXT:academic_bite_jobs/Configuration/TSconfig/Wizards/*.tsconfig EXT:academic_bite_jobs/Configuration/TSconfig/Full/page.tsconfig

A site configuration may name the new component set instead of the aggregate:

Set Delivers
fgtclb/academic-bite-jobs Unchanged in name, now delivers through the component set below.
fgtclb/academic-bite-jobs-list The Job list content element only.

Breaking: Remove project specific custom fields 

Description 

EXT:academic_bite_jobs provides flexform options and filters based on custom project specific fields and options not interchangeable with other projects and not making sense being provided by default.

These custom fields needs to be setup the same way on the external bite-job system and is mosts likely not the way to go.

Mangling around with the current implementation even if only the options are removed is not suitable and the internal implementation needs to be streamlined first before adding customization endpoints in a reasonable way as public API.

Based on aforementioned background project specific implementation and options are now removed to clean up the code base as preparation to streamline first the internal implementation with dedicated changes, re-introducing the feature with a new API at a later point.

This is technically breaking, at least for the one specific project and is handled as breaking for it, albeit it should not target any other project at all.

Reducing the feature set to the bare minimum simply displaying only the single job detail page without related jobs is the mostly used base ground and the essential base feature to start fresh from.

Additionally, fluid template structure is streamlined in the same step to follow the restructure epic for all academic extensions.

Impact 

Following removals are included:

  • flexform options settings.jobs.custom.zuordnung and

settings.jobs.groupBy are removed. `BiteFieldsHelper` is removed being unused and an empty class anyway. BiteJobsService->fetchBiteJobs() handling code for removed flexform setting options is removed from method. `public BiteJobsService->findCustomJobRelations()` is removed. public BiteJobsService->findCustomBiteFieldLabelsFromOptions() is removed. `public BiteJobsService->groupByRelations()` is removed. public BiteJobsService->mapFieldsToJobs() is removed.

Affected Installations 

EXT:academic_bite_jobs before v2.1 installations using custom project specific fields and options

Migration 

[TODO] How to migrate the breaking change?

Sitemap