Files
gh-netresearch-claude-code-…/references/v13-deprecations.md
2025-11-30 08:43:22 +08:00

10 KiB

TYPO3 v13 Deprecations and Modern Alternatives

Sources: TYPO3 Core API Reference v13.4 Purpose: Track v13 deprecations, migration paths, and modern configuration approaches

Deprecated Files (v13.1+)

ext_typoscript_constants.typoscript

Status: DEPRECATED since TYPO3 v13.1

Purpose: Provided global TypoScript constants

Migration Paths:

1. Preferred: Site Settings Definitions

# Configuration/Sets/MySet/settings.definitions.yaml
settings:
  myext:
    itemsPerPage:
      type: int
      default: 10
      label: 'Items per page'

2. For Global Constants:

// ext_localconf.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript(
    'my_extension',
    'constants',
    '@import "EXT:my_extension/Configuration/TypoScript/constants.typoscript"'
);

Detection:

[ -f "ext_typoscript_constants.typoscript" ] && echo "⚠️  DEPRECATED: Migrate to Site sets"

Impact: "This file takes no effect in sites that use Site sets."


ext_typoscript_setup.typoscript

Status: DEPRECATED since TYPO3 v13.1

Purpose: Provided global TypoScript setup

Migration Paths:

1. Preferred: Site Sets

# Configuration/Sets/MySet/config.yaml
name: my-vendor/my-set
label: 'My Extension Set'

imports:
  - { resource: 'EXT:fluid_styled_content/Configuration/Sets/FluidStyledContent/config.yaml' }
# Configuration/Sets/MySet/setup.typoscript
plugin.tx_myextension {
    settings {
        itemsPerPage = 10
    }
}

2. For Global Loading:

// ext_localconf.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript(
    'my_extension',
    'setup',
    '@import "EXT:my_extension/Configuration/TypoScript/setup.typoscript"'
);

Detection:

[ -f "ext_typoscript_setup.typoscript" ] && echo "⚠️  DEPRECATED: Migrate to Site sets"

Impact: "This file takes no effect in sites that use Site sets. This file works for backward compatibility reasons only in installations that depend on TypoScript records only."


Deprecated Methods (Removal in v14)

ExtensionManagementUtility::addUserTSConfig()

Status: DEPRECATED, will be removed with TYPO3 v14.0

Old Approach:

// ext_localconf.php - DEPRECATED
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('
    options.pageTree.showPageIdWithTitle = 1
    options.defaultUploadFolder = 1:/user_uploads/
');

Modern Approach:

# Configuration/user.tsconfig
options.pageTree.showPageIdWithTitle = 1
options.defaultUploadFolder = 1:/user_uploads/

Detection:

grep "addUserTSConfig" ext_localconf.php && echo "❌ DEPRECATED: Use Configuration/user.tsconfig"

Modern Configuration Files (v12+)

Configuration/user.tsconfig

Since: TYPO3 v12 Purpose: User TSconfig loaded for all backend users

Location: Configuration/user.tsconfig

Example:

# Default user settings
options.pageTree.showPageIdWithTitle = 1
options.defaultUploadFolder = 1:/user_uploads/

# Hide modules
options.hideModules = web_layout, web_info

Validation:

[ -f "Configuration/user.tsconfig" ] && echo "✅ Modern user TSconfig" || echo "⚠️  Consider adding user TSconfig"

Configuration/page.tsconfig

Since: TYPO3 v12 Purpose: Page TSconfig loaded globally

Location: Configuration/page.tsconfig

Example:

# Default page configuration
TCEFORM.pages.layout.disabled = 1
TCEMAIN.table.pages.disablePrependAtCopy = 1

# Backend layout
mod.web_layout.BackendLayouts {
    standard {
        title = Standard Layout
        icon = EXT:my_ext/Resources/Public/Icons/layout.svg
        config {
            backend_layout {
                colCount = 2
                rowCount = 1
                rows {
                    1 {
                        columns {
                            1 {
                                name = Main
                                colPos = 0
                            }
                            2 {
                                name = Sidebar
                                colPos = 1
                            }
                        }
                    }
                }
            }
        }
    }
}

Validation:

[ -f "Configuration/page.tsconfig" ] && echo "✅ Modern page TSconfig" || echo "⚠️  Consider adding page TSconfig"

Modern Backend Configuration (v13)

Configuration/Backend/Modules.php

Since: TYPO3 v13.0 Purpose: Backend module registration (replaces ext_tables.php)

Location: Configuration/Backend/Modules.php

Example:

<?php

return [
    'web_myext' => [
        'parent' => 'web',
        'position' => ['after' => 'web_list'],
        'access' => 'user',
        'workspaces' => 'live',
        'path' => '/module/web/myext',
        'labels' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_mod.xlf',
        'extensionName' => 'MyExt',
        'controllerActions' => [
            \Vendor\MyExt\Controller\BackendController::class => [
                'list',
                'detail',
                'update',
            ],
        ],
    ],
];

Old Approach (DEPRECATED):

// ext_tables.php - DEPRECATED
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
    'MyExt',
    'web',
    'mymodule',
    'after:list',
    [
        \Vendor\MyExt\Controller\BackendController::class => 'list,detail,update',
    ],
    [
        'access' => 'user,group',
        'labels' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_mod.xlf',
    ]
);

