---
title: "Upgrade"
manual: "Glossary 2"
version: "main"
permalink: "https://docs.typo3.org/permalink/jweiland/glossary2:upgrade@main"
source: "Administrator/Upgrade/Index.rst"
rendered: "2026-11-03T17:28:49+00:00"
---

# Upgrade {#upgrade}

If you update `glossary2` to a newer version, please read this section
carefully!

## Upgrade to version 7.1.0 {#upgrade-7-1-0}

Version 7.1.0 requires TYPO3 13.4 and PHP 8.2 to 8.5. Deprecated API usages
were removed. Integrators should check the TypoScript inclusion and run the
database compare and the upgrade wizards. Developers only need to act if
they implement the event interfaces of glossary2 themselves.

### Changes for integrators {#upgrade-7-1-0-integrators}

1.  Include the TypoScript only once

    The static template **Glossary 2** works again and imports the
    TypoScript of the site set. Use **either** the site set
    `jweiland/glossary2` **or** the static template, not both. See
    [Include the TypoScript of glossary2](https://docs.typo3.org/permalink/jweiland/glossary2:installation-typoscript@main).
1.  Check the storage PID

    The setting `glossary2.storagePid` is of type `string` now and accepts a
    comma-separated list of folders. See [Site settings and TypoScript constants](https://docs.typo3.org/permalink/jweiland/glossary2:site-settings@main).
1.  Update the database schema

    The file [`ext_tables.sql`](https://docs.typo3.org/m/typo3/reference-coreapi/14.3/en-us/ExtensionArchitecture/FileStructure/ExtTablesSql.html#file-extension-ext-tables-sql) was removed. The database schema is
    created by TYPO3 from the TCA now. Run the database compare in
    **Admin Tools > Maintenance > Analyze Database Structure**:
    column `images` changes from `VARCHAR` to `INT UNSIGNED`, column
    `l10n_source` is added and the columns `path_segment` and `description`
    are changed.
1.  Run the upgrade wizards

    Execute the upgrade wizards in
    **Admin Tools > Upgrade > Upgrade Wizard** or with
    `vendor/bin/typo3 upgrade:run`:

    -   **`glossaryPluginUpdate`**

        Migrates plugins from `list_type` to the content element (`CType`)
        `glossary2_glossary`. Afterwards check the field
        `explicit_allowdeny` of your backend user groups and restrictions of
        backend layouts (for example `content_defender`) for the new
        `CType` `glossary2_glossary`.

    -   **`glossary2UpdateOldFlexFormFields`**

        Migrates old FlexForm settings. The wizard now also finds plugins
        which were already migrated to `CType`.

    -   **`glossary2UpdateSlug`**

        Creates missing URL slugs of glossary records.
1.  Check the backend

    The preview of the plugin in the page module works on all pages, also
    without the site set, as the preview is registered in the global
    [`Configuration/page.tsconfig`](https://docs.typo3.org/m/typo3/reference-coreapi/14.3/en-us/ExtensionArchitecture/FileStructure/Configuration/PageTsconfig.html#file-extension-configuration-page-tsconfig). The hidden toggle of glossary
    records is no longer inverted. The tabs for language, access and notes
    of the plugin are provided by TYPO3 Core and the field `l10n_parent` is
    a select field now.
1.  Check the A-Z navigation

    Umlauts and other multibyte first letters are linked correctly on all
    database systems including MariaDB. A title starting with an umlaut no
    longer adds a link to a second letter (for example "Ä" no longer adds a
    link to "e").

    `Glossary::getSanitizedFirstLetterOfTitle()` returns only the first
    character of the sanitized letter now ("ä" becomes "a" instead of
    "ae"). This changes the `letter` argument of links from the detail view
    back to the list view. Check your templates and route enhancers, if you
    rely on the old value.
1.  Migrate the old TypoScript constants

    The constant names used before version 7.0.1 work again as a fallback
    for installations using the static template. The `glossary2.*`
    constants and the site settings take precedence. See
    [Upgrade to version 7.0.1](https://docs.typo3.org/permalink/jweiland/glossary2:upgrade-7-0-1@main).
1.  Check the items per page

    A value of `itemsPerPage` below `1` shows one item per page instead of
    throwing an exception. A missing value falls back to `10`.

### Changes for developers {#upgrade-7-1-0-developers}

-   `ControllerActionEventInterface::getRequest()` and
    `PostProcessFluidVariablesEvent` use
    `TYPO3CMSExtbaseMvcRequestInterface` instead of
    `TYPO3CMSExtbaseMvcRequest`. Only third-party implementations of
    `ControllerActionEventInterface` have to adapt the return type.
-   New method `PostProcessFirstLettersEvent::setFirstLetters()` to modify
    the first letters of the A-Z navigation. See [Extend the glossary function](https://docs.typo3.org/permalink/jweiland/glossary2:glossary-api-extend@main).
-   `GlossaryService` accepts queries and query results of any model. The
    public API uses generic types instead of the glossary2 model.
-   Pass the current request as third argument to
    `GlossaryService::buildGlossary()`. It is needed by `f:link.action` to
    build the A-Z links.
-   The event listeners of glossary2 are registered with the PHP attribute
    `#[AsEventListener]`. Validation and lazy loading use the PHP attributes
    `#[Validate]` and `#[Lazy]` instead of annotations.
-   `GlossaryController` uses constructor injection instead of
    `inject*()` methods. Adapt XClasses of the controller.
-   The non-existing action `listWithoutGlossar` was removed from the plugin
    configuration.
-   The Composer package requires `typo3/cms-extbase`, `typo3/cms-fluid`
    and `typo3/cms-frontend` explicitly. The requirement of `ext-pdo` was
    dropped.
-   The CI tests PHP 8.2 to 8.5 and runs PHPStan on level 6.

## Upgrade to version 7.0.1 {#upgrade-7-0-1}

Version 7.0.1 introduced the site set `jweiland/glossary2`. The TypoScript
constants were renamed and the default for items per page was reduced from
`15` to `10`. Rename the constants in your site package to the new names
listed below or move the values to the
[site settings](https://docs.typo3.org/permalink/jweiland/glossary2:site-settings@main):

| Old constant | New constant or site setting |
| --- | --- |
| `plugin.tx_glossary2.view.templateRootPath` | `glossary2.templateRootPath` |
| `plugin.tx_glossary2.view.partialRootPath` | `glossary2.partialRootPath` |
| `plugin.tx_glossary2.view.layoutRootPath` | `glossary2.layoutRootPath` |
| `plugin.tx_glossary2.persistence.storagePid` | `glossary2.storagePid` |
| `plugin.tx_glossary2.settings.pidOfDetailPage` | `glossary2.pidOfDetailPage` |
| `plugin.tx_glossary2.settings.pageBrowser.itemsPerPage` | `glossary2.pageBrowser.itemsPerPage` |

<!-- TODO: no Markdown rendering for "versionchanged" -->

The old constants are evaluated again as a fallback. The static
template defines its defaults under the old names, so old constants in
your TypoScript record keep working. A new glossary2.* constant takes
precedence over the old one. With the site set, the site settings
always apply and old constants are ignored.

## Upgrade to version 6.0.0 {#upgrade-6-0-0}

We enhanced the extension's compatibility to TYPO3 version 12 while
establishing a minimum requirement of version 11. As part of this upgrade,
a new page title provider was introduced within the extension.
In addition, comprehensive documentation was provided to guide users in
seamlessly implementing the page title using the newly added provider.
Furthermore, the testing framework for the extension was successfully migrated
to the TYPO3 Testing framework, ensuring robust and efficient testing practices
in line with the latest TYPO3 standards. These upgrades collectively contribute
to an improved and up-to-date extension experience for users within
the TYPO3 ecosystem.

## Update to version 5.1.0 {#upgrade-5-1-0}

If you make use of `ModifyQueryOfSearchGlossariesEvent` event:
We have changed the strict type of TYPO3 QueryBuilder to extbase
QueryResult. Yes, this is a breaking change, but it seems that no one
makes use of it. Please adopt your code to use QueryResult. You can retrieve
the extbase query with method `getQuery()`.

We have reduced the list of categories in Plugin FlexForm to categories in
default language only. Please check, if your selected categories are
still valid.

## Update to version 5.0.2 {#upgrade-5-0-2}

Sorry, we have implemented the wrong Pagination. With this version we use
TYPO3's default SimplePagination. Please adopt changes
of Partials/Components/Pagination.html to your own templates, if you have
overwritten them.

## Upgrade to version 5.0.0 {#upgrade-5-0-0}

We have changed some CSS classes in Fluid Templates. Please update them to
your needs.

As the Widget system has gone in TYPO3 11 we have implemented a new paginator.
Please have a look into our Fluid Templates and adopt pagination to your
own templates.

We have replaced all SignalSlots with EventListeners. Please check your
integration and update to EventListeners.

Because of the Pagination change you should also check your RouteEnhancers. If
you need help, have a look into [Routes](https://docs.typo3.org/permalink/jweiland/glossary2:routes@main) for an example
here in this documentation.

## Update to version 4.3.1 {#upgrade-4-3-1}

We have changed some method arguments, please flush cache in InstallTool

## Upgrade to version 4.0.0 {#upgrade-4-0-0}

As we have only removed TYPO3 8 and added TYPO3 10 compatibility there should
be no problem to upgrade to this version.

## Upgrade to version 3.0.0 {#upgrade-3-0-0}

We have changed Fluid-Templates a lot. We have removed a lot of CSS classes
and changed them to be compatible with Bootstrap. Further we have moved
Image- and Properties-Partial back to Show-Template in to a f:section.
Please have a look into your templates, if they are still working.

SwitchableControllerAction will be deprecated with TYPO3 10. That's why we have
changed this implementation into two new Checkboxes in FlexForm.
Please use the UpdateWizard in InstallTool to update your FlexForms.
