Back to top Back to top
Light Dark

TYPO3 8.7 Pibase

Frontend: Neuen Controller (Classes/Controller/) erstellen. Namespace Vendor\ExtensionName\Controller. Da sich die Funktion des Plugins nicht Ă€ndert, nennen wir ihn LegacyController, wenn es mehrere Legacy-Plugins gibt, benennen wir die Controller in LegacyPiXController um. Dieser Controller extendet wie bisher \TYPO3\CMS\Frontend\Plugin\AbstractPlugin Kompletten Quelltext aus der Klasse tx_extensionname_piX in neue Klasse LegacyPiXController kopieren. XClass Signatur löschen Neue Datei erstellen: extensionname/Migrations/Code/ClassAliasMap.php Dort den neuen Controller als Alias fĂŒr den das alte Plugin definieren:

return [
    'tx_xxxxxx_piX' => Vendor\ExtensionName\Controller\LegacyPiXController::class
];

Falls es weitere Plugins gibt, diese analog ins Array schreiben ab TYPO3 8.6 in composer.json noch den Autoloader fĂŒr die ClassAliasMap konfigurieren:

"extra": {
"typo3/class-alias-loader": {
"class-alias-maps": [
"Migrations/Code/ClassAliasMap.php"
]
}
}

In ext_localconf die Zeile

TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPItoST43(
$_EXTKEY,
'piX/class.tx_extensionname_piX.php',
'_piX',
'list_type',
0
);

umschreiben in

TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPItoST43(
$_EXTKEY,
'Classes/Controller/LegacyPiXController.php',
'_piX',
'list_type',
0)
;

Um sicher zu gehen, dass nicht mehr das alte Plugin geladen wird, die alte Klasse umbenennen oder löschen. Autoloader löschen, Cache leeren Damit sollte das Frontend wieder funktionieren

Backend: in ext_tables.php den New Content Wizard Aufruf löschen:

if (TYPO3_MODE == 'BE') {
        $TBE_MODULES_EXT['xMOD_db_new_content_el']['addElClasses']['tx_extensionname_piX_wizicon'] = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY).'piX/class.tx_extensionname_piX_wizicon.php';
}

in ext_tables.php Flexform und addPlugin Aufrufe löschen

$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_piX']='layout,select_key';

$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_piX'] = 'pi_flexform';
TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($_EXTKEY.'_piX', 'FILE:EXT:'.$_EXTKEY.'/Configuration/FlexForms/tx_extensionname_piX.xml');


TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(array(
        'LLL:EXT:extensionname/locallang_db.xml:tt_content.list_type_pi1',
        $_EXTKEY . '_pi1',
        TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'ext_icon.gif'
),'list_type');

ci_wiz.gif aus altem Plugin-Ordner in Resources/Public/Icons/ContentElementWizard.gif verschieben Neu in ext_localconf:

// Register icon for piX
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class)->registerIcon(
    'extensionname-piX',
    \TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider::class,
    ['source' => 'EXT:extensionname/Resources/Public/Icons/ContentElementWizard.gif']
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('
    mod.wizards.newContentElement.wizardItems.plugins {
        elements.tx_extensionname_piX {
            iconIdentifier = extensionname-piX
            title = LLL:EXT:extensionname/Resources/Private/Language/locallang.xml:pi3_title
            description = LLL:EXT:extensionname/Resources/Private/Language/locallang.xml:pi1_plus_wiz_description
            extensionname_defValues {
                CType = list
                list_type = tx_extensionname_piX
            }
        }
        show :=addToList(tx_extensionname_piX)
    }
');

Neu in Configuration/TCA/Overrides/tt_content.php

<?php
defined('TYPO3_MODE') or die();
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
    [
        'LLL:EXT:extensionname/Resources/Private/Language/locallang_db.xlf:pi_extensionname',
        'extensionname_piX'
    ],
    'list_type',
    'extensionname'
);
// add flexform to pi1
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['extensionname_piX'] = 'pi_flexform';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['extensionname_piX'] = 'layout,select_key,pages,recursive';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue('extensionname_piX', 'FILE:EXT:extensionname/Configuration/FlexForms/Pi1.xml');

Alten piX-Ordner löschen

WIP: Folgende Schritte sind Notwendig, um ein pibase Plugin (Abstract Plugin) zu einem Extbase Plugin umzuschreiben:

Beispiel mit einer Extension mit underscore im Namen (z.B. extensionname)

Neuen Controller (Classes/Controller/) erstellen. Namespace Vendor\ExtensionName\Controller. Da sich die Funktion des Plugins nicht Ă€ndert, nennen wir ihn LegacyController, wenn es mehrere Legacy-Plugins gibt, benennen wir die Controller in LegacyPiXController um. Die alte Einstiegsmethode war main($content, $conf). Neu erstellt man eine mainAction und kopiert den kompletten Quelltext von main() hierher. Anschliessend alle weiteren Methoden der Klasse. Um inkompatible Methodenaufrufe kĂŒmmern wir uns spĂ€ter