Files
VITEC-website/packages/evo_megamenu_json/Configuration/TCA/tx_evomegamenujson_column.php
Oliver Rasche 5bb4e374b4 Add evo_megamenu_json extension and seed the megamenu
- new project-neutral extension evo_megamenu_json (Evomedien): a Megamenu
  plugin holding entries, columns, items, teaser cards and a featured slot
  as nested records; presentation settings travel with the payload so the
  front end reads behaviour instead of hard-coding it; published as
  page.10.fields.megaMenu, driven by the site settings megamenu.contentUid
  and megamenu.storagePid
- vitec:seed-megamenu fills one element from the live structure: 5 entries,
  26 columns, 95 items, 4 story cards; items without a page yet are flagged
  pending so the front end falls back to the column link
- vitec:debug-sets prints the resolved site set order
- read-only diagnostics: check_megamenu_schema.php, check_typoscript_templates.php
- docs: schema updates run via extension:setup (database:updateschema no
  longer exists in v14), and a JSON Accept header activates headless-mixed,
  which strips every set-added page field
2026-09-11 11:44:20 +02:00

86 lines
3.4 KiB
PHP

<?php
declare(strict_types=1);
/**
* A column inside an entry's panel: a headline that is itself a link,
* plus the list of items below it.
*/
$ll = 'LLL:EXT:evo_megamenu_json/Resources/Private/Language/locallang_db.xlf:tx_evomegamenujson_column.';
return [
'ctrl' => [
'title' => 'LLL:EXT:evo_megamenu_json/Resources/Private/Language/locallang_db.xlf:tx_evomegamenujson_column',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'delete' => 'deleted',
'sortby' => 'sorting',
'hideTable' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'enablecolumns' => ['disabled' => 'hidden'],
'iconfile' => 'EXT:evo_megamenu_json/Resources/Public/Icons/column.svg',
'searchFields' => 'title',
],
'types' => [
'1' => ['showitem' => 'hidden, title, link, menu_items, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'default' => 0,
'items' => [['label' => '', 'value' => 0]],
'foreign_table' => 'tx_evomegamenujson_column',
'foreign_table_where' => 'AND {#tx_evomegamenujson_column}.{#pid}=###CURRENT_PID### AND {#tx_evomegamenujson_column}.{#sys_language_uid} IN (-1,0)',
],
],
'l10n_diffsource' => ['config' => ['type' => 'passthrough']],
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hidden',
'config' => ['type' => 'check', 'renderType' => 'checkboxToggle', 'default' => 0],
],
'parentid' => ['config' => ['type' => 'passthrough']],
'title' => [
'label' => $ll . 'title',
'config' => ['type' => 'input', 'size' => 40, 'eval' => 'trim', 'required' => true],
],
'link' => [
'label' => $ll . 'link',
'description' => $ll . 'link.description',
'config' => ['type' => 'link', 'allowedTypes' => ['page', 'url', 'record'], 'size' => 40],
],
'menu_items' => [
'label' => $ll . 'menu_items',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_evomegamenujson_item',
'foreign_field' => 'parentid',
'foreign_sortby' => 'sorting',
'maxitems' => 30,
'appearance' => [
'collapseAll' => true,
'expandSingle' => true,
'useSortable' => true,
'newRecordLinkAddTitle' => true,
'levelLinksPosition' => 'top',
],
],
],
],
];