Files
VITEC-website/config/sites/vitec/config.yaml
Oliver Rasche 710f95794c Add Solr search: EXT:solr 14 integration and JSON search endpoint
Apache Solr 10 runs on a dedicated VPS behind a Caddy HTTPS proxy
(vitecsolr.evomedien.de) because the managed webserver only allows
outgoing standard ports. Credentials stay out of git: the site config
carries %env()% placeholders resolved via putenv() in the git-ignored
config/system/additional.php.

- composer: apache-solr-for-typo3/solr 14.0.0-RC1 (the only line
  compatible with TYPO3 14; final 14.0.0 will arrive via composer update)
- config.yaml: read connection https/443, core_en per language,
  env placeholder credentials; .gitignore covers additional.php
- setup.typoscript: config.index_enable = 1 (page indexing silently
  refuses without it), solr_pi_results JSON renderer registration,
  results highlighting, and content field extraction from tt_content
  rows - the headless JSON output has no TYPO3SEARCH markers, so the
  default page content extraction indexed an empty content field
- SearchJsonRenderer (renderer #27): JSON output for the search plugin
  on /search. GET q/page in; { query, page, resultsPerPage, numFound,
  totalPages, results[], suggestions } out. Disables the page cache per
  request: config.no_cache is gone in TYPO3 v14, and q/page are
  excluded from cHash, so cached variants would collide
- ext_localconf.php: q and page added to cacheHash excludedParameters
- SolrIndexCommand (vitec:solr-index): works the index queue from the
  CLI with connection diagnostics and a --debug single-step mode -
  EXT:solr 14 ships no console commands and the backend button indexes
  one item per click
2026-08-21 14:43:44 +02:00

113 lines
2.6 KiB
YAML

base: 'https://dev.vitec.com/'
dependencies:
- typo3/fluid-styled-content
- typo3/fluid-styled-content-css
- typo3/felogin
- typo3/form
- typo3/seo-sitemap
- friendsoftypo3/headless
- friendsoftypo3/headless-mixed
- nb-headless-content-blocks/headless-content-blocks
- evomedien/vitecset
- vitec/content-blocks-bundle
- vitec/cta-banner
- vitec/herosection
- vitec/card
- vitec/intro-paragraph
- vitec/video
- vitec/faq
- georgringer/news
- georgringer/news-sitemap
- georgringer/news-recordlinks
- vitec/columns
- apache-solr-for-typo3/solr
- apache-solr-for-typo3/solr-open-search
- apache-solr-for-typo3/solr-stylesheets
- apache-solr-for-typo3/solr-bootstrap-css
frontendBase: ''
headless: 1
languages:
-
title: English
enabled: true
languageId: 0
base: /
locale: en_US.UTF-8
navigationTitle: English
flag: us
solr_core_read: core_en
rootPageId: 1
routeEnhancers:
ProductPlugin:
type: Extbase
limitToPages:
- 10
extension: Vitec
plugin: Productshow
routes:
-
routePath: '/{product_slug}'
_controller: 'Product::show'
_arguments:
product_slug: product
defaultController: 'Product::show'
requirements:
product_slug: '[a-zA-Z0-9\-]+'
aspects:
product_slug:
type: PersistedAliasMapper
tableName: tx_vitec_domain_model_product
routeFieldName: slug
routeValuePrefix: ''
NewsDetail:
type: Extbase
limitToPages:
- 21
extension: News
plugin: Pi1
routes:
-
routePath: '/{news-title}'
_controller: 'News::detail'
_arguments:
news-title: news
defaultController: 'News::detail'
aspects:
news-title:
type: NewsTitle
UsecaseDetail:
type: Extbase
limitToPages:
- 4
- 26
- 25
extension: Vitec
plugin: Usecaseshow
routes:
-
routePath: '/{usecase_slug}'
_controller: 'Usecase::show'
_arguments:
usecase_slug: usecase
defaultController: 'Usecase::show'
requirements:
usecase_slug: '[a-zA-Z0-9\-]+'
aspects:
usecase_slug:
type: PersistedAliasMapper
tableName: tx_vitec_domain_model_usecase
routeFieldName: slug
solr_enabled_read: true
solr_host_read: vitecsolr.evomedien.de
solr_host_write: localhost
solr_path_read: /
solr_path_write: /
solr_port_read: '443'
solr_port_write: '8983'
solr_scheme_read: https
solr_scheme_write: ''
solr_use_write_connection: false
solr_username_read: '%env(SOLR_USERNAME)%'
solr_password_read: '%env(SOLR_PASSWORD)%'
websiteTitle: ''