News DataProcessor

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.