From 46049bf30dbc3310d7b66a11bd0199f0493d6251 Mon Sep 17 00:00:00 2001 From: Oliver Rasche Date: Mon, 26 Oct 2026 19:36:18 +0100 Subject: [PATCH] Product detail CR: resources band layout select, fields parked in Misc - customer change request (2026-10-26): Resources = Downloads, the detail band is simplified - capabilities leave the section, Technical Highlights move left, the resource cards into the right column (frontend already built on dev.vitec.com) - TCA: capabilities, datasheets and downloads moved to the Misc tab - parked, not removed; their JSON keys are unchanged. The planned automatic newest-datasheet/documentation cards stay deferred by request (the download route already serves the newest file per Collateral convention, so the foundation is there) - new resources_layout select on the Resources tab, English label and description: Layout 1 = 50-50 (default, highlights left / cards right), Layout 2 = 33-33-33 (highlights over two columns, cards in the third); ext_tables.sql column added - the manual resource card restype vocabulary gains Datasheet and Brochure (select items plus icon picker seeds, no code change - the renderer passes restype through as type): an editor can pin a single datasheet card by linking the download record, which stays current because the download route always serves the newest file - ProductShowJsonRenderer: the resources envelope gains sectionLayout ('50-50'|'33-33-33'); verified live - Diamond-H delivers 33-33-33, untouched products the 50-50 default, layout/items unchanged - spec bumped to v1.26 (additive revision row, field table 7.15.1), mirrored; frontend briefing notes the new key Co-Authored-By: Claude Fable 5 --- .../UserFunc/ProductShowJsonRenderer.php | 7 +++++- .../TCA/tx_vitec_domain_model_product.php | 23 ++++++++++++++++--- .../TCA/tx_vitec_product_resource.php | 14 +++++++---- .../Headless-JSON-Architecture.md | 9 ++++---- packages/vitec/ext_tables.sql | 1 + 5 files changed, 42 insertions(+), 12 deletions(-) diff --git a/packages/vitec/Classes/UserFunc/ProductShowJsonRenderer.php b/packages/vitec/Classes/UserFunc/ProductShowJsonRenderer.php index 045368a..9eec805 100755 --- a/packages/vitec/Classes/UserFunc/ProductShowJsonRenderer.php +++ b/packages/vitec/Classes/UserFunc/ProductShowJsonRenderer.php @@ -255,7 +255,12 @@ class ProductShowJsonRenderer 'solutions' => $this->getProductSolutions($uid), // Detail-only like heroimage: resource cards are detail-page // furniture a list never shows. - 'resources' => $this->getProductResources($uid), + 'resources' => array_merge( + $this->getProductResources($uid), + // Section layout (customer CR 2026-10-26): how the front end + // arranges the Technical Highlights / Resources band. + ['sectionLayout' => (string)(($product['resources_layout'] ?? '') ?: '50-50')] + ), ]; // schema.org JSON-LD (Product + optional VideoObject) as a ready-to-emit diff --git a/packages/vitec/Configuration/TCA/tx_vitec_domain_model_product.php b/packages/vitec/Configuration/TCA/tx_vitec_domain_model_product.php index ead8a96..74a8c03 100755 --- a/packages/vitec/Configuration/TCA/tx_vitec_domain_model_product.php +++ b/packages/vitec/Configuration/TCA/tx_vitec_domain_model_product.php @@ -23,13 +23,13 @@ return [ ], ], 'types' => [ - '1' => ['showitem' => 'title, subtitle, slug, teaser, description, description2, applications, capabilities, highlights, contentelement, contentelementcta, portfolio, showdatapath, textrelatedproducts, relatedprodukt, related_texts, solutions, - --div--;Resources, resources, datasheets, downloads, + '1' => ['showitem' => 'title, subtitle, slug, teaser, description, description2, applications, highlights, contentelement, contentelementcta, portfolio, showdatapath, textrelatedproducts, relatedprodukt, related_texts, solutions, + --div--;Resources, resources, resources_layout, --div--;SEO, seotitle, urltitle, seometa, keywords, structureddata, --div--;Images and Videos, heroimage, productimage, ogimage, video, videofile, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, categories, --div--;Visibility, hideonapp, hideonwebsite, hideondatasheets, hideonproducts, shortcut, shortcutpid, - --div--;Misc, legacy, supportproduct, subproduct, + --div--;Misc, capabilities, datasheets, downloads, legacy, supportproduct, subproduct, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime'], ], 'columns' => [ @@ -465,6 +465,23 @@ return [ 'enableMultiSelectFilterTextfield' => true, ], ], + // Resources band layout (customer CR 2026-10-26): the detail page pairs + // the Technical Highlights with the resource cards; capabilities left the + // band (field parked in the Misc tab, still in the JSON for now). + 'resources_layout' => [ + 'exclude' => true, + 'label' => 'Resources Section Layout', + 'description' => 'How the detail page arranges the Technical Highlights / Resources band. Layout 1 (default): Technical Highlights on the left, resource cards on the right (50/50). Layout 2: Technical Highlights spread over two columns, resource cards in the third (33/33/33).', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'default' => '50-50', + 'items' => [ + ['label' => 'Layout 1 - 50/50 (Technical Highlights left, Resources right)', 'value' => '50-50'], + ['label' => 'Layout 2 - 33/33/33 (Technical Highlights in two columns, Resources in the third)', 'value' => '33-33-33'], + ], + ], + ], 'resources' => [ 'exclude' => true, 'label' => 'Resources', diff --git a/packages/vitec/Configuration/TCA/tx_vitec_product_resource.php b/packages/vitec/Configuration/TCA/tx_vitec_product_resource.php index fa56384..4a03f8d 100644 --- a/packages/vitec/Configuration/TCA/tx_vitec_product_resource.php +++ b/packages/vitec/Configuration/TCA/tx_vitec_product_resource.php @@ -2,10 +2,12 @@ /** * Resource cards on the product's Resources tab (decision 2026-09-24): - * documentation / support entries, several per type, each an editable card - * (title, text, icon) around one link. Datasheets are NOT an option here - - * they are the `datasheets` MM selection of download records next to this - * list and join the same JSON envelope as ready-made cards. Child table of + * documentation / support / datasheet / brochure entries, several per type, + * each an editable card (title, text, icon) around one link. A manual + * datasheet card links the download record directly - the download route + * always serves the newest file, so the card never goes stale. The old + * `datasheets` MM selection next to this list still joins the same JSON + * envelope but is parked in the Misc tab (CR 2026-10-26). Child table of * tx_vitec_domain_model_product via the `resources` inline field - edited * only there (hideTable), no Extbase model on purpose: the headless * renderers query the rows directly, the Extbase path never touches them. @@ -61,6 +63,8 @@ return [ 'items' => [ ['label' => 'Product Documentation', 'value' => 'documentation'], ['label' => 'Technical Support', 'value' => 'support'], + ['label' => 'Datasheet', 'value' => 'datasheet'], + ['label' => 'Brochure', 'value' => 'brochure'], ], 'default' => 'documentation', ], @@ -98,6 +102,8 @@ return [ 'items' => [ ['label' => 'Document', 'value' => 'document'], ['label' => 'Support', 'value' => 'support'], + ['label' => 'Datasheet', 'value' => 'datasheet'], + ['label' => 'Brochure', 'value' => 'brochure'], ], ], ], diff --git a/packages/vitec/Documentation/Headless-JSON-Architecture.md b/packages/vitec/Documentation/Headless-JSON-Architecture.md index 3c34a7c..0dad53c 100755 --- a/packages/vitec/Documentation/Headless-JSON-Architecture.md +++ b/packages/vitec/Documentation/Headless-JSON-Architecture.md @@ -3,9 +3,9 @@ | | | |---|---| | **Document identifier** | EVO‑VITEC‑HL‑001 | -| **Version** | 1.25 | +| **Version** | 1.26 | | **Status** | Released | -| **Date** | 2026‑10‑23 | +| **Date** | 2026‑10‑26 | | **Applies to** | `evomedien/vitec` on TYPO3 v14.3 (headless) | | **Owner** | evomedien — VITEC relaunch | @@ -38,6 +38,7 @@ | 1.23 | 2026‑10‑09 | **New interface (additive).** Product type-ahead for the megamenu catalog panel: lean page type `?type=7385&q=` (7.16) returning `suggestions` and up to six product cards via Solr, last term completed as a prefix. The megamenu gained the panel layout `catalog`, filled by the VITEC listener `ProvideProductCatalog` (main categories → subcategory groups → products with one-line teasers). | | 1.24 | 2026‑10‑23 | **Interface change (additive).** New frontend layout **22 Solution Group Page** for the eight solution group hero pages (zones hero = `colPos1`, main = `colPos0`). Element order: `vitec_markethero` + `vitec_introparagraph` in the hero zone; `vitec_marketintro` 2, `vitec_introparagraph` + 4 `text_only` cards (challenges), `vitec_introparagraph` + 4 alternating `horizontal`/`horizontal_reverse` cards (capabilities, bullets as `