1

我必须防止通过style=""前端的属性加载背景,但仍然需要能够从 cms 设置背景图像。

TYPO3 有一个默认样式表(例如typo3temp/stylesheet_[hash].css?[timestamp],用于加载由 TypoScript 注册的 CSS:

plugin.tx_myext._CSS_DEFAULT_STYLE (
    .css {}
)

但是是否可以从 Extbase 控制器扩展这个 css 文件?

可惜\TYPO3\CMS\Core\Page\PageRenderer没有这样的功能。

我也试过:

$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_myext.']['_CSS_DEFAULT_STYLE'] = 'body {display:none}';

但似乎在\TYPO3\CMS\Frontend\Page\PageGenerator调用任何内容之前生成页面。

4

1 回答 1

1

您可以将其添加到$GLOBALS['TSFE']->additionalHeaderData数组中,它会将任何内容添加到headHTML 文档的部分,只需确保使用的索引是唯一的!所以你有两个灵魂:

  • 一种是将样式直接添加到头部,例如:

    $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">';
    

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

于 2015-09-05T20:53:09.657 回答