fix: render product detail pages on TYPO3 13
- ObjectManager replaced by GeneralUtility::makeInstance(), the
services fetched that way are public
- QueryBuilder::add('orderBy') and the remaining execute() calls,
detailAction returns a response
- PHP 8 warnings for missing array keys (same values as on PHP 7.4)
- Webcam images are external URLs: plain img tag, f:image only takes
FAL files
- typo3_encore 7 needs the PKG:ssch/typo3-encore: prefix and
external = 1 so TYPO3's path check does not drop the entry
- CDN image rewriting as a middleware instead of EXT:replacer, which
is not PHP 8.5 clean; same pattern, only for page responses
- vhs 8 for the ViewHelpers the templates use
- OpenGraph meta tag manager skips the backend
- myEpUrl with trailing slash as in production
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
4eb1de2e29
commit
34f2d55f2c
23 files changed
+222
-57
No files matched your search
@@ -30,7 +30,6 @@ namespace EP\EpTheme\DataProcessing;
|
||||
use EP\EpProducts\Service\ResellerDataService;
|
||||
use EP\EpProducts\Traits\DbConnectionTrait;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Extbase\Object\ObjectManager;
|
||||
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
|
||||
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
|
||||
|
||||
@@ -77,10 +76,8 @@ class ContextProcessor implements DataProcessorInterface
|
||||
*/
|
||||
private function getResellerData()
|
||||
{
|
||||
/** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
|
||||
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
|
||||
/** @var ResellerDataService $resellerService */
|
||||
$resellerService = $objectManager->get(ResellerDataService::class);
|
||||
$resellerService = GeneralUtility::makeInstance(ResellerDataService::class);
|
||||
return $resellerService->getResellerForCurrentDomain();
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ class FlexFormProcessor implements DataProcessorInterface
|
||||
$data = $cObj->data;
|
||||
if (array_key_exists('pi_flexform', $data)) {
|
||||
$flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
|
||||
$processedData['data']['flexForm'] = $flexFormService->convertFlexFormContentToArray($data['pi_flexform']);
|
||||
$processedData['data']['flexForm'] = $flexFormService->convertFlexFormContentToArray((string)$data['pi_flexform']);
|
||||
}
|
||||
return $processedData;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ use EP\EpProducts\Domain\Repository\RegionRepository;
|
||||
use EP\EpProducts\Service\HotelDataService;
|
||||
use EP\EpProducts\Service\ProductDataService;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Extbase\Object\ObjectManager;
|
||||
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
|
||||
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
|
||||
|
||||
@@ -58,40 +57,38 @@ class TeaserProcessor implements DataProcessorInterface
|
||||
array $processorConfiguration,
|
||||
array $processedData
|
||||
) {
|
||||
/** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
|
||||
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
|
||||
|
||||
if ((int) $processedData['data']['tx_eptheme_context_city'] > 0) {
|
||||
/** @var CityRepository $repository */
|
||||
$repository = $objectManager->get(CityRepository::class);
|
||||
$repository = GeneralUtility::makeInstance(CityRepository::class);
|
||||
/** @var City $city */
|
||||
$city = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_city']);
|
||||
$processedData['city'] = $city;
|
||||
}
|
||||
if ((int) $processedData['data']['tx_eptheme_context_region'] > 0) {
|
||||
/** @var RegionRepository $repository */
|
||||
$repository = $objectManager->get(RegionRepository::class);
|
||||
$repository = GeneralUtility::makeInstance(RegionRepository::class);
|
||||
/** @var Region $region */
|
||||
$region = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_region']);
|
||||
$processedData['region'] = $region;
|
||||
}
|
||||
if ((int) $processedData['data']['tx_eptheme_context_country'] > 0) {
|
||||
/** @var CountryRepository $repository */
|
||||
$repository = $objectManager->get(CountryRepository::class);
|
||||
$repository = GeneralUtility::makeInstance(CountryRepository::class);
|
||||
/** @var Country $country */
|
||||
$country = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_country']);
|
||||
$processedData['country'] = $country;
|
||||
}
|
||||
if ((int) $processedData['data']['tx_eptheme_context_hotel'] > 0) {
|
||||
/** @var HotelDataService $service */
|
||||
$service = $objectManager->get(HotelDataService::class);
|
||||
$service = GeneralUtility::makeInstance(HotelDataService::class);
|
||||
/** @var array $hotel */
|
||||
$hotel = $service->getTeaser($processedData['data']['tx_eptheme_context_hotel']);
|
||||
$processedData['hotel'] = $hotel;
|
||||
}
|
||||
if ((int) $processedData['data']['tx_eptheme_context_concept'] > 0) {
|
||||
/** @var ConceptRepository $repository */
|
||||
$repository = $objectManager->get(ConceptRepository::class);
|
||||
$repository = GeneralUtility::makeInstance(ConceptRepository::class);
|
||||
/** @var Concept $concept */
|
||||
$concept = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_concept']);
|
||||
$processedData['concept'] = $concept;
|
||||
@@ -119,7 +116,7 @@ class TeaserProcessor implements DataProcessorInterface
|
||||
}
|
||||
|
||||
/** @var ProductDataService $productDataService */
|
||||
$productDataService = $objectManager->get(ProductDataService::class);
|
||||
$productDataService = GeneralUtility::makeInstance(ProductDataService::class);
|
||||
$processedData['teaser'] = $productDataService->getTeaser($filterSettings);
|
||||
$processedData['teaser']['forceHotelUid'] = $hotelUid;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user