Resolves a cascade of TYPO3 v14 breaking changes that left every VITEC plugin's JSON output silently empty: 1. `list_type` column dropped — all renderer page-discovery queries now filter by `CType = 'vitec_X'`. 2. `#[AsAllowedCallable]` attribute added to every public render() — without it v14 throws AllowedCallableException, which headless silently filters via its "Oops, an error occurred!" guard. 3. `$GLOBALS['TSFE']->id` is null inside JSON cObj context — page id now read from the `frontend.page.information` request attribute (TSFE fallback kept for legacy entry points). 4. page.tsconfig wizard items migrated to `CType = vitec_X` directly (legacy `CType=list, list_type=...` no longer exists in v14). 5. ContainerChildrenProcessor + ContentElementResolver dispatch the PLUGIN_RENDERERS map by CType (primary) with list_type fallback. Beyond the bug fix this commit also contains: - Datasheets renderer rewritten to "products with newest datasheet" semantics (filtered via Download.hideondatasheets). - New vitec/card content block — multi-purpose card with backend preview and layout/background/aspect/alignment/border/shadow options. - New vitec_container CType (b13 single-column container, FlexForm cssClass propagated into the JSON envelope). - ContentElementResolver service for contentelement/contentelementcta link resolution; ContainerChildrenProcessor for nested plugin resolution inside b13 containers. - Vitecset setup.typoscript: ContentElement import moved to top so lib.contentElement is defined before VITEC's tt_content blocks. - Cleanup: 98 .bak.<timestamp> debugging backups removed; *.bak.* and /public/_assets_install/ added to .gitignore.
75 lines
2.7 KiB
Plaintext
Executable File
75 lines
2.7 KiB
Plaintext
Executable File
# =============================================================================
|
|
# VITEC menus — Headless / JSON output
|
|
#
|
|
# Three menus are exposed at the page root of the JSON response:
|
|
# - mainNavigation : full hierarchy from root, all visible pages
|
|
# - footerMenu : curated, configured via site setting menu.footer.pageUids
|
|
# - metaMenu : curated, configured via site setting menu.meta.pageUids
|
|
#
|
|
# Each menu uses friendsoftypo3/headless MenuProcessor which:
|
|
# * resolves Shortcut pages to their target
|
|
# * skips pages with "Show in menu = no" (nav_hide=1) by default
|
|
# * marks active / current items
|
|
# * exposes `children` for sub-levels
|
|
# =============================================================================
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Main navigation — full hierarchy
|
|
# -----------------------------------------------------------------------------
|
|
lib.mainNavigation = JSON
|
|
lib.mainNavigation {
|
|
dataProcessing {
|
|
10 = FriendsOfTYPO3\Headless\DataProcessing\MenuProcessor
|
|
10 {
|
|
levels = 10
|
|
expandAll = 1
|
|
includeSpacer = 0
|
|
titleField = nav_title // title
|
|
as = mainNavigation
|
|
}
|
|
}
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Footer menu — curated by site setting (UIDs)
|
|
# -----------------------------------------------------------------------------
|
|
lib.footerMenu = JSON
|
|
lib.footerMenu {
|
|
dataProcessing {
|
|
10 = FriendsOfTYPO3\Headless\DataProcessing\MenuProcessor
|
|
10 {
|
|
special = list
|
|
special.value = {$menu.footer.pageUids}
|
|
levels = 1
|
|
includeSpacer = 0
|
|
titleField = nav_title // title
|
|
as = footerMenu
|
|
}
|
|
}
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Meta menu — curated by site setting (UIDs)
|
|
# -----------------------------------------------------------------------------
|
|
lib.metaMenu = JSON
|
|
lib.metaMenu {
|
|
dataProcessing {
|
|
10 = FriendsOfTYPO3\Headless\DataProcessing\MenuProcessor
|
|
10 {
|
|
special = list
|
|
special.value = {$menu.meta.pageUids}
|
|
levels = 1
|
|
includeSpacer = 0
|
|
titleField = nav_title // title
|
|
as = metaMenu
|
|
}
|
|
}
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Wire them into the page-level JSON output
|
|
# -----------------------------------------------------------------------------
|
|
page.10.fields.mainNavigation =< lib.mainNavigation
|
|
page.10.fields.footerMenu =< lib.footerMenu
|
|
page.10.fields.metaMenu =< lib.metaMenu
|