TYPO3在页面属性中添加新标签

时间:2018-10-30 16:06:03

标签: typo3 typo3-9.x

我浪费了整整一天的时间来实现这一目标: 我想做的是向页面属性添加一个新标签(让我们称之为附加链接)。 并且此选项卡将包含IRRE项目,以向每个页面添加链接 所以我创建了一个新表:

ext_tables

CREATE TABLE links(
    uid int(11) NOT NULL auto_increment,
    link varchar(255) DEFAULT '' NOT NULL,
    PRIMARY KEY (uid)
);

然后我将新文件添加到TCA / Overrides / links.php

links.php

<?php
if (!defined('TYPO3_MODE')) {
    die ('Access denied.');
}

$GLOBALS['TCA']['links'] = array(
    'ctrl' => array(
        'label' => 'links',
        'title' => 'extralinks',
    ),
    'interface' => '',
    'columns' => array(
        'link' => array(
            'label' => 'extralinks',
            'exclude' => true,
            'config' => array(
                'type' => 'input',
                'size' => 50,
                'max' => 255,
                'eval' => 'trim'
            )
        )
    ),
    'types' => [
        '0' => [
            'showitem' => '
                --div--;;LLL:extralinks,
                link
            '
        ]
    ],
    'palettes' => 'extralinks'
);

$linksColumns = array(
    'extralinks' => array(
        'exclude' => true,
        'label' => 'extralinks',
        'config' => array(
            'type' => 'inline',
            'foreign_table' => 'links',
            'maxitems' => 30,
            'appearance' => [
                'collapseAll' => 1,
                'expandSingle' => 1,
            ],
        )
    )
);

现在在同一文件的末尾,我需要添加它以具有表,因此我将执行以下操作:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('pages', '--div--;Extra links,extralinks;;;;1-1-1', '');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('pages', $linksColumns);

当我进行此操作时,新选项卡将包含新项,但是当我尝试添加链接时,我会收到一条错误消息,提示Extralinks不是页面表中的列-这是可以理解的

所以当我尝试这个

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('links', '--div--;Extra links,extralinks;;;;1-1-1', '');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('links', $linksColumns);

现在我什至都看不到选项卡... 我该如何实现?

p.s

  • 忘记命名的不同了,我很确定那不是问题
  • 我正在使用typo3-cms 9.5

1 个答案:

答案 0 :(得分:0)

首先,如@Heinz Schilling所说,您必须将字段定义放入TCA/Overrides/pages.php中。

还必须在页面表中放置一个“ counter”字段,以便TYPO3知道您在此页面中有不受欢迎的元素。

您必须在ext_tables.sql中输入以下内容:

CREATE TABLE pages (
    extralinks int(11) unsigned DEFAULT '0' NOT NULL,
);