我必须阻止在前端按style=""
属性加载背景,但仍需要能够从cms设置背景图像。
TYPO3有一个默认样式表(例如typo3temp/stylesheet_[hash].css?[timestamp]
用于加载由TypoScript注册的CSS:
plugin.tx_myext._CSS_DEFAULT_STYLE (
.css {}
)
但是可以从Extbase Controller扩展这个css文件吗?
不幸的是\TYPO3\CMS\Core\Page\PageRenderer
没有这样的功能。
我也尝试过:
$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_myext.']['_CSS_DEFAULT_STYLE'] = 'body {display:none}';
但似乎\TYPO3\CMS\Frontend\Page\PageGenerator
在调用任何内容之前生成页面。
答案 0 :(得分:1)
您可以将其添加到$GLOBALS['TSFE']->additionalHeaderData
数组,它会将任何内容添加到HTML文档的head
部分,只需确保使用的索引唯一!,这样您就拥有了两个灵魂:
一个是直接添加样式,如:
$GLOBALS['TSFE']->additionalHeaderData['tx_yourext_styles_for_action_foo_bar']
.= '<style>body {background: orange;}</style>';
第二种是相同的技术,但在更好的版本中,假设您有专用的typeNum
- 1234
,它为独立生成给定页面的样式表文件样式表文件,因此您可以通常包含它:
$cssUrl = 'index.php?id=' . $GLOBALS['TSFE']->id . '&type=1234';
$GLOBALS['TSFE']->additionalHeaderData['tx_yourext_styles_for_action_foo_bar']
.= '<link rel="stylesheet" type="text/css" href="' . $cssUrl . '" media="all">';
当然你可以使用任何其他组合;)