是否可以通过Extbase提供TYPO3的默认样式表?

时间:2015-09-05 17:49:37

标签: typo3 typo3-6.2.x typo3-7.x

我必须阻止在前端按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在调用任何内容之前生成页面。

1 个答案:

答案 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">';
    

当然你可以使用任何其他组合;)