0

直到 TYPO3 CMS 6.2 我一直在 extTables.php 中使用以下代码来提供 sysfolder 图标:

$TCA['pages']['columns']['module']['config']['items'][] = array('Templates', 'templates', '/fileadmin/icons/application_side_list.png');
\TYPO3\CMS\Backend\Sprite\SpriteManager::addTcaTypeIcon('pages', 'contains-templates', '/fileadmin/icons/application_side_list.png');

从 7.6 开始,代码已过时,图标由 Icon-API 提供。我对吗?所以我的问题是,是否仍然可以使用 BitmapIconProvider、SvgIconProvider 或 FontawesomeIconProvider 向后端提供 sysfolder 图标?

4

2 回答 2

1

必须修改 TYPO3 扩展以适应 TYPO3 7.5 及更高版本的需要。将 myextkey 替换为您的扩展的扩展密钥。

ext_localconf.php:

if (TYPO3_MODE == 'BE') {
    $pageType = 'myext10'; // a maximum of 10 characters

    $icons = array(
        'apps-pagetree-folder-contains-' . $pageType => 'apps-pagetree-folder-contains-myextkey.svg'
    );
    /** @var \TYPO3\CMS\Core\Imaging\IconRegistry $iconRegistry */
    $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
    foreach ($icons as $identifier => $filename) {
        $iconRegistry->registerIcon(
            $identifier,
            $iconRegistry->detectIconProvider($filename),
            array('source' => 'EXT:' . $_EXTKEY . '/Resources/Public/Icons/' . $filename)
        );
    }
}

配置/TCA/覆盖/pages.php:

<?php

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

// add folder icon
$pageType = 'myext10'; // a maximum of 10 characters
$iconReference = 'apps-pagetree-folder-contains-' . $pageType;

$addToModuleSelection = TRUE;
foreach ($GLOBALS['TCA']['pages']['columns']['module']['config']['items'] as $item) {
    if ($item['1'] == $pageType) {
        $addToModuleSelection = false;
        break;
    }
}

if ($addToModuleSelection) {
    $GLOBALS['TCA']['pages']['ctrl']['typeicon_classes']['contains-' . $pageType] = $iconReference;

    $GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = array(
        0 => 'LLL:EXT:myextkey/locallang.xml:pageModule.plugin',
        1 => $pageType,
        2 => $iconReference
    );
}

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
    $pageType,
    'Configuration/TSconfig/Page/folder_tables.txt',
    'EXT:myextkey :: Restrict pages to myextkey records'
);

本地语言.xml:

<label index="pageModule.plugin">My Extension: Table names of my extension</label>

Resources/Public/Icons/apps-pagetree-folder-contains-myextkey.svg: 扩展表的矢量图形图像文件

有关工作示例 SVG 图标,请参阅https://github.com/TYPO3/TYPO3.Icons 。

Configuration/TSconfig/Page/folder_tables.txt: 插入扩展的表名。

mod.web_list.allowedNewTables = tx_myextkey_tablename1, tx_myextkey_tablename2, tx_myextkey_tablename3
于 2017-06-26T16:55:30.547 回答
1

是的,这应该使用IconRegistry核心类工作:

ext_localconf.php:

if (TYPO3_MODE === 'BE') {
    /** @var \TYPO3\CMS\Core\Imaging\IconRegistry $iconRegistry */
    $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
    $iconRegistry->registerIcon(
        'apps-pagetree-folder-contains-templates',
        \TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider::class,
        ['source' => 'EXT:myext/Resources/Public/Icons/application_side_list.png']
    );
}

ext_tables.php:

if (TYPO3_MODE === 'BE') {
    $GLOBALS['TCA']['pages']['columns']['module']['config']['items'][] = [
        0 => 'Templates',
        1 => 'templates',
        2 => 'apps-pagetree-folder-contains-templates'
    ];
}
于 2016-06-07T23:47:07.590 回答