如何在 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 添加到 header 和 headers[= tt_content 的 91=] 个调色板,由 textmedia 和 header[ 类型使用=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 有效。
希望对您有所帮助 ;)
在 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 添加到 header 和 headers[= tt_content 的 91=] 个调色板,由 textmedia 和 header[ 类型使用=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 有效。
希望对您有所帮助 ;)