Structure per the agency agreement (Joe/Christina, confirmed 2026-10-23): /markets -> eleven market hero pages -> their sub-market pages; the use-case level stays sections on the sub-market pages. - new vitec:align-market-pages: renames 8 main market pages onto the agency names (slug change -> EXT:redirects), creates the 3 new markets, hides the dropped "Security & Surveillance" (records/stories untouched), reports unknown children. A child-slug pass realigns every child to <parent-slug>/<slugified-title> (DataHandler does not cascade slug changes; this also repaired the third embedded-slash slug, rtcc-/-rtic). --publish unhides the tree (dev convenience; element shells stay hidden) - sub-market import: all 24 agency workbooks applied (4 existing pages, 20 created) - their Meta sheets were clones of Corporate Environments (record_uid 32) and were repaired beforehand (market/sub-market set, record_uid 0; the record taxonomy alignment is a separate step) - SubmarketWorkbookImporter: page-properties parity (og/twitter titles and descriptions, canonical, abstract from the intro copy) and a placeholder upgrade pass - pages created in the same run only get the generic grey (their uid is still NEW), the re-run swaps it for the numbered per-page placeholder - new market hero pipeline: frontend layout 23 "Market Hero Page" (zones hero=colPos1, main=colPos0), Import\MarketHeroPageImporter + vitec:import-market-hero-workbooks (inbox migrations/markethero_xlsx_in, gitignored). Hero H1 travels on the introparagraph header (markethero has no headline field), the hero CTA anchors #submarkets, sub-market cards link their child page via t3://page, customerlogos and usecaselist ship hidden until filled editorially, prefooter ctabanner; full page-properties set with 11 curated keyword sets - applied end to end and live-verified (layout 23 heroes with linked cards, layout 21 sub pages with all six colPos groups, clean slugs) - spec v1.25 Open: market RECORD taxonomy (story badges / Solr facets still use the old 9 mains), featured product "ISR Video Mission Commander" has no record, the /markets main page workbook (template 2) is a separate flow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
45 lines
2.2 KiB
PHP
Executable File
45 lines
2.2 KiB
PHP
Executable File
<?php
|
|
declare(strict_types=1);
|
|
|
|
defined('TYPO3') or die();
|
|
|
|
(static function (): void {
|
|
$l = 'LLL:EXT:vitec/Resources/Private/Language/locallang_pages.xlf:';
|
|
|
|
// Replace the default "Frontend Layout" dropdown on the page record
|
|
// (Page Properties → Appearance → Frontend Layout) with the VITEC layouts.
|
|
// Values are integer strings (DB column is INT).
|
|
$GLOBALS['TCA']['pages']['columns']['layout']['config']['items'] = [
|
|
['label' => $l . 'layout.0', 'value' => '0'],
|
|
['label' => $l . 'layout.1', 'value' => '1'],
|
|
['label' => $l . 'layout.2', 'value' => '2'],
|
|
['label' => $l . 'layout.3', 'value' => '3'],
|
|
['label' => $l . 'layout.4', 'value' => '4'],
|
|
['label' => $l . 'layout.5', 'value' => '5'],
|
|
['label' => $l . 'layout.6', 'value' => '6'],
|
|
['label' => $l . 'layout.7', 'value' => '7'],
|
|
['label' => $l . 'layout.8', 'value' => '8'],
|
|
['label' => $l . 'layout.9', 'value' => '9'],
|
|
['label' => $l . 'layout.10', 'value' => '10'],
|
|
['label' => $l . 'layout.11', 'value' => '11'],
|
|
['label' => $l . 'layout.12', 'value' => '12'],
|
|
['label' => $l . 'layout.13', 'value' => '13'],
|
|
['label' => $l . 'layout.14', 'value' => '14'],
|
|
['label' => $l . 'layout.15', 'value' => '15'],
|
|
['label' => $l . 'layout.16', 'value' => '16'],
|
|
['label' => $l . 'layout.17', 'value' => '17'],
|
|
['label' => $l . 'layout.18', 'value' => '18'],
|
|
['label' => $l . 'layout.19', 'value' => '19'],
|
|
['label' => $l . 'layout.20', 'value' => '20'],
|
|
['label' => $l . 'layout.21', 'value' => '21'],
|
|
['label' => $l . 'layout.22', 'value' => '22'],
|
|
['label' => $l . 'layout.23', 'value' => '23'],
|
|
];
|
|
$GLOBALS['TCA']['pages']['columns']['layout']['config']['default'] = '0';
|
|
|
|
// Hide the backend_layout / backend_layout_next_level fields from the editor —
|
|
// they are auto-synced from the frontend layout via SyncBackendLayoutHook.
|
|
$GLOBALS['TCA']['pages']['columns']['backend_layout']['displayCond'] = 'HIDE_FOR_NON_ADMINS';
|
|
$GLOBALS['TCA']['pages']['columns']['backend_layout_next_level']['displayCond'] = 'HIDE_FOR_NON_ADMINS';
|
|
})();
|