Products: categories and sub-categories become clickable pages
The 2026-11-02 menu build created the 3 categories and 9 sub-categories as sysfolders (labels); every level must be a clickable page. - build-product-overviews: six sub-categories adopt the 2026-10 category pages (Joe's workbooks; content, slug and SEO kept, sitemap name as nav_title), the remaining folders become pages with generated content, Capture & Graphics gets the main column of Graphics & Multi-Display and Video Capture copied in. Pages move/convert by direct UPDATE (the redirects slug hook would rewrite the flat child slugs); three 2026-10 pages leave the menus but stay reachable. Warns about a sys_redirect on a target slug. - ProvideProductCatalog: categories[].link and groups[].link (additive), menu title = nav_title when set, only filled groups/categories count. The menu search reads both levels as pages too. - build-why-vitec-bands: band at the top of the main column; on pages with an existing "Why VITEC?" section the context's icons go onto the cards whose title matches the icon theme (16 icons on 4 pages). - No browser cache headers on the page JSON: headless enables sendCacheHeaders and TYPO3 14 caches pages for a year by default, so every /_json/ response carried max-age=~31536000. - Spec v1.32. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
73e4298b75
commit
bd7a145afa
6 files changed
+627
-79
No files matched your search
@@ -3,7 +3,7 @@
|
||||
| | |
|
||||
|---|---|
|
||||
| **Document identifier** | EVO‑VITEC‑HL‑001 |
|
||||
| **Version** | 1.31 |
|
||||
| **Version** | 1.32 |
|
||||
| **Status** | Released |
|
||||
| **Date** | 2026‑11‑05 |
|
||||
| **Applies to** | `evomedien/vitec` on TYPO3 v14.3 (headless) |
|
||||
@@ -44,6 +44,7 @@
|
||||
| 1.29 | 2026‑11‑02 | **Interface change (removal within the unreleased catalog v2).** `catalog.news` dropped (decision: no automatic news in the products menu). Both promo boxes of the products panel, "Product highlight" and "Product news", are the entry's editorial `teasers` (`kicker` = box label). Megamenu caching: pages carrying the menu are now tagged with the menu tables, so saving menu records refreshes every page; data read from the page tree still needs a cache flush. |
|
||||
| 1.30 | 2026‑11‑02 | **Interface change (additive).** Megamenu `pagetree` entries carry `display` (`columns` \| `rail`) and, for `rail`, `cardSize` (`regular` \| `compact`): Markets and Solutions switch to a left list with the sub-pages as image cards on hover. Page-tree items gained `image` (page media) and `teaser` (abstract) from stage 2; the sub-solution pages received their hero background as page media (sub-markets had page media already). |
|
||||
| 1.31 | 2026‑11‑05 | **No interface change (data source).** Megamenu Insights `spotlight.news` read only news folder 11; the newer posts live in 442 (ticket 0046-FE). Catalog and spotlight entries gained the editor fields *Data source folders* and *Data source categories*; the Insights listener reads news from them (empty = 11 + 442, no category filter), newest `datetime` first, three cards. Pages carrying the menu are tagged with the news and event tables, so a saved news or event record refreshes the menu. Contract unchanged. |
|
||||
| 1.32 | 2026‑11‑05 | **Interface change (additive).** Products menu: categories and sub-categories are clickable pages (were sysfolders/labels): `categories[].link` and `groups[].link`. Six sub-categories are the 2026-10 category pages (content/slug/SEO kept, sitemap name as nav_title = menu `title`); 3 categories, End-Points, RF Gateway and Capture & Graphics (content of Graphics & Multi-Display + Video Capture) are new pages; Graphics & Multi-Display, Video Capture and Infrastructure & Accessories left the menus (reachable). Breadcrumbs run through category and sub-category. Spec text on the removed v1.28 transitional fields corrected. **Caching:** `/_json/` responses no longer carry browser cache headers (`page.config.sendCacheHeaders = 0`) - EXT:headless enables them and TYPO3 14's default page lifetime of one year made browsers keep every JSON response up to a year; front ends should request with `cache: 'no-cache'` to get past copies cached before. |
|
||||
|
||||
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
|
||||
@@ -1211,20 +1212,21 @@ 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
|
||||
`/products`: the pages on the first level are the menu **categories**, the
|
||||
pages below them the **groups** (sub-categories), 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.
|
||||
**shortcut** pages. Since v1.32 categories and groups are clickable pages
|
||||
with `link` (they were sysfolders/labels before); product detail pages are
|
||||
reached from the overview pages.
|
||||
|
||||
```json
|
||||
"catalog": {
|
||||
"version": 2,
|
||||
"search": { "endpoint": "/_json/?type=7385", "param": "q", "minChars": 2, "placeholder": "Search products" },
|
||||
"viewAll": { "title": "View all products", "link": "/products" },
|
||||
"categories": [ { "title": "IP Video Streaming, Distribution & KVM",
|
||||
"groups": [ { "title": "Encoders & Decoders",
|
||||
"categories": [ { "title": "IP Video Streaming, Distribution & KVM", "link": "/products/ip-video-streaming-distribution-and-kvm",
|
||||
"groups": [ { "title": "Encoders & Decoders", "link": "/products/video-encoding-and-streaming",
|
||||
"items": [
|
||||
{ "type": "page", "uid": 587, "title": "Appliances", "link": "/products/appliances",
|
||||
"productCount": 5, "products": [ { "title": "MGW Diamond-H", "link": "/product/…" } ],
|
||||
@@ -1234,10 +1236,18 @@ pages are reached from there.
|
||||
}
|
||||
```
|
||||
|
||||
- `categories[].link` / `groups[].link` (v1.32, additive): the category /
|
||||
sub-category page; `""` only while a level is still a folder. `title` is
|
||||
the menu label = the page's *nav_title* when set: six sub-categories are
|
||||
the 2026-10 category pages (Joe's workbooks - content, slug and SEO kept,
|
||||
e.g. "Encoders & Decoders" → `/products/video-encoding-and-streaming`,
|
||||
H1 "Video Encoding & Streaming"). Breadcrumbs run
|
||||
Home › Products › category › sub-category › overview page.
|
||||
- `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 `""`).
|
||||
without `page` it opens a whole group (`link` is `""`; the group's own
|
||||
page is `groups[].link` of the target).
|
||||
- `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.
|
||||
@@ -1251,15 +1261,9 @@ pages are reached from there.
|
||||
- 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.
|
||||
- The transitional v1 fields of v1.28 (`groups[].products`, `uid`s,
|
||||
product `teaser`) were removed on 2026-11-03 after the front end switched
|
||||
(0024-FE / 0029-BE). The `link` fields of v1.32 are new and permanent.
|
||||
|
||||
**Markets and Solutions menus (megamenu `layout: "pagetree"`, `display`
|
||||
since v1.30).** Page-tree entries build their `columns` live from the
|
||||
@@ -1706,4 +1710,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.31.*
|
||||
*End of document EVO‑VITEC‑HL‑001 v1.32.*
|
||||
Reference in new issue
Block a user