Das ist ein News DataProcessor, mit dem man einen NewsRecord über die UID laden kann. Wie alle Data Prozessoren ist er damit auch in nested Abfragen verwendbar, ähnlich wie man es von IMAGE kennt, um den gesamten Record zu laden.
Datei anlegen: MyExtension/Classes/
DataProcessor/NewsDataProcessor.php
<?php
namespace MyCompany\MyExtension\DataProcessor;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
class NewsDataProcessor implements DataProcessorInterface
{
public function process(
ContentObjectRenderer $cObj,
array $contentObjectConfiguration,
array $processorConfiguration,
array $processedData
) {
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
/** @var \GeorgRinger\News\Domain\Repository\NewsRepository $newsRepository */
$newsRepository = $objectManager->get('GeorgRinger\News\Domain\Repository\NewsRepository');
$field = 'uid';
if (array_key_exists('field',$processorConfiguration)) {
$field = $processorConfiguration['field'];
}
$newsArray = $processedData['data'];
$news = $newsRepository->findByUid($newsArray[$field],false);
$processedData['news'] = $news;
return $processedData;
}
}
TypoScript Beispiel für die Verwendung DataProcessor: ich verwende pages als News (Interner Link als News Typ), und lade damit den zugehörigen News Record:
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
table = tx_news_domain_model_news
#pid for news folder
pidInList = 123
where.data = page : uid
where.wrap = internalurl=|
as = displayedNews
dataProcessing {
10 = MyCompany\MyExtension\DataProcessor\NewsDataProcessor
10 {
field = uid
}
}
}
Um beispielsweise den n:excludeDisplayedNews Viewhelper zu verwenden wird das benötigt, der Code dazu ist auf Stackoverflow zu finden.