Products: 20 overview pages and megamenu catalog v2
Rebuild the product section after the agency sitemap and menu prototype of 2026-11-02: - vitec:build-product-overviews builds sysfolder labels (3 categories, 9 groups) below /products with 20 overview pages /products/<slug> (layout 9: hero, intro per group, product cards, contact CTA) and two menu shortcuts. Dry-run by default, idempotent, explicit sorting. - ProvideProductCatalog reads that page tree and emits catalog version 2: categories[].groups[].items[] of type page (productCount, products, image) or shortcut (target indices), plus viewAll, news and search. - Transitional v1 fields (groups[].products/link/uid, categories[].uid/ link, product teaser) keep the deployed front end alive; it read the v1 shape and rendered a white page without them. Remove once the front end reads items. - ProvideInsightsSpotlight::latestNews() is public with a count. - Product type-ahead (type 7385) adds matching overview pages and a per-product overview with its menu path. - Spec v1.28. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
da2ebdca23
commit
9fb7f0ca77
5 files changed
+918
-133
No files matched your search
@@ -40,6 +40,7 @@
|
||||
| 1.25 | 2026‑10‑23 | **Interface change (additive).** The markets branch is aligned with the agreed agency structure: `/markets` eleven market hero pages their sub‑market pages (the use‑case level stays sections per 7.17). New frontend layout **23 Market Hero Page** (zones hero = `colPos1`, main = `colPos0`): `vitec_markethero` (CTA anchors `#submarkets`) + `vitec_introparagraph` (header carries the hero H1) in the hero zone; `vitec_marketintro`, `vitec_introparagraph`, sub‑market `vitec_card`s whose `primary_cta` links the child page, `vitec_ctabanner` in main (`vitec_customerlogos` and `vitec_usecaselist` ship hidden until filled editorially). Imported by `vitec:import-market-hero-workbooks`; the tree itself by `vitec:align-market-pages` (renames with slug redirects, child slugs normalised — this also repairs embedded‑slash slugs). Sub‑market pages gained the full page‑properties set. |
|
||||
| 1.26 | 2026‑10‑26 | **Interface change (additive).** Product detail resources band simplified (customer CR): the `resources` envelope gains **`sectionLayout`** — `50-50` (default) \| `33-33-33` — from the new per‑product select *Resources Section Layout* (Layout 1: Technical Highlights left, resource cards right, 50/50; Layout 2: highlights over two columns, cards in the third). Capabilities leave the band editorially; the TCA fields `capabilities`, `datasheets` and `downloads` are parked in the Misc tab — all three stay in the payload unchanged. The automatic newest‑datasheet/documentation cards remain deferred; meanwhile the manual card `restype` vocabulary gains `datasheet` and `brochure` — a pinned datasheet card links the download record and stays current because the download route always serves the newest file. |
|
||||
| 1.27 | 2026‑11‑02 | **Interface change (additive).** Product *Resources Section Layout* gained the value `hardware` (“Layout 3 - Hardware option”): `resources.sectionLayout = "hardware"` — Technical Highlights over two columns, no resource cards (`resources.items` is emitted empty even when cards are maintained, so they reappear on a switch back). |
|
||||
| 1.28 | 2026‑11‑02 | **Interface change (breaking for the products menu, additive elsewhere).** Product section rebuilt after the agency sitemap/menu prototype of 2026-11-02: 20 product overview pages `/products/<slug>` grouped by sysfolders (3 categories → 9 groups) below /products. The megamenu `catalog` payload is now **version 2**: `categories[].groups[].items[]` of type `page` (overview page with `productCount`/`products`/`image`) or `shortcut` (`target` indices), plus `viewAll` and `news`; the menu no longer lists products. Transitional v1 fields (`groups[].products` etc.) stay until the front end has switched. The product type-ahead (`?type=7385`) gained `overviews` and a per-product `overview` with menu path. |
|
||||
|
||||
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
|
||||
@@ -1182,22 +1183,79 @@ document type and the full indexed content.
|
||||
(`ProductMenuSearchJsonRenderer`, USER_INT):
|
||||
|
||||
```json
|
||||
{ "query": "mgw d",
|
||||
"suggestions": [ "MGW Diamond+ OG", "MGW Diamond" ],
|
||||
"products": [ { "title": "MGW Diamond+ OG", "teaser": "Broadcast-grade 4K HEVC …",
|
||||
"image": "/fileadmin/_processed_/…", "url": "/product/…" } ] }
|
||||
{ "query": "vision",
|
||||
"suggestions": [ "Vision Video Capture Cards", "VisionSD8" ],
|
||||
"overviews": [ { "title": "Vision Video Capture Cards", "link": "/products/vision-video-capture-cards",
|
||||
"path": [ "Video Wall Controllers & Management", "Capture & Graphics" ] } ],
|
||||
"products": [ { "title": "VisionSD8", "teaser": "Multi-channel SDI capture …",
|
||||
"image": "/fileadmin/_processed_/…", "url": "/product/visionsd8",
|
||||
"overview": { "title": "Vision Video Capture Cards",
|
||||
"link": "/products/vision-video-capture-cards",
|
||||
"path": [ "Video Wall Controllers & Management", "Capture & Graphics" ] } } ] }
|
||||
```
|
||||
|
||||
It runs through Solr restricted to product documents; the last term is
|
||||
completed as a prefix, so cards appear while typing (inputs below two
|
||||
characters yield the empty shape). At most six products, one card per
|
||||
product; `suggestions` are their titles for the autocomplete list. `teaser`
|
||||
is the product's plain-text one-liner from the record (≤ 120 characters),
|
||||
`image` the indexed 640 px tile or `null`. The endpoint and its parameters
|
||||
travel with the megamenu catalog payload (`catalog.search`); the catalog
|
||||
itself (`layout: "catalog"`, categories → groups → products) is produced by
|
||||
the `ProvideProductCatalog` listener of EXT:evo_megamenu_json’s
|
||||
`BuildCatalogEvent` - see that extension’s README.
|
||||
product. Since v1.28 `overviews` lists the product overview pages whose
|
||||
title (or menu path) contains every typed term, and each product carries
|
||||
`overview` - the overview page that presents it, with its menu path - or
|
||||
`null` for a product outside the menu tree. `suggestions` are the overview
|
||||
titles followed by the product titles. `teaser` is the product's plain-text
|
||||
one-liner from the record (≤ 120 characters), `image` the indexed 640 px
|
||||
tile or `null`.
|
||||
|
||||
**Products menu (megamenu entry `layout: "catalog"`, version 2 since v1.28).**
|
||||
The catalog payload is produced by the `ProvideProductCatalog` listener of
|
||||
EXT:evo_megamenu_json’s `BuildCatalogEvent` from the page tree below
|
||||
`/products`: sysfolders on the first level are the menu **categories**,
|
||||
sysfolders below them the **groups** (both labels, never pages), and the
|
||||
pages below the groups the **overview pages** (`/products/<slug>`, built by
|
||||
`vitec:build-product-overviews` from the agency sitemap of 2026-11-02) or
|
||||
**shortcut** pages. The menu ends at the overview pages; product detail
|
||||
pages are reached from there.
|
||||
|
||||
```json
|
||||
"catalog": {
|
||||
"version": 2,
|
||||
"search": { "endpoint": "/_json/?type=7385", "param": "q", "minChars": 2, "placeholder": "Search products" },
|
||||
"viewAll": { "title": "View all products", "link": "/products" },
|
||||
"news": [ { "title": "…", "date": "2026-10-28", "link": "/news/article/…", "teaser": "…", "image": {} } ],
|
||||
"categories": [ { "title": "IP Video Streaming, Distribution & KVM",
|
||||
"groups": [ { "title": "Encoders & Decoders",
|
||||
"items": [
|
||||
{ "type": "page", "uid": 587, "title": "Appliances", "link": "/products/appliances",
|
||||
"productCount": 5, "products": [ { "title": "MGW Diamond-H", "link": "/product/…" } ],
|
||||
"image": null },
|
||||
{ "type": "shortcut", "title": "Aligo KVM", "link": "/products/aligo",
|
||||
"target": { "category": 1, "group": 3, "page": 0 } } ] } ] } ]
|
||||
}
|
||||
```
|
||||
|
||||
- `items[].type` is `page` (an overview page) or `shortcut`. A shortcut's
|
||||
`target` holds zero-based indices into `categories` / `groups` / `items`:
|
||||
with `page` it points to an overview page (and `link` is that page),
|
||||
without `page` it opens a whole group (`link` is `""`).
|
||||
- `products` are the product cards of the overview page that link a detail
|
||||
page (container children included, creation order); `productCount` is
|
||||
their number - a card without a resolvable product is not counted.
|
||||
- `image` (from content stage 2) is the overview page's first page media as a
|
||||
640 px WebP, `null` when none is set.
|
||||
- `news` are the latest news cards (same shape and query as the Insights
|
||||
spotlight, here two); the entry's `teasers` remain the editorial product
|
||||
highlight.
|
||||
- Hidden pages and pages with *Hide in menu* drop out; order = page tree
|
||||
order. Version 1 (2026-10-09, sys_category groups with products) is no
|
||||
longer the source.
|
||||
- **Transitional v1 fields (deprecated, removed once the front end reads
|
||||
`items`).** The deployed front end still evaluated the v1 shape for the
|
||||
active state of the Products trigger and crashed the whole site without
|
||||
it. Until it has switched, v2 additionally carries: `categories[].uid`
|
||||
(folder uid) and `categories[].link` (`/products`); `groups[].uid` (`0`),
|
||||
`groups[].link` (link of the group's first overview page) and
|
||||
`groups[].products` (the products of all its overview pages, deduplicated
|
||||
by link); and a `teaser` (card text, plain) on every product. Do not build
|
||||
on these fields.
|
||||
|
||||
**Operations.** Indexing runs automatically: record and page saves enter the
|
||||
index queue, a scheduler task (Index Queue Worker, every 5 minutes) pushes them
|
||||
@@ -1616,4 +1674,4 @@ remediation.
|
||||
- Header convention — the uniform header section across CEs, plugins and containers.
|
||||
- `Configuration/Sets/Vitecset/setup.typoscript` — the single TypoScript entry point.
|
||||
|
||||
*End of document EVO‑VITEC‑HL‑001 v1.27.*
|
||||
*End of document EVO‑VITEC‑HL‑001 v1.28.*
|
||||
Reference in new issue
Block a user