‪TYPO3CMS  10.4
TYPO3\CMS\Core\Page\AssetCollector Class Reference
Inheritance diagram for TYPO3\CMS\Core\Page\AssetCollector:
TYPO3\CMS\Core\SingletonInterface

Public Member Functions

AssetCollector addJavaScript (string $identifier, string $source, array $attributes=[], array $options=[])
 
AssetCollector addInlineJavaScript (string $identifier, string $source, array $attributes=[], array $options=[])
 
AssetCollector addStyleSheet (string $identifier, string $source, array $attributes=[], array $options=[])
 
AssetCollector addInlineStyleSheet (string $identifier, string $source, array $attributes=[], array $options=[])
 
AssetCollector addMedia (string $fileName, array $additionalInformation)
 
 removeJavaScript (string $identifier)
 
 removeInlineJavaScript (string $identifier)
 
 removeStyleSheet (string $identifier)
 
 removeInlineStyleSheet (string $identifier)
 
 removeMedia (string $identifier)
 
 getMedia ()
 
 getJavaScripts (?bool $priority=null)
 
 getInlineJavaScripts (?bool $priority=null)
 
 getStyleSheets (?bool $priority=null)
 
 getInlineStyleSheets (?bool $priority=null)
 
 updateState (array $newState)
 
array getState ()
 

Protected Member Functions

array filterAssetsPriority (array &$assets, ?bool $priority)
 

Protected Attributes

array $javaScripts = array( )
 
array $inlineJavaScripts = array( )
 
array $styleSheets = array( )
 
array $inlineStyleSheets = array( )
 
array $media = array( )
 

Private Member Functions

 ensureAllValuesAreSerializable (array $additionalInformation)
 

Detailed Description

The Asset Collector is responsible for keeping track of

  • ‪everything within <script> tags: javascript files and inline javascript code
  • ‪inline CSS and CSS files

The goal of the asset collector is to:

  • ‪utilize a single "runtime-based" store for adding assets of certain kinds that are added to the output
  • ‪allow to deal with assets from non-cacheable plugins and cacheable content in the Frontend
  • ‪reduce the "power" and flexibility (I'd say it's a burden) of the "god class" PageRenderer.
  • ‪reduce the burden of storing everything in PageRenderer

As a side-effect this allows to:

  • ‪Add a single CSS snippet or CSS file per content block, but assure that the CSS is only added once to the output.

Note on the implementation:

  • ‪We use a Singleton to make use of the AssetCollector throughout Frontend process (similar to PageRenderer).
  • ‪Although this is not optimal, I don't see any other way to do so in the current code.

https://developer.wordpress.org/reference/functions/wp_enqueue_style/

Definition at line 43 of file AssetCollector.php.

Member Function Documentation

◆ addInlineJavaScript()

AssetCollector TYPO3\CMS\Core\Page\AssetCollector::addInlineJavaScript ( string  $identifier,
string  $source,
array  $attributes = [],
array  $options = [] 
)
Parameters
string$identifier
string$source‪JavaScript code
array$attributes‪additional HTML <script> tag attributes
array$options‪['priority' => true] means rendering before other tags
Returns
AssetCollector

Definition at line 93 of file AssetCollector.php.

References TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule().

◆ addInlineStyleSheet()

AssetCollector TYPO3\CMS\Core\Page\AssetCollector::addInlineStyleSheet ( string  $identifier,
string  $source,
array  $attributes = [],
array  $options = [] 
)
Parameters
string$identifier
string$source‪stylesheet code
array$attributes‪additional HTML <link> tag attributes
array$options‪['priority' => true] means rendering before other tags
Returns
AssetCollector

Definition at line 135 of file AssetCollector.php.

References TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule().

◆ addJavaScript()

AssetCollector TYPO3\CMS\Core\Page\AssetCollector::addJavaScript ( string  $identifier,
string  $source,
array  $attributes = [],
array  $options = [] 
)
Parameters
string$identifier
string$source‪URI to JavaScript file (allows EXT: syntax)
array$attributes‪additional HTML <script> tag attributes
array$options‪['priority' => true] means rendering before other tags
Returns
AssetCollector

Definition at line 72 of file AssetCollector.php.

References TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule().

◆ addMedia()

AssetCollector TYPO3\CMS\Core\Page\AssetCollector::addMedia ( string  $fileName,
array  $additionalInformation 
)
Parameters
string$fileName
array$additionalInformation‪One dimensional hash map (array with non numerical keys) with scalar values
Returns
AssetCollector

Definition at line 154 of file AssetCollector.php.

References TYPO3\CMS\Core\Page\AssetCollector\ensureAllValuesAreSerializable(), and TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule().

