- Success Stories: full migration from old site (48/48, audited), markets n:n, quotation content block, columns content block, pretty SEO detail URLs via SuccessStoryPathRewrite middleware, list/detail split (list page 4 / story page), detailUrl/backUrl - New plugins: VITEC Locations (grid/list/map + RTE map text), VITEC Customer Logos (color/bw logic, only-show-selected), VITEC Card (one plugin for product/story/market/solution with reloading FlexForm + custom backend preview renderer) - Eventlist: layout dropdown (list/grid/teaserbar) in settings - Hero section CB: Images/Video tabs, background video + overlay - Product JSON: full category rootline (parents), fixed missing ConnectionPool import (all-products crash), category tree map - Backend preview CSS: container-query responsive (narrow columns) - Docs: ISO architecture spec, root + extension READMEs Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
95 lines
4.6 KiB
PHP
95 lines
4.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
defined('TYPO3') or die();
|
|
|
|
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
|
|
|
|
(static function (): void {
|
|
$registerPluginWithFlexForm = static function (
|
|
string $pluginName,
|
|
string $pluginTitle,
|
|
string $flexFormFile,
|
|
?string $iconIdentifier = null
|
|
): void {
|
|
ExtensionUtility::registerPlugin(
|
|
'Vitec',
|
|
$pluginName,
|
|
$pluginTitle,
|
|
$iconIdentifier ?? 'content-plugin',
|
|
'plugins',
|
|
'',
|
|
$flexFormFile
|
|
);
|
|
};
|
|
|
|
$registerPluginWithFlexForm('Productlist', 'Show Products by Category', 'FILE:EXT:vitec/Configuration/FlexForms/Productlist.xml', 'vitec-plugin-productlist');
|
|
$registerPluginWithFlexForm('Simplecard', 'Simple Card', 'FILE:EXT:vitec/Configuration/FlexForms/Simplecard.xml', 'vitec-plugin-simplecard');
|
|
$registerPluginWithFlexForm('Productshow', 'Show Single Product', 'FILE:EXT:vitec/Configuration/FlexForms/Productshow.xml', 'vitec-plugin-productshow');
|
|
$registerPluginWithFlexForm('Usecaseshow', 'Single Success Story', 'FILE:EXT:vitec/Configuration/FlexForms/Usecase.xml', 'vitec-plugin-usecaseshow');
|
|
$registerPluginWithFlexForm('Marketshow', 'Show Single Market', 'FILE:EXT:vitec/Configuration/FlexForms/Market.xml', 'vitec-plugin-marketshow');
|
|
$registerPluginWithFlexForm('Solutionshow', 'Show Single Solution', 'FILE:EXT:vitec/Configuration/FlexForms/Solution.xml', 'vitec-plugin-solutionshow');
|
|
$registerPluginWithFlexForm('Usecaselist', 'Shows List of all Success Stories', 'FILE:EXT:vitec/Configuration/FlexForms/Usecaselist.xml', 'vitec-plugin-usecaselist');
|
|
$registerPluginWithFlexForm('Downloadcard', 'Download Card', 'FILE:EXT:vitec/Configuration/FlexForms/Downloadcard.xml', 'vitec-plugin-downloadcard');
|
|
$registerPluginWithFlexForm('Downloadcardcollection', 'Download Card Collection', 'FILE:EXT:vitec/Configuration/FlexForms/Downloadcardcollection.xml', 'vitec-plugin-downloadcardcollection');
|
|
$registerPluginWithFlexForm('Datasheets', 'Datasheets', 'FILE:EXT:vitec/Configuration/FlexForms/Datasheets.xml');
|
|
$registerPluginWithFlexForm('Eventlist', 'Event List', 'FILE:EXT:vitec/Configuration/FlexForms/Eventlist.xml', 'vitec-plugin-eventlist');
|
|
// Locations: lives in the "VITEC" wizard group, titled "VITEC Locations".
|
|
$GLOBALS['TCA']['tt_content']['columns']['CType']['config']['itemGroups']['vitec']
|
|
= 'LLL:EXT:vitec/Resources/Private/Language/locallang_containers.xlf:group.header';
|
|
ExtensionUtility::registerPlugin(
|
|
'Vitec',
|
|
'Modelcard',
|
|
'VITEC Card',
|
|
'vitec-plugin-modelcard',
|
|
'vitec',
|
|
'One card for a Product, Success Story, Market or Solution — all data from the model.',
|
|
'FILE:EXT:vitec/Configuration/FlexForms/Modelcard.xml'
|
|
);
|
|
$GLOBALS['TCA']['tt_content']['types']['vitec_modelcard']['previewRenderer']
|
|
= \Evomedien\Vitec\Preview\ModelcardPreviewRenderer::class;
|
|
|
|
ExtensionUtility::registerPlugin(
|
|
'Vitec',
|
|
'Customerlogos',
|
|
'VITEC Customer Logos',
|
|
'vitec-plugin-customerlogos',
|
|
'vitec',
|
|
'Customer logos in list, grid, carousel or marquee layout.',
|
|
'FILE:EXT:vitec/Configuration/FlexForms/Customerlogos.xml'
|
|
);
|
|
|
|
ExtensionUtility::registerPlugin(
|
|
'Vitec',
|
|
'Locationlist',
|
|
'VITEC Locations',
|
|
'vitec-plugin-locationlist',
|
|
'vitec',
|
|
'Locations as grid, list or interactive map.',
|
|
'FILE:EXT:vitec/Configuration/FlexForms/Locationlist.xml'
|
|
);
|
|
|
|
|
|
// Change frame_class to allow multiple selections.
|
|
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['renderType'] = 'selectCheckBox';
|
|
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['maxitems'] = 999;
|
|
|
|
// Add custom frame_class options for Vitec.
|
|
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['items'] = array_merge(
|
|
$GLOBALS['TCA']['tt_content']['columns']['frame_class']['config']['items'],
|
|
[
|
|
['label' => 'Vitec: Full Width', 'value' => 'vitec-full-width'],
|
|
['label' => 'Vitec: Centered Container', 'value' => 'vitec-centered'],
|
|
['label' => 'Vitec: Card Style', 'value' => 'vitec-card'],
|
|
['label' => 'Vitec: Dark Background', 'value' => 'vitec-dark'],
|
|
['label' => 'Vitec: Highlight Box', 'value' => 'vitec-highlight'],
|
|
]
|
|
);
|
|
|
|
// Inline parent pointer: content elements owned by a Success Story record.
|
|
$GLOBALS['TCA']['tt_content']['columns']['tx_vitec_usecase_content'] = [
|
|
'config' => ['type' => 'passthrough'],
|
|
];
|
|
})();
|