Migration Script: TYPO3 provides "Check TCA in ext_tables.php" upgrade tool

Validation:

[ -f "Configuration/Backend/Modules.php" ] && echo "✅ Modern backend modules" || echo "⚠️  Check for modules in ext_tables.php"

Configuration/Sets Structure

Configuration/Sets/
└── MySet/
    ├── config.yaml (REQUIRED)
    ├── settings.definitions.yaml
    ├── setup.typoscript
    ├── constants.typoscript (optional)
    ├── page.tsconfig
    └── user.tsconfig

config.yaml (Required)

name: my-vendor/my-set
label: 'My Extension Configuration Set'

# Dependencies
imports:
  - { resource: 'EXT:fluid_styled_content/Configuration/Sets/FluidStyledContent/config.yaml' }

# Settings with defaults
settings:
  myext:
    itemsPerPage: 10
    showImages: true

settings.definitions.yaml

settings:
  myext:
    itemsPerPage:
      type: int
      default: 10
      label: 'Items per page'
      description: 'Number of items displayed per page in list view'

    showImages:
      type: bool
      default: true
      label: 'Show images'
      description: 'Display images in list view'

    templateLayout:
      type: string
      default: 'default'
      label: 'Template layout'
      enum:
        default: 'Default Layout'
        grid: 'Grid Layout'
        list: 'List Layout'

setup.typoscript

plugin.tx_myextension {
    view {
        templateRootPaths.0 = EXT:my_extension/Resources/Private/Templates/
        partialRootPaths.0 = EXT:my_extension/Resources/Private/Partials/
        layoutRootPaths.0 = EXT:my_extension/Resources/Private/Layouts/
    }

    settings {
        itemsPerPage = {$settings.myext.itemsPerPage}
        showImages = {$settings.myext.showImages}
    }
}

Activation in Site Configuration

# config/sites/mysite/config.yaml
base: 'https://example.com/'
rootPageId: 1
sets:
  - my-vendor/my-set  # Activates the set

Migration Checklist

For v12 → v13 Migration

  • Move backend module registration from ext_tables.php to Configuration/Backend/Modules.php
  • Replace addUserTSConfig() with Configuration/user.tsconfig
  • Move page TSconfig from ext_localconf.php to Configuration/page.tsconfig
  • Deprecate ext_typoscript_constants.typoscript (use Site sets)
  • Deprecate ext_typoscript_setup.typoscript (use Site sets)

For Modern v13 Extensions

  • Use Configuration/Sets/ for TypoScript configuration
  • Use settings.definitions.yaml for extension settings
  • Use Configuration/Backend/Modules.php for backend modules
  • Use Configuration/user.tsconfig for user TSconfig
  • Use Configuration/page.tsconfig for page TSconfig
  • Use Configuration/Icons.php for icon registration

Validation Commands

#!/bin/bash
# check-v13-deprecations.sh

echo "=== Checking for TYPO3 v13 Deprecations ==="
echo ""

# Check deprecated files
if [ -f "ext_typoscript_constants.typoscript" ]; then
    echo "⚠️  DEPRECATED: ext_typoscript_constants.typoscript (v13.1)"
    echo "   → Migrate to Configuration/Sets/ with settings.definitions.yaml"
fi

if [ -f "ext_typoscript_setup.typoscript" ]; then
    echo "⚠️  DEPRECATED: ext_typoscript_setup.typoscript (v13.1)"
    echo "   → Migrate to Configuration/Sets/ with setup.typoscript"
fi

# Check deprecated methods
if grep -q "addUserTSConfig" ext_localconf.php 2>/dev/null; then
    echo "❌ DEPRECATED: addUserTSConfig() - Removal in v14"
    echo "   → Use Configuration/user.tsconfig"
fi

# Check for backend modules in ext_tables.php
if grep -q "registerModule" ext_tables.php 2>/dev/null; then
    echo "⚠️  DEPRECATED: Backend modules in ext_tables.php"
    echo "   → Migrate to Configuration/Backend/Modules.php"
fi

# Check modern files presence
echo ""
echo "=== Modern Configuration Files ===" [ -d "Configuration/Sets" ] && echo "✅ Configuration/Sets/ present" || echo "⚠️  Consider adding Site sets"
[ -f "Configuration/user.tsconfig" ] && echo "✅ Configuration/user.tsconfig present"
[ -f "Configuration/page.tsconfig" ] && echo "✅ Configuration/page.tsconfig present"
[ -f "Configuration/Backend/Modules.php" ] && echo "✅ Configuration/Backend/Modules.php present"

echo ""
echo "Deprecation check complete"

Quick Reference Matrix

Old Approach Modern Approach (v13) Status
ext_typoscript_constants.typoscript Configuration/Sets/*/settings.definitions.yaml Deprecated v13.1
ext_typoscript_setup.typoscript Configuration/Sets/*/setup.typoscript Deprecated v13.1
addUserTSConfig() in ext_localconf.php Configuration/user.tsconfig Removal in v14
Page TSconfig in ext_localconf.php Configuration/page.tsconfig Modern v12+
registerModule() in ext_tables.php Configuration/Backend/Modules.php Modern v13+
Static files in ext_tables.php Configuration/TCA/Overrides/sys_template.php Modern
TCA in ext_tables.php Configuration/TCA/*.php Modern