在TYPO3中添加自定义页面配置字段

4

请帮忙,

我使用Builder扩展创建了一个扩展。 在扩展中,我包含了一个简单的Fluid页面模板。

然后我按照这篇文章中的描述添加了一个自定义页面设置字段。

(1. 在ext_tables.sql中添加DB字段; 2. 在extTables.php中添加TCA定义)

不幸的是,没有出现任何字段。我尝试了所提议的方法(ext_tables.sql):

$tmp_itm_extended_columns_pages = array(
    'customTemplateClass' => array(
        'exclude' => 0,.....

以及来自realurl的版本:

$TCA['pages']['columns'] += array(
    'customTemplateClass' => array(
        'label' => 'customTemplateClass'...

我不知道如何设置自定义页面,是否与流体页面模板相结合存在问题?
谢谢帮助 Mathias
2个回答

7

为扩展添加自定义页面配置文本字段。

以下是我在流体模板扩展中实现自定义字段的方法,准备用于页面级别滑动:

1.) 定义自定义文本字段: myExt/ext_tables.php

$TCA['pages']['columns'] += array(
    'customTemplateClass' => array(
        'label' => 'Custom Template Class',
        'exclude' => 1,
        'config' => array (
            'type' => 'input',
            'max' => 255,
            'eval' => 'trim,nospace,lower'
        ),
    ),
);

2.) 将字段添加到 TCA 类型配置中:

myExt/ext_tables.php

t3lib_extMgm::addToAllTCAtypes (
    'pages',
    'customTemplateClass'
);

3.) 写入自定义字段到数据库:

myExt/ext_tables.sql

CREATE TABLE pages (
    customTemplateClass varchar(255) DEFAULT '' NOT NULL
);

4.) 在页面级别滑动中添加自定义字段到rootlinefields:

myExt/ext_localconf.php

$rootlinefields = &$GLOBALS["TYPO3_CONF_VARS"]["FE"]["addRootLineFields"];
if($rootlinefields != '')
{
    $rootlinefields .= ' , ';
}
$rootlinefields .= 'customTemplateClass';

5.) 获取当前页面的自定义类,如果为空则获取父页面的自定义类: TypoScript:

lib.pageconfig {
    customTemplateClass = TEXT
    customTemplateClass {
        value = default
        override {
           required = 1
           data = levelfield : -1 , customTemplateClass, slide  
        }
    }
}

6.) Fluid模板文件中的输出:

{f:cObject(typoscriptObjectPath: 'lib.pageconfig.customTemplateClass')}

5
对于 TYPO3 7 的一些建议是使用 ExtensionManagementUtility::addTCAcolumns(而不是 +=),并使用 Configuration/TCA/Overrides/pages.php 替代 ext_tables.php。官方示例(但没有滑动):https://docs.typo3.org/typo3cms/TCAReference/ExtendingTca/Examples/Index.html。 - Thomas Luzat
我在Typo3 v8.7版本上遇到了同样的问题,需要采取相同的步骤吗?我应该使用什么来为具有子页面幻灯片的页面添加自定义字段? - Mohamed Masmoudi

3
你需要将该字段添加到“pages”表的TCA类型配置中,以便显示出来。可以使用一个实用工具方法将其添加到所有已配置的类型中。有关更多信息,请参见TCA类型配置实用工具方法。请注意,不要删除任何HTML标签。

太好了,这个完美地运作了。 请看下一个答案,了解我是如何做到的。 - mcm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接