PHP API: accessing site configuration¶
Introduction¶
The PHP API for sites comes in two parts:
- Accessing the current, resolved site object
- Finding a site object / configuration via a page or identifier
The first case is relevant when we want to access the site configuration in the current request, for example, if we want to know which language is currently rendered.
The second case is about accessing site configuration options independent of the current request but based on a page ID or a site identifier.
Let us look at both cases in detail.
Accessing the current site object¶
When rendering the frontend or backend, TYPO3 builds an HTTP request object through
a PSR-15 middleware stack and enriches it with
information. Part of that information are the objects
\TYPO3\CMS\Core\Site\Entity\Site
and
\TYPO3\CMS\Core\Site\Entity\SiteLanguage
. Both objects are
available as attributes in the current
request object.
Depending on the context, there are two main ways to access them:
- via the PSR-7 HTTP request object directly - for example in a PSR-15 middleware, an Extbase controller or a user function.
- via
$GLOBALS['TYPO3_REQUEST']
- everywhere you do not have a request object.
Hint
The first method is preferred, if possible, as $GLOBALS['TYPO3_REQUEST']
was deprecated in TYPO3 v9.2 and will be removed in a future version.
Methods:
// current site
$site = $request->getAttribute('site');
// current site language
$siteLanguage = $request->getAttribute('language');
Changed in version 11.3
The Extbase request class implements the
PSR-7 \Psr\Http\Message\ServerRequestInterface
. Therefore, you can
retrieve all needed attributes from the request object.
Finding a site object with the SiteFinder
class¶
When you need to access the site configuration for a specific page ID or by a
site identifier, you can use the class \TYPO3\CMS\Core\Site\SiteFinder
.
The methods for finding a specific site throw a
\TYPO3\CMS\Core\Exception\SiteNotFoundException
, if no site was found.
API¶
- class \TYPO3\CMS\Core\Site\ SiteFinder
-
Is used in backend and frontend for all places where to read / identify sites and site languages.
- getAllSites ( bool $useCache = true)
-
Return a list of all configured sites
- param bool $useCache
-
the useCache, default: true
- returntype
-
array
- Returns:
-
Site[]
- getSiteByIdentifier ( string $identifier)
-
Find a site by given identifier
- param string $identifier
-
the identifier
- returntype
-
TYPO3\CMS\Core\Site\Entity\Site
- getSiteByPageId ( int $pageId, array $rootLine = NULL, string $mountPointParameter = NULL)
-
Traverses the rootline of a page up until a Site was found.
- param int $pageId
-
the pageId
- param array $rootLine
-
the rootLine, default: NULL
- param string $mountPointParameter
-
the mountPointParameter, default: NULL
- returntype
-
TYPO3\CMS\Core\Site\Entity\Site
The Site
object¶
A \TYPO3\CMS\Core\Site\Entity\Site
object gives access to the site
configuration options.
API¶
- class \TYPO3\CMS\Core\Site\Entity\ Site
-
Entity representing a single site with available languages
- getIdentifier ( )
-
Gets the identifier of this site, mainly used when maintaining / configuring sites.
- returntype
-
string
- getBase ( )
-
Returns the base URL of this site
- returntype
-
Psr\Http\Message\UriInterface
- getRootPageId ( )
-
Returns the root page ID of this site
- returntype
-
int
- getLanguages ( )
-
- returntype
-
array
- getAllLanguages ( )
-
- returntype
-
array
- getLanguageById ( int $languageId)
-
Returns a language of this site, given by the sys_language_uid
- param int $languageId
-
the languageId
- returntype
-
TYPO3\CMS\Core\Site\Entity\SiteLanguage
- getDefaultLanguage ( )
-
- returntype
-
TYPO3\CMS\Core\Site\Entity\SiteLanguage
- getAvailableLanguages ( TYPO3\\CMS\\Core\\Authentication\\BackendUserAuthentication $user, bool $includeAllLanguagesFlag = false, int $pageId = NULL)
-
- param TYPO3\\CMS\\Core\\Authentication\\BackendUserAuthentication $user
-
the user
- param bool $includeAllLanguagesFlag
-
the includeAllLanguagesFlag, default: false
- param int $pageId
-
the pageId, default: NULL
- returntype
-
array
- getErrorHandler ( int $statusCode)
-
Returns a ready-to-use error handler, to be used within the ErrorController
- param int $statusCode
-
the statusCode
- returntype
-
TYPO3\CMS\Core\Error\PageErrorHandler\PageErrorHandlerInterface
- getConfiguration ( )
-
Returns the whole configuration for this site
- returntype
-
array
- getSettings ( )
-
- returntype
-
TYPO3\CMS\Core\Site\Entity\SiteSettings
- getAttribute ( string $attributeName)
-
Returns a single configuration attribute
- param string $attributeName
-
the attributeName
- getRouter ( TYPO3\\CMS\\Core\\Context\\Context $context = NULL)
-
Returns the applicable router for this site. This might be configurable in the future.
- param TYPO3\\CMS\\Core\\Context\\Context $context
-
the context, default: NULL
- returntype
-
TYPO3\CMS\Core\Routing\RouterInterface
The SiteLanguage
object¶
The SiteLanguage
object is basically a simple model that represents the
configuration options of the site regarding language as an object and provides
getters for those properties.
API¶
- class \TYPO3\CMS\Core\Site\Entity\ SiteLanguage
-
Entity representing a site_language configuration of a site object.
- toArray ( )
-
Returns the SiteLanguage in an array representation for e.g. the usage in TypoScript.
- returntype
-
array
- getLanguageId ( )
-
- returntype
-
int
- getLocale ( )
-
- returntype
-
TYPO3\CMS\Core\Localization\Locale
- getBase ( )
-
- returntype
-
Psr\Http\Message\UriInterface
- getTitle ( )
-
- returntype
-
string
-
- returntype
-
string
- getWebsiteTitle ( )
-
- returntype
-
string
- getFlagIdentifier ( )
-
- returntype
-
string
- getTypo3Language ( )
-
Returns the XLF label language key, returns "default" when it is "en".
"default" is currently still needed for TypoScript label overloading. For locales like "en-US", this method returns "en_US" which can then be used for XLF file prefixes properly.
- returntype
-
string
- getHreflang ( bool $fetchCustomSetting = false)
-
Returns the RFC 1766 / 3066 language tag for hreflang tags
- param bool $fetchCustomSetting
-
the fetchCustomSetting, default: false
- returntype
-
string
- enabled ( )
-
Returns true if the language is available in frontend usage
- returntype
-
bool
- isEnabled ( )
-
Helper so fluid can work with this as well.
- returntype
-
bool
- getFallbackType ( )
-
- returntype
-
string
- getFallbackLanguageIds ( )
-
- returntype
-
array
The SiteSettings
object¶
New in version 12.1
The site settings can be retrieved using the
getSettings()
method of the Site
object, which returns a SiteSettings
object.
The object can be used to access settings either by the dot notation ("flat"), for example:
$redirectStatusCodeForRedirects = (int)$siteSettings->get('redirects.httpStatusCode', 307);
or by accessing all options for a certain group:
$allSettingsRelatedToRedirects = $siteSettings->get('redirects');
or even fetching all settings:
$siteSettings->getAll();
API¶
- class \TYPO3\CMS\Core\Site\Entity\ SiteSettings
-
Entity representing all settings for a site. These settings are not overlaid with TypoScript settings / constants which happens in the TypoScript Parser for a specific page.
- has ( string $identifier)
-
- param string $identifier
-
the identifier
- returntype
-
bool
- isEmpty ( )
-
- returntype
-
bool
- get ( string $identifier, mixed $defaultValue = NULL)
-
- param string $identifier
-
the identifier
- param mixed $defaultValue
-
the defaultValue, default: NULL
- returntype
-
mixed
- getAll ( )
-
- returntype
-
array
- getAllFlat ( )
-
- returntype
-
array
- jsonSerialize ( )
-
- returntype
-
mixed