# Chatbot content feed: the main content of a page, without header, navigation, footer or # assets. Fetched by MyE&P for pages the content manifest reports as changed; protected by # EP\EpProducts\Middleware\ContentPageTypeGuardMiddleware. See # .ddev/plans/CHATBOT-MCP-01-TYPO3-CONTENT-FEED.md ยง6. # Plugins (the booking widget on product detail pages), forms, sub-page menus and teaser cards # are left out: MyE&P has trip data first-hand, and the pages and records the cards link to are # in the feed in their own right. The filter applies to top-level elements only; a plugin nested # in a grid or container element is still rendered by its parent. The ep_products plugins are content # element types of their own (epproducts_*); "list" in the setting covers the retired plugins. lib.contentOnly < lib.dynamicContent lib.contentOnly.20.select.where = colPos={register:colPos} AND CType NOT IN ({$plugin.tx_eptheme.settings.contentOnlyExcludedCTypes}) AND CType NOT LIKE 'epproducts_%' tx_eptheme_content_only = PAGE tx_eptheme_content_only { typeNum = 1730 config { disableAllHeaderCode = 1 disablePrefixComment = 1 additionalHeaders.10.header = Content-Type: text/html; charset=utf-8 additionalHeaders.20.header = X-Robots-Tag: noindex, nofollow, noarchive admPanel = 0 debug = 0 # Never written to disk: the type is key-protected, and a static file would be served # by .htaccess without that check ever running. tx_staticfilecache.disableCache = 1 # Same reason for shared caches between us and the consumer: the TYPO3 page cache is # fine (the guard runs before it), a proxy storing a keyed response is not. sendCacheHeaders = 0 additionalHeaders.30.header = Cache-Control: private, no-store } 10 = COA 10 { wrap =
|
10 = TEXT 10.field = title 10.htmlSpecialChars = 1 10.wrap =

|

# Page templates without a sidebar render colPos 0; the sidebar layouts render 3 (header), # 4 (content) and 2 (sidebar). colPos 1 holds teaser groups and is left out. The page # templates pass colPos in as data; here there is no template, so each copy sets it. # These must be copies (<), not references (=<): removing colPos.cObject on a reference # leaves the referenced cObject in place, and every column silently renders colPos 0. 20 < lib.contentOnly 20.5.colPos.cObject > 20.5.colPos = 3 30 < lib.contentOnly 30.5.colPos.cObject > 30.5.colPos = 0 40 < lib.contentOnly 40.5.colPos.cObject > 40.5.colPos = 4 50 < lib.contentOnly 50.5.colPos.cObject > 50.5.colPos = 2 } }