Appendix A – PHP include scripts¶
Including your script¶
This section should give you some pointers on what you can process in your script and which functions and variables you can access.
Your script is included inside the class "ContentObjectRenderer" in the
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
script. Thereby your file is a part of this object
(ContentObjectRenderer). This is why you must return all
content in the variable "$content" and any TypoScript configuration is
available from the array "$conf" (it may not be set at all though, so
check it with is_array()!)
$content¶
Contains the content, which was passed to the object, if any. All content, which you want to return, must be in this variable!
Remember, don't output anything (but debug code) directly in your script!
$conf¶
The array $conf contains the configuration for the USER cObject. Try debug($conf) to see the content printed out for debugging!
White spaces¶
Because nothing is sent off to the browser before everything is
rendered and returned to \TYPO3\CMS\Frontend\Http\RequestHandler
(which originally set off the rendering process), you must ensure
that there's no whitespace before your <?php
tag
in your include or library scripts! You should not use the closing PHP tag
?>
.
$GLOBALS['TSFE']->set_no_cache()¶
Call the function $GLOBALS['TSFE']->set_no_cache()
, if you want to
disable caching of the page. Call this during development only! And
call it, if the content you create may not be cached.
Note: If you make a syntax error in your script that keeps PHP
from executing it, then the $GLOBALS['TSFE']->set_no_cache()
function is not executed and the page is cached! So in these
situations, correct the error, clear the page-cache and try again.
This is true only for USER
and not for USER_INT
, which is
rendered after the cached page!
Example:¶
$GLOBALS['TSFE']->set_no_cache();
$this->cObjGetSingle(value, properties[, TSkey = '__'])¶
Gets a content object from the $conf array. $TSkey is an optional string label used for the internal debugging tracking.
Example:¶
$content = $this->cObjGetSingle($conf['image'], $conf['image.'], 'My Image 2');
This would return any IMAGE cObject at the property "image" of the $conf array for the include script!
$this->stdWrap(value, properties)¶
Hands the content in "value" to the stdWrap function, which will process it according to the configuration of the array "properties".
Example:¶
$content = $this->stdWrap($content, $conf['stdWrap.']);
This will stdWrap the content with the properties of ".stdWrap" of the $conf array!
Internal variables in the main frontend object, TSFE¶
There are some variables in the global object, TSFE (TypoScript
Frontend), you might need to know about. These ARE ALL READ-ONLY!
(Read: Do not change them!) See the class
\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
for the
full descriptions.
You can retrieve the TypoScriptFrontendController
via the
request attribute
frontend.controller.
For instance, if you want to access the variable id
, you can do so by
writing: TypoScriptFrontendController->id
.
Variable
id
Changed in version 13.0: The property has been marked as read-only. Use
$request->getAttribute('frontend.page.information')->getId()
instead. See Frontend page information.
PHP-Type
integer
Description
The page id
Variable
type
Changed in version 13.0: The property has been removed with TYPO3 v13.0.
Migration
When using this property in PHP code via $GLOBALS['TSFE']->type
,
it is recommended to move to the
PSR-7 request via
$request->getAttribute('routing')->getPageType()
.
Variable
page
Changed in version 13.0: The property has been marked as read-only. Use
$request->getAttribute('frontend.page.information')->getPageRecord()
instead. See Frontend page information.
PHP-Type
array
Description
The page record
Variable
fe_user
Changed in version 13.0: The variable has been removed with TYPO3 v13.
Migration
There are two possible migrations.
First, a limited information list of frontend user details can be
retrieved using the Context aspect
frontend.user
in frontend calls. See class
\TYPO3\CMS\Core\Context\UserAspect
for a full list. The current
context can be retrieved using
dependency injection.
Example:
use TYPO3\CMS\Core\Context\Context;
final class MyExtensionController {
public function __construct(
private readonly Context $context,
) {}
public function myAction() {
$frontendUserUsername = $this->context->getPropertyFromAspect(
'frontend.user',
'username',
''
);
}
}
Additionally, the full \TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication
object is available as request attribute
frontend.user
in the frontend. Note some details of that object are marked
@internal
, using the context aspect is thus the preferred way.
Example of an extension using the Extbase's ActionController
:
final class MyExtensionController extends ActionController {
public function myAction() {
// Note the 'user' property is marked @internal.
$frontendUserUsername = $this->request
->getAttribute('frontend.user')->user['username'];
}
}
Variable
rootLine
Changed in version 13.0: The property has been marked as read-only. Use
$request->getAttribute('frontend.page.information')->getRootLine()
instead. See Frontend page information.
PHP-Type
array
Description
The root line (all the way to tree root, not only the current site!).
The current site root line is available via
$request->getAttribute('frontend.page.information')->getLocalRootLine()
.
See Frontend page information.
In TYPO3 versions before v13 the current site root line was only available
via \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->config['rootLine']
.
Variable
sys_page
Changed in version 13.0: The property has been marked as read-only. Avoid usages altogether,
create own instances of the
\TYPO3\CMS\Core\Domain\Repository\PageRepository
when needed.
PHP-Type
object
Description
The object with page functions (object) See
EXT:core/Classes/Domain/Repository/PageRepository.php
.
Global variables¶
Variable
BE_USER
PHP-Type
object
Description
The backend user object (if any).
Default
not set
Variable
TYPO3_CONF_VARS
PHP-Type
array
Description
TYPO3 Configuration.
Variable
TSFE
PHP-Type
object
Description
Main frontend object. Whenever possible, use the request attribute frontend.controller instead.