itzbund / gsb-solr
Apache Solr search integration for Government Site Builder (GSB) 11. This is part of the Government Site Builder (GSB) 11. The GSB 11 is a measure of the Dienstekonsolidierung Bund (DKB) of the Federal Ministry of the Interior and for Homeland (BMI) and is carried out on behalf of the Information Te
Installs: 527
Dependents: 2
Suggesters: 1
Security: 0
Type:typo3-cms-extension
pkg:composer/itzbund/gsb-solr
Requires
- php: ^8.3
- apache-solr-for-typo3/solr: ^13.0
- typo3/cms-core: ^13.4
- typo3/cms-frontend: ^13.4
- typo3/cms-install: ^13.4
Requires (Dev)
- ergebnis/composer-normalize: ^2.47.0
- helmich/typo3-typoscript-lint: ^3.3.0
- phpmd/phpmd: ^2.13
- ssch/typo3-rector: ^3.5
- typo3/coding-standards: ^0.8
- typo3/testing-framework: ^8.2
Suggests
- ext-redis: *
- 12.x-dev
- v2.0.0-rc.4
- v2.0.0-rc.3
- v2.0.0-rc.2
- v2.0.0-rc.1
- v2.0.0-beta.73
- v2.0.0-beta.72
- v2.0.0-beta.71
- v2.0.0-beta.70
- v2.0.0-beta.69
- v2.0.0-beta.68
- v2.0.0-beta.67
- v2.0.0-beta.66
- v2.0.0-beta.65
- v2.0.0-beta.64
- v2.0.0-beta.63
- v2.0.0-beta.62
- v2.0.0-beta.61
- v2.0.0-beta.60
- v2.0.0-beta.59
- v2.0.0-beta.58
- v2.0.0-beta.57
- v2.0.0-beta.56
- v2.0.0-beta.55
- v2.0.0-beta.54
- v2.0.0-beta.53
- v2.0.0-beta.52
- v2.0.0-beta.51
- v2.0.0-beta.50
- v2.0.0-beta.49
- v2.0.0-beta.48
- v2.0.0-beta.47
- v2.0.0-beta.46
- v2.0.0-beta.45
- v2.0.0-beta.44
- v2.0.0-beta.43
- v2.0.0-beta.42
- v2.0.0-beta.41
- v2.0.0-beta.40
- v2.0.0-beta.39
- v2.0.0-beta.38
- v2.0.0-beta.37
- v2.0.0-beta.36
- v2.0.0-beta.35
- v2.0.0-beta.34
- v2.0.0-beta.33
- v2.0.0-beta.32
- v2.0.0-beta.31
- v2.0.0-beta.30
- v2.0.0-beta.29
- v2.0.0-beta.28
- v2.0.0-beta.27
- v2.0.0-beta.26
- v2.0.0-beta.25
- v2.0.0-beta.24
- v2.0.0-beta.23
- v2.0.0-beta.22
- v2.0.0-beta.21
- v2.0.0-beta.20
- v2.0.0-beta.19
- v2.0.0-beta.18
- v2.0.0-beta.17
- v2.0.0-beta.16
- v2.0.0-beta.15
- v2.0.0-beta.14
- v2.0.0-beta.13
- v2.0.0-beta.12
- v2.0.0-beta.11
- v2.0.0-beta.10
- v2.0.0-beta.9
- v2.0.0-beta.8
- v2.0.0-beta.7
- v2.0.0-beta.6
- v2.0.0-beta.5
- v2.0.0-beta.4
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- dev-main / 1.x-dev
- v1.14.9-rc.1
- v1.14.8
- v1.14.8-rc.12
- v1.14.8-rc.11
- v1.14.8-rc.10
- v1.14.8-rc.9
- v1.14.8-rc.8
- v1.14.8-rc.7
- v1.14.8-rc.6
- v1.14.8-rc.5
- v1.14.8-rc.4
- v1.14.8-rc.3
- v1.14.8-rc.2
- v1.14.8-rc.1
- v1.14.7
- v1.14.7-rc.11
- v1.14.7-rc.10
- v1.14.7-rc.9
- v1.14.7-rc.8
- v1.14.7-rc.7
- v1.14.7-rc.6
- v1.14.7-rc.5
- v1.14.7-rc.4
- v1.14.7-rc.3
- v1.14.7-rc.2
- v1.14.7-rc.1
- v1.14.6
- v1.14.6-rc.13
- v1.14.6-rc.12
- v1.14.6-rc.11
- v1.14.6-rc.10
- v1.14.6-rc.9
- v1.14.6-rc.8
- v1.14.6-rc.7
- v1.14.6-rc.6
- v1.14.6-rc.5
- v1.14.6-rc.4
- v1.14.6-rc.3
- v1.14.6-rc.2
- v1.14.6-rc.1
- v1.14.5
- v1.14.5-rc.8
- v1.14.5-rc.7
- v1.14.5-rc.6
- v1.14.5-rc.5
- v1.14.5-rc.4
- v1.14.5-rc.3
- v1.14.5-rc.2
- v1.14.5-rc.1
- v1.14.4
- v1.14.4-rc.5
- v1.14.4-rc.4
- v1.14.4-rc.3
- v1.14.4-rc.2
- v1.14.4-rc.1
- v1.14.3
- v1.14.2
- v1.14.2-rc.2
- v1.14.2-rc.1
- v1.14.1
- v1.14.1-rc.8
- v1.14.1-rc.7
- v1.14.1-rc.6
- v1.14.1-rc.5
- v1.14.1-rc.4
- v1.14.1-rc.3
- v1.14.1-rc.2
- v1.14.1-rc.1
- v1.14.0
- v1.14.0-rc.2
- v1.14.0-rc.1
- v1.13.1
- v1.13.1-rc.4
- v1.13.1-rc.3
- v1.13.1-rc.2
- v1.13.1-rc.1
- v1.13.0
- v1.13.0-rc.10
- v1.13.0-rc.9
- v1.13.0-rc.8
- v1.13.0-rc.7
- v1.13.0-rc.6
- v1.13.0-rc.5
- v1.13.0-rc.4
- v1.13.0-rc.3
- v1.13.0-rc.2
- v1.13.0-rc.1
- v1.12.9-rc.6
- v1.12.9-rc.5
- v1.12.9-rc.4
- v1.12.9-rc.3
- v1.12.9-rc.2
- v1.12.9-rc.1
- v1.12.8
- v1.12.8-rc.8
- v1.12.8-rc.7
- v1.12.8-rc.6
- v1.12.8-rc.5
- v1.12.8-rc.4
- v1.12.8-rc.3
- v1.12.8-rc.2
- v1.12.8-rc.1
- v1.12.7
- v1.12.7-rc.10
- v1.12.7-rc.9
- v1.12.7-rc.8
- v1.12.7-rc.7
- v1.12.7-rc.6
- v1.12.7-rc.5
- v1.12.7-rc.4
- v1.12.7-rc.3
- v1.12.7-rc.2
- v1.12.7-rc.1
- v1.12.6
- v1.12.6-rc.10
- v1.12.6-rc.9
- v1.12.6-rc.8
- v1.12.6-rc.7
- v1.12.6-rc.6
- v1.12.6-rc.5
- v1.12.6-rc.4
- v1.12.6-rc.3
- v1.12.6-rc.2
- v1.12.6-rc.1
- v1.12.5
- v1.12.5-rc.7
- v1.12.5-rc.6
- v1.12.5-rc.5
- v1.12.5-rc.4
- v1.12.5-rc.3
- v1.12.5-rc.2
- v1.12.5-rc.1
- v1.12.4
- v1.12.4-rc.8
- v1.12.4-rc.7
- v1.12.4-rc.6
- v1.12.4-rc.5
- v1.12.4-rc.4
- v1.12.4-rc.3
- v1.12.4-rc.2
- v1.12.4-rc.1
- v1.12.3
- v1.12.3-rc.10
- v1.12.3-rc.9
- v1.12.3-rc.8
- v1.12.3-rc.7
- v1.12.3-rc.6
- v1.12.3-rc.5
- v1.12.3-rc.4
- v1.12.3-rc.3
- v1.12.3-rc.2
- v1.12.3-rc.1
- v1.12.2
- v1.12.2-rc.13
- v1.12.2-rc.12
- v1.12.2-rc.11
- v1.12.2-rc.10
- v1.12.2-rc.9
- v1.12.2-rc.8
- v1.12.2-rc.7
- v1.12.2-rc.6
- v1.12.2-rc.5
- v1.12.2-rc.4
- v1.12.2-rc.3
- v1.12.2-rc.2
- v1.12.2-rc.1
- v1.12.1
- v1.12.1-rc.3
- v1.12.1-rc.2
- v1.12.1-rc.1
- v1.12.0
- v1.12.0-rc.9
- v1.12.0-rc.8
- v1.12.0-rc.7
- v1.12.0-rc.6
- v1.12.0-rc.5
- v1.12.0-rc.4
- v1.12.0-rc.3
- v1.12.0-rc.2
- v1.12.0-rc.1
- v1.11.1-rc.2
- v1.11.1-rc.1
- v1.11.0
- v1.11.0-rc.12
- v1.11.0-rc.11
- v1.11.0-rc.10
- v1.11.0-rc.9
- v1.11.0-rc.8
- v1.11.0-rc.7
- v1.11.0-rc.6
- v1.11.0-rc.5
- v1.11.0-rc.4
- v1.11.0-rc.3
- v1.11.0-rc.2
- v1.11.0-rc.1
- v1.10.4-rc.4
- v1.10.4-rc.3
- v1.10.4-rc.2
- v1.10.4-rc.1
- v1.10.3
- v1.10.3-rc.5
- v1.10.3-rc.4
- v1.10.3-rc.3
- v1.10.3-rc.2
- v1.10.3-rc.1
- v1.10.2
- v1.10.2-rc.5
- v1.10.2-rc.4
- v1.10.2-rc.3
- v1.10.2-rc.2
- v1.10.2-rc.1
- v1.10.1
- v1.10.1-rc.12
- v1.10.1-rc.11
- v1.10.1-rc.10
- v1.10.1-rc.9
- v1.10.1-rc.8
- v1.10.1-rc.7
- v1.10.1-rc.6
- v1.10.1-rc.5
- v1.10.1-rc.4
- v1.10.1-rc.3
- v1.10.1-rc.2
- v1.10.1-rc.1
- v1.10.0
- v1.10.0-rc.7
- v1.10.0-rc.6
- v1.10.0-rc.5
- v1.10.0-rc.4
- v1.10.0-rc.3
- v1.10.0-rc.2
- v1.10.0-rc.1
- v1.9.3-rc.5
- v1.9.3-rc.4
- v1.9.3-rc.3
- v1.9.3-rc.2
- v1.9.3-rc.1
- v1.9.2
- v1.9.2-rc.5
- v1.9.2-rc.4
- v1.9.2-rc.3
- v1.9.2-rc.2
- v1.9.2-rc.1
- v1.9.1
- v1.9.1-rc.7
- v1.9.1-rc.6
- v1.9.1-rc.5
- v1.9.1-rc.4
- v1.9.1-rc.3
- v1.9.1-rc.2
- v1.9.1-rc.1
- v1.9.0
- v1.9.0-rc.12
- v1.9.0-rc.11
- v1.9.0-rc.10
- v1.9.0-rc.9
- v1.9.0-rc.8
- v1.9.0-rc.7
- v1.9.0-rc.6
- v1.9.0-rc.5
- v1.9.0-rc.4
- v1.9.0-rc.3
- v1.9.0-rc.2
- v1.9.0-rc.1
- v1.8.1-rc.3
- v1.8.1-rc.2
- v1.8.1-rc.1
- v1.8.0
- v1.8.0-rc.1
- v1.7.1-rc.16
- v1.7.1-rc.15
- v1.7.1-rc.14
- v1.7.1-rc.13
- v1.7.1-rc.12
- v1.7.1-rc.11
- v1.7.1-rc.10
- v1.7.1-rc.9
- v1.7.1-rc.8
- v1.7.1-rc.7
- v1.7.1-rc.6
- v1.7.1-rc.5
- v1.7.1-rc.4
- v1.7.1-rc.3
- v1.7.1-rc.2
- v1.7.1-rc.1
- v1.7.0
- v1.7.0-rc.15
- v1.7.0-rc.14
- v1.7.0-rc.13
- v1.7.0-rc.12
- v1.7.0-rc.11
- v1.7.0-rc.10
- v1.7.0-rc.9
- v1.7.0-rc.8
- v1.7.0-rc.7
- v1.7.0-rc.6
- v1.7.0-rc.5
- v1.7.0-rc.4
- v1.7.0-rc.3
- v1.7.0-rc.2
- v1.7.0-rc.1
- v1.6.1
- v1.6.1-rc.1
- v1.6.0
- v1.6.0-rc.4
- v1.6.0-rc.3
- v1.6.0-rc.2
- v1.6.0-rc.1
- v1.5.1-rc.6
- v1.5.1-rc.5
- v1.5.1-rc.4
- v1.5.1-rc.3
- v1.5.1-rc.2
- v1.5.1-rc.1
- v1.5.0
- v1.5.0-rc.11
- v1.5.0-rc.10
- v1.5.0-rc.9
- v1.5.0-rc.8
- v1.5.0-rc.7
- v1.5.0-rc.6
- v1.5.0-rc.5
- v1.5.0-rc.4
- v1.5.0-rc.3
- v1.5.0-rc.2
- v1.5.0-rc.1
- v1.4.2
- v1.4.2-rc.10
- v1.4.2-rc.9
- v1.4.2-rc.8
- v1.4.2-rc.7
- v1.4.2-rc.6
- v1.4.2-rc.5
- v1.4.2-rc.4
- v1.4.2-rc.3
- v1.4.2-rc.2
- v1.4.2-rc.1
- v1.4.1
- v1.4.1-rc.7
- v1.4.1-rc.6
- v1.4.1-rc.5
- v1.4.1-rc.4
- v1.4.1-rc.3
- v1.4.1-rc.2
- v1.4.1-rc.1
- v1.4.0
- v1.4.0-rc.19
- v1.4.0-rc.18
- v1.4.0-rc.17
- v1.4.0-rc.16
- v1.4.0-rc.15
- v1.4.0-rc.14
- v1.4.0-rc.13
- v1.4.0-rc.12
- v1.4.0-rc.11
- v1.4.0-rc.10
- v1.4.0-rc.9
- v1.4.0-rc.8
- v1.4.0-rc.7
- v1.4.0-rc.6
- v1.4.0-rc.5
- v1.4.0-rc.4
- v1.4.0-rc.3
- v1.4.0-rc.2
- v1.4.0-rc.1
- v1.3.1-rc.1
- v1.3.0
- v1.3.0-rc.5
- v1.3.0-rc.4
- v1.3.0-rc.3
- v1.3.0-rc.2
- v1.3.0-rc.1
- v1.2.1-rc.5
- v1.2.1-rc.4
- v1.2.1-rc.3
- v1.2.1-rc.2
- v1.2.1-rc.1
- v1.2.0
- v1.2.0-rc.14
- v1.2.0-rc.13
- v1.2.0-rc.12
- v1.2.0-rc.11
- v1.2.0-rc.10
- v1.2.0-rc.9
- v1.2.0-rc.8
- v1.2.0-rc.7
- v1.2.0-rc.6
- v1.2.0-rc.5
- v1.2.0-rc.4
- v1.2.0-rc.3
- v1.2.0-rc.2
- v1.2.0-rc.1
- v1.1.1
- v1.1.1-rc.1
- v1.1.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-next
- dev-release
- dev-t3v13
This package is auto-updated.
Last update: 2025-10-10 18:45:47 UTC
README
GSB 11 Extension gsb_solr
About
The extension gsb_solr
extends the standard solr
extension to make it work in the context of gsb11.
It provides a custom PageIndexerRequest
object that does not use an external http request to fill the solr index. This is necessary due to limitations in the hosting environment.
also the TitleTagSearchViewHelper adds te Searchword to the title tag.
Installation
The best way to install this extension is to start with the GSB Sitepackage Kickstarter extension.
Quick installation without GSB Sitepackage Kickstarter
In a composer-based TYPO3 installation you can install the extension EXT:gsb_solr via composer:
composer config -g gitlab-domains gitlab.opencode.de && \
composer config -g repositories.gsb-solr vcs https://gitlab.opencode.de/bmi/government-site-builder-11/extensions/gsb_solr.git
composer require itzbund/gsb-solr
Upgrade Wizard
There is TYPO3 upgrade wizard gsbsolr_verifyConfigurationWizard
to add essential configuration for solr to work. The official documentation for TYPO3 describes how you can run an upgrade wizard.
This upgrade wizard will
- Add scheduler task for reindexing each site and working the solr queue
- Add the typoscript configuration for
EXT:gsb_solr
to root templates
Configuration
To set up the TypoScript configuration with sane defaults include the GSB Solr Package
TypoScript record in your websites root Template Record. There is an upgrade wizard that setups up this configuration if it is missing.
Typoscript: allowedSites
⚠️ Warning: if
allowedSites
are not configured properly solr will seem eratic: you might see no search results, ever,you might see search results that don't change when content is changed. You cannot delete any index in the solr server from the backend except for the index for (primary) frontend domains either.
If your site is being served on different domains for backend and frontend it's best to add the frontend domain explicitly to the root plugin.tx_solr.search.query.allowedSite typoscript configuration, e.g.:
plugin.tx_solr.search.query.allowedSites = frontend.domain.de
otherwise if indexing for frontend.domain.de
the index will not be available to users of the backend domain. This is due to EXT:solr siteHash
mechanism and the default value __current_site
.
If you add both the backend and the frontend domain you might see duplicate results, depending on how the indexing was triggered (backend vs cli/task).
⚠️ Note:
allowedSites
is configured automatically when usingEXT:gsb_solr
to use the primary (non-variant) domain of a site (which can differ from what__current_site
means). If you want to configure it differently, you have to do it explicitly in Typoscript (e.g. for search accross sites in a multi-site setup)
Scheduler Tasks
For the EXT:solr
to work properly in TYPO3 you need to set up at least one scheduler task (Index Queue Worker and Force Re-Indexing of a site).
Take a good look at the scheduler task documentation for solr.
⚠️ Warning: The worker should only be configured to index 5-10 documents per run. This is due to our indexer needing a lot of memory as everything is processed in the same request context.
Extension configuration: Indexer modes
This extension provides three indexer modes, which can be configured in the extension settings
⚠️ Note: on readonly systems this can only be configured via environment variables
Indexer mode | Description |
---|---|
use_internal_subrequests | default in GSB11 context: uses lots of memory, because no real HTTP request is ever used. Instead subrequests are used, similar to the error handler of the TYPO3 core. |
use_self_with_host_header | similar to the 'default' implementation, but doesn't use DNS resolution and will always go against 127.0.0.1. Has some benefits in restricted environments because DNS can be flacky; will only work if the current (usually CLI) system also has the web server running (which it might not) |
default | the default EXT:solr implementation |
Feature Flags
This document explains how to use feature flags. We separate between two different kinds of feature flags:
Feature
Feature flags allow you to enable or disable specific features in your installation. \ This is of particular importance to disable features that have not passed the approval process.
Optional
Optional flags allow you to (de-)activate specific features for your installation. \ A practical use for these is the (de-)activation of an extension.
For more information about feature flags in TYPO3, please refer to the official TYPO3 Documentation on Feature Flags.
Feature Flag Configuration
Feature and Optional flags are configured in the .env
or the local-dev/.ddev/docker-compose.environment.yaml
file on ddev machine. To add a feature flag, use the following syntax:
# FEATURE FLAG
- TYPO3__SYS__features__GSB11_FEATURE_123_NEW_FEATURE=%const(bool:true)%
# OPTIONAL FLAG
- TYPO3__SYS__features__GSB11_OPTION_123_ENABLE_EXTENSION=%const(bool:true)%
In this example, both feature flags, GSB11_FEATURE_123_NEW_FEATURE
and GSB11_OPTION_123_ENABLE_EXTENSION
,
are set to true
. To disable the feature, change the value to false
or delete the setting.
Feature Flag Truth Table
This table illustrates the behavior of feature flags in various states.
Feature Flag State | Evaluated Value | Description |
---|---|---|
featureFlag = true | true | The feature is explicitly enabled. |
featureFlag = false | false | The feature is explicitly disabled. |
featureFlag = '' | false | An empty value is treated as false . |
featureFlag not exist | false | A non-existent flag defaults to false . |
Usage in PHP Code
To use a feature flag in your PHP code, you can check the flag's value with the isFeatureEnabled()
method of the Features
class:
if (GeneralUtility::makeInstance(Features::class)->isFeatureEnabled('GSB11_FEATURE_123_NEW_FEATURE')) {
echo 'Feature is enabled';
// Feature-specific code
...
}
Usage in Fluid Templates
Feature flags can also be checked in your Fluid templates with TYPO3's Feature ViewHelper.
Basic usage
<f:feature name="GSB11_FEATURE_123_NEW_FEATURE">
This is being shown if the flag is enabled
</f:feature>
Feature > then > else
<f:feature name="GSB11_OPTION_123_ENABLE_EXTENSION">
<f:then>
Flag is enabled
</f:then>
<f:else>
Flag is undefined or not enabled
</f:else>
</f:feature>
Current feature flags of gsb_solr
Feature flag | Description |
---|---|
currently none | - |
Usage
Nothing to do.
Contribute
As with TYPO3, we encourage you to join the project by submitting changes. Development of the GSB 11 happens mainly in the GSB 11 TYPO3 extension repositories.
To get started, have a look at our detailed contribution walkthrough.