Backend of the sub-market template (spec agreed section by section with
the customer workflow in mind: the customer fills one XLSX per sub-market, an importer builds the page). - Frontend layout 21 'Sub-Market Page' in the existing BackendLayoutDataProvider: six zones, one per Figma section, emitted as colPos110..colPos160 - the JSON groups plus appearance.layout are the front-end contract (spec clause 7.17). A first attempt via page-TSconfig BackendLayouts was the wrong mechanism next to the provider and was removed again - New Content Blocks vitec_markethero, vitec_marketintro, vitec_marketinsights (field bags, serialized unprefixed under data); the workflow section reuses intro-paragraph + vitec_card flip cards - Stories gained quote/quote_person/quote_role (Testimonial tab), maintained once per story, emitted on every story card; usecaselist gained the layout value 'testimonials' - New plugin vitec_productfeature: one referenced product as a full product card, serialisation shared with the product list (cObj made protected for the subclass) - vitec_productlist gained hand-picked product selection: exactly the chosen products in the editor's order, category filter ignored, visibility filters kept - closes the long-standing single-select gap - New CLI vitec:generate-submarket-workbooks: one protected customer XLSX per sub-market (9 main markets, 25 sub-markets from the Market category tree) - dropdowns filled live from the database, named ranges as the importer contract, hidden Meta sheet pinning submarket/group/ record uid, soft character-limit warnings, asset URL fields Verified end to end on Broadcast & Media: layout-21 payload with colPos110 carrying the hero element and its subline. Spec raised to v1.20.
This commit is contained in:
1 parent
f0b0694842
commit
90ae6803a4
31 files changed
+493
-7
No files matched your search
@@ -3,9 +3,9 @@
|
||||
| | |
|
||||
|---|---|
|
||||
| **Document identifier** | EVO‑VITEC‑HL‑001 |
|
||||
| **Version** | 1.19 |
|
||||
| **Version** | 1.20 |
|
||||
| **Status** | Released |
|
||||
| **Date** | 2026‑09‑25 |
|
||||
| **Date** | 2026‑10‑01 |
|
||||
| **Applies to** | `evomedien/vitec` on TYPO3 v14.3 (headless) |
|
||||
| **Owner** | evomedien — VITEC relaunch |
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
| 1.17 | 2026‑09‑11 | **Interface change (additive).** The product list payload gained `successStories` (7.15.2.1): stories an editor attaches to a `sys_category` (tab *Options*, with its own layout), emitted in the list envelope beside `products`. Each card carries `forCategories` — the product categories it came from — so the front end can hide it with the same `?cat=`/`?subcat=` filter it applies to the products. Story links reuse the 7.5 rule, with the detail page taken from the element or the new site setting `vitec.storyDetailPid`. |
|
||||
| 1.18 | 2026‑09‑24 | **Interface change (additive).** Products gained `solutions` — an MM relation to solutions, emitted as solution cards in both product payloads — and a **Resources tab**: child table `tx_vitec_product_resource` with documentation / support cards (editable title, text and icon around one link, resolved per 9.12; cards without a resolvable link are not emitted) plus a `datasheets` MM selection of download records rendered into the same envelope as `type: datasheet` cards, delivered detail‑only as the `resources` list envelope whose `layout` switches to `carousel` above three cards in total (7.15). The `solutions` relation accepts group‑level records: the eight groups exist as `is_group = 1` solutions (created by `vitec:create-solution-groups`, excluded from lists and from `vitec:align-solutions`) because the agency workbooks reference the group level. Editorial: the footer had been stuck at v1.15 since 1.16/1.17 (2026‑09‑11). |
|
||||
| 1.19 | 2026‑09‑25 | **Interface change (additive).** The `vitec_card` Content Block gained the `layout_variant` value `flipcard` and a *Card Back* palette: `back_headline` (string, max 100) and `back_text` (richtext → HTML). The two fields are `displayCond`‑gated on the flipcard layout in the backend but serialised unconditionally (7.7) — the front end **shall** key the back face on `layout_variant`, never on field presence, because stored back values persist when an editor switches the layout away. Backend repair: `vitec_layout_variant` / `vitec_background_variant` are shared with `vitec_ctabanner`, and the index‑wise Content‑Blocks merge had dropped four card‑only select values (“Missing label”) — per‑type item lists now come from `columnsOverrides` (7.7); the Card‑Back palette lives in the Layout tab below the variant select. Editorial: the head‑matter version had been stuck at v1.17 since 1.18. |
|
||||
| 1.20 | 2026‑10‑01 | **Interface change (additive).** Sub-market page template: frontend layout 21 with one colPos group per design section (`colPos110`..`colPos160`, clause 7.17); new Content Blocks `vitec_markethero`, `vitec_marketintro`, `vitec_marketinsights`; new plugin `vitec_productfeature` (key `productfeature`, one product in the 7.15.2 item shape); story cards gained `quote`/`quotePerson`/`quoteRole`; `vitec_usecaselist` gained the layout value `testimonials`; `vitec_productlist` gained hand-picked product selection (editor order, category filter ignored). Field semantics: Template_Sub-Market_Spezifikation_2026-10-01.md. |
|
||||
|
||||
This document is drafted in the style of, and adopts the terminology conventions of,
|
||||
ISO/IEC/IEEE 42010 (architecture description), ISO/IEC/IEEE 26514 (information for
|
||||
@@ -1131,6 +1132,43 @@ content is extracted from the page’s `tt_content` rows via
|
||||
`index.queue.pages.fields.content` because the headless JSON output carries no
|
||||
`TYPO3SEARCH` markers.
|
||||
|
||||
---
|
||||
|
||||
### 7.17 Sub-market page template (frontend layout 21)
|
||||
|
||||
A sub-market page is identified by `appearance.layout == "layout-21"`. Its
|
||||
content is NOT read from element order: the backend layout assigns one column
|
||||
per design section, and the JSON groups them as
|
||||
|
||||
| Group | Section | Elements |
|
||||
|---|---|---|
|
||||
| `colPos110` | Hero | `vitec_markethero` |
|
||||
| `colPos120` | Intro | `vitec_marketintro` |
|
||||
| `colPos130` | Workflow | `vitec_introparagraph` + container with `vitec_card` flip cards |
|
||||
| `colPos140` | Testimonials | `vitec_usecaselist`, `layout: "testimonials"` |
|
||||
| `colPos150` | Products | `vitec_productfeature` + `vitec_productlist` (hand-picked) |
|
||||
| `colPos160` | Industry Insights | `vitec_marketinsights` |
|
||||
|
||||
The three `vitec_market*` elements are Content Blocks: their fields arrive
|
||||
unprefixed under the element's `data` (7.7). Field reference and empty-value
|
||||
semantics ("empty url = card hidden" etc.) are specified in
|
||||
`Template_Sub-Market_Spezifikation_2026-10-01.md`; the per-field limits live
|
||||
in the backend field descriptions.
|
||||
|
||||
Related interface additions (all additive):
|
||||
|
||||
- **Story cards** (7.5 shape, everywhere they appear) carry `quote`,
|
||||
`quotePerson`, `quoteRole` - maintained once per story, empty strings until
|
||||
maintained. The testimonial card renders them; the `vitec_usecaselist`
|
||||
FlexForm gained the `layout` value `testimonials` for this.
|
||||
- **`vitec_productfeature`** (payload key `productfeature`): exactly one
|
||||
referenced product as a full product card in the 7.15.2 item shape, `null`
|
||||
when unset or the product is not visible. Serialisation is shared with the
|
||||
product list (one source of truth).
|
||||
- **`vitec_productlist`** gained the FlexForm field *Hand-picked products*:
|
||||
when set, the list contains exactly those products in the editor's order;
|
||||
the category selection is ignored, the visibility filters stay in force.
|
||||
|
||||
## 8 Content‑type catalogue
|
||||
|
||||
| CType | TS pattern | Renderer / Processor | Payload key | Kind |
|
||||
|
||||
Reference in new issue
Block a user