◆ addStyleSheet()

AssetCollector TYPO3\CMS\Core\Page\AssetCollector::addStyleSheet ( string  $identifier,
string  $source,
array  $attributes = [],
array  $options = [] 
)
Parameters
string$identifier
string$source‪URI to stylesheet file (allows EXT: syntax)
array$attributes‪additional HTML <link> tag attributes
array$options‪['priority' => true] means rendering before other tags
Returns
AssetCollector

Definition at line 114 of file AssetCollector.php.

References TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule().

◆ ensureAllValuesAreSerializable()

TYPO3\CMS\Core\Page\AssetCollector::ensureAllValuesAreSerializable ( array  $additionalInformation)
private

Definition at line 162 of file AssetCollector.php.

Referenced by TYPO3\CMS\Core\Page\AssetCollector\addMedia().

◆ filterAssetsPriority()

array TYPO3\CMS\Core\Page\AssetCollector::filterAssetsPriority ( array &  $assets,
?bool  $priority 
)
protected
Parameters
array$assets‪Takes a reference to prevent a deep copy. The variable is not changed (const).
bool | null$priority‪null: no filter; else filters for the given priority
Returns
‪array

Definition at line 228 of file AssetCollector.php.

Referenced by TYPO3\CMS\Core\Page\AssetCollector\getInlineJavaScripts(), TYPO3\CMS\Core\Page\AssetCollector\getInlineStyleSheets(), TYPO3\CMS\Core\Page\AssetCollector\getJavaScripts(), and TYPO3\CMS\Core\Page\AssetCollector\getStyleSheets().

◆ getInlineJavaScripts()

TYPO3\CMS\Core\Page\AssetCollector::getInlineJavaScripts ( ?bool  $priority = null)

◆ getInlineStyleSheets()

TYPO3\CMS\Core\Page\AssetCollector::getInlineStyleSheets ( ?bool  $priority = null)

◆ getJavaScripts()

TYPO3\CMS\Core\Page\AssetCollector::getJavaScripts ( ?bool  $priority = null)

◆ getMedia()

TYPO3\CMS\Core\Page\AssetCollector::getMedia ( )

Definition at line 198 of file AssetCollector.php.

References TYPO3\CMS\Core\Page\AssetCollector\$media.

◆ getState()

array TYPO3\CMS\Core\Page\AssetCollector::getState ( )
Returns
‪array

Definition at line 257 of file AssetCollector.php.

◆ getStyleSheets()

TYPO3\CMS\Core\Page\AssetCollector::getStyleSheets ( ?bool  $priority = null)

◆ removeInlineJavaScript()

TYPO3\CMS\Core\Page\AssetCollector::removeInlineJavaScript ( string  $identifier)

Definition at line 174 of file AssetCollector.php.

◆ removeInlineStyleSheet()

TYPO3\CMS\Core\Page\AssetCollector::removeInlineStyleSheet ( string  $identifier)

Definition at line 186 of file AssetCollector.php.

◆ removeJavaScript()

TYPO3\CMS\Core\Page\AssetCollector::removeJavaScript ( string  $identifier)

Definition at line 168 of file AssetCollector.php.

◆ removeMedia()

TYPO3\CMS\Core\Page\AssetCollector::removeMedia ( string  $identifier)

Definition at line 192 of file AssetCollector.php.

◆ removeStyleSheet()

TYPO3\CMS\Core\Page\AssetCollector::removeStyleSheet ( string  $identifier)

Definition at line 180 of file AssetCollector.php.

◆ updateState()

TYPO3\CMS\Core\Page\AssetCollector::updateState ( array  $newState)
Parameters
array$newState

Definition at line 246 of file AssetCollector.php.

Member Data Documentation

◆ $inlineJavaScripts

array TYPO3\CMS\Core\Page\AssetCollector::$inlineJavaScripts = array( )
protected

Definition at line 51 of file AssetCollector.php.

◆ $inlineStyleSheets

array TYPO3\CMS\Core\Page\AssetCollector::$inlineStyleSheets = array( )
protected

Definition at line 59 of file AssetCollector.php.

◆ $javaScripts

array TYPO3\CMS\Core\Page\AssetCollector::$javaScripts = array( )
protected

Definition at line 47 of file AssetCollector.php.

◆ $media

array TYPO3\CMS\Core\Page\AssetCollector::$media = array( )
protected

Definition at line 63 of file AssetCollector.php.

Referenced by TYPO3\CMS\Core\Page\AssetCollector\getMedia().

◆ $styleSheets

array TYPO3\CMS\Core\Page\AssetCollector::$styleSheets = array( )
protected

Definition at line 55 of file AssetCollector.php.