Unify list plugins, add solution list and per-story detail page
- vitec_usecaselist: layout + record selection like marketlist - new plugin vitec_solutionlist (spec 7.13.3, key "solutions") - tx_vitec_domain_model_usecase: detail_page -> resolved detailUrl (also gives story cards in vitec_modelcard a link for the first time) - "Show Toolbar" checkbox on product/market/solution/usecase lists - spec bumped to v1.9 BREAKING: vitec_productlist and vitec_usecaselist now emit an object instead of a bare array. Consumers must read products.products and usecases.usecases. Also found: productlist had a configurable layout that was never serialised; it is emitted now, but keeps its own 0-3 vocabulary instead of grid/list/carousel. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
4ef3ad0026
commit
12eb40614b
23 files changed
+559
-28
No files matched your search
@@ -152,20 +152,30 @@ class ProductListJsonRenderer
|
||||
$productsData[] = $this->serializeProduct($product);
|
||||
}
|
||||
|
||||
// Envelope with layout and toolbar flag, matching the other list
|
||||
// plugins. This turned the payload from a bare array into an object:
|
||||
// the front end has to read `products.products` instead of
|
||||
// iterating `products` directly. `layout` was configurable in the
|
||||
// FlexForm all along but had never been emitted - note that product
|
||||
// layouts are numbered 0..3 here, not the grid/list/carousel
|
||||
// vocabulary the other lists use.
|
||||
$response = [
|
||||
'layout' => (string)($settings['layout'] ?? '0'),
|
||||
'showToolbar' => (bool)($settings['showtoolbar'] ?? false),
|
||||
'products' => $productsData,
|
||||
];
|
||||
|
||||
if ($debugMode) {
|
||||
return json_encode([
|
||||
'products' => $productsData,
|
||||
'debug' => [
|
||||
'pageId' => (int)($GLOBALS['TSFE']->id ?? 0),
|
||||
'categoryUids' => $categoryUids,
|
||||
'productCount' => count($productsData),
|
||||
'settings' => $settings,
|
||||
'fallbackFiles' => $this->collectFallbackFilesFromProducts($productsData),
|
||||
],
|
||||
]);
|
||||
$response['debug'] = [
|
||||
'pageId' => (int)($GLOBALS['TSFE']->id ?? 0),
|
||||
'categoryUids' => $categoryUids,
|
||||
'productCount' => count($productsData),
|
||||
'settings' => $settings,
|
||||
'fallbackFiles' => $this->collectFallbackFilesFromProducts($productsData),
|
||||
];
|
||||
}
|
||||
|
||||
return json_encode($productsData);
|
||||
return json_encode($response);
|
||||
} catch (\Throwable $e) {
|
||||
return '';
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user