如何在 TYPO3 7.6 中启用 header_position

How to enable header_position in TYPO3 7.6

在 TYPO3 7.6 之前的版本中,您可以 select 在您的内容元素中为您的 header 定位(我记得是左、中、右)。

tt_content header_position 中用于存储该信息的字段仍然可用。

但是,它不会出现在后台。 我还使用 fluid_styled_content 来呈现我的内容,并且 Header 部分不包含对位置的任何引用,仅包含对布局字段的引用。

我的问题是:如何重新启用该字段并使用它来定位我的 header?

数据库字段header_position只包含在TYPO3核心扩展css_styled_content中。如果您没有安装该扩展,则数据库中的字段可能存在,因为它之前安装过。

不建议并行安装 css_styled_content 和 fluid_styled_content,因为某些选项可能会发生冲突。

如果您想使用 fluid_styled_content 并使 header_position 字段可用,最好的方法是自己创建一个非常小的 TYPO3 扩展,其中包含必要的 SQL 定义对于列 header_position,该列的适当 TCA 配置和一些 TypoScript 到 extend/override fluid_styled_content 的“部分”路径。

您必须构建一个可以重新启用该字段的快速扩展。您需要创建如下文件夹和文件: your_ext/Configuration/TCA/Overrides/tt_content.php 该文件的内容是:

use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
ExtensionManagementUtility::addTCAcolumns('tt_content',[
    'header_position' => [
            'exclude' => 1,
            'label' => 'LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tt_content.header_position',
            'config' => [
                    'type' => 'select',
                    'renderType' => 'selectSingle',
                    'items' => [
                            ['LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tt_content.header_position.left', 'left'],
                            ['LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tt_content.header_position.right', 'right'],
                            ['LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tt_content.header_position.center', 'center']
                    ]
            ]
    ]   
]);

ExtensionManagementUtility::addFieldsToPalette('tt_content', 'header', '--linebreak--,header_position', 'after:header_layout');

ExtensionManagementUtility::addFieldsToPalette('tt_content', 'headers', '--linebreak--,header_position', 'after:header_layout');

现在该字段应该回到后端,因为您已经通过 addTCAColumns 将其添加到 TCA 到 tt_content 配置并通过 addFieldsToPalette 添加到 headerheaders[= tt_content 的 91=] 个调色板,由 textmediaheader[ 类型使用=91=]。 您可以使用 TYPO3 后端中的配置模块了解更多相关信息。当您以管理员身份登录时,您可以看到它。 TCA 参考资料也是查看和了解 TCA 的好地方:https://docs.typo3.org/typo3cms/TCAReference/

现在您需要更改 fluid_styled_content 模板。您需要为 fluid_styled_content.

的 header 部分创建模板覆盖

首先创建一个文件夹:your_ext/Configuration/TypoScript并添加一个setup.txt和一个 constants.txt 文件。 在 setup.txt 中添加以下行:

lib.fluidContent{
    templateRootPaths{
         10 = {$plugin.your_ext.view.fluid_styled_content.templateRootPath}
    }
    partialRootPaths{
         10 = {$plugin.your_ext.view.fluid_styled_content.partialRootPath}
    }
    layoutRootPaths{
        10 = {$plugin.your_ext.view.fluid_styled_content.layoutRootPath}
    }
}

constants.txt中做:

plugin.your_ext{
    view{
        fluid_styled_content{
            templateRootPath = EXT:your_ext/Resources/Private/FluidStyledContent/Templates/
            partialRootPath = EXT:your_ext/Resources/Private/FluidStyledContent/Partials/
            layoutRootPath = EXT:your_ext/Resources/Private/FluidStyledContent/Layouts/
        }
    }
}

要启用您的 TypoScript,您需要在 your_ext 文件夹中添加 ext_tables.php 并为其提供以下内容 one-liner:

TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY,'Configuration/TypoScript', 'Your Ext Template');

您需要通过模板模块将静态 TypoScript 包含到您的页面中,以启用对 fluid_styled_content

的更改

现在您可以从

复制您需要的模板

typo3/sysext/fluid_styled_content/Resources/Private/Templates

typo3/sysext/fluid_styled_content/Resources/Private/Partials

typo3/sysext/fluid_styled_content/Resources/Private/Layouts

到您需要创建的扩展文件夹中:

your_ext/Resources/Private/FluidStyledContent/Templates

your_ext/Resources/Private/FluidStyledContent/Partials

your_ext/Resources/Private/FluidStyledContent/Layouts

现在您可以更改模板了。对于您的 header_position 字段,您可能只需要复制

typo3/sysext/fluid_styled_content/Resources/Private/Partials/Heaeder.html

your_ext/Resources/Private/FluidStyledContent/Partials/Header.html

并将您选择的值添加为 {data.header_position} 到 div class 并设置样式。

请记住,您不需要复制所有模板,因为使用 TypoScript,您刚刚为 fluid 定义了另一个位置来搜索模板并获取它们,如果它们可用。如果不是,fluid 将返回链并获取在位置 9 和更低位置定义的模板。您可以通过模板模块查看 TypoScript Object Browser 并查看 TypoScript 变量 lib.FluidContent 以查看,如果您的 TypoScript include 有效。

希望对您有所帮助 ;)