Im nachfolgenden Beispiel werden die in "pages.media" zugewiesenen Dateireferenzen über den DataProcessor "TYPO3\CMS\Frontend\DataProcessing\FilesProcessor" in der Rootline ausgelesen und stehen im Page FLUIDTEMPLATE Objekt in der Variable "files" zur Verfügung.

Eine direkte Verwendung dieser Variable auch innerhalb eines Extbase Plugins ist bislang jedoch leider nicht möglich. Daher wird hier nun der im Page Objekt verwendete FilesProcessor noch einmal im Extbase Controller ausgeführt und hierbei die Konfiguration aus dem Page Objekt übernommen.

TypoScript

page {
    10 {
        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
            10 {
                references.data = levelmedia: -1, slide
                as = files
            }
        }
    }
}

Extbase Controller

<?php
namespace Vendor\Extension\Controller;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\DataProcessing\FilesProcessor;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
use Vendor\Extension\Domain\Model\Product;

/**
 * ProductController
 */
class ProductController extends AbstractController
{

    /**
     * Action show
     *
     * @param Product $product
     * @return void
     */
    public function showAction(Product $product)
    {
        // Reuse data processing configuration from page fluidtemplate object
        $dataProcessorConfiguration = $this->configurationManager->getConfiguration(
                ConfigurationManager::CONFIGURATION_TYPE_FULL_TYPOSCRIPT
            )['page.']['10.']['dataProcessing.']['10.'];

        // Use FilesProcessor like in page fluidtemplate object
        $filesProcessor = GeneralUtility::makeInstance(FilesProcessor::class);
        $filesProcessorData = $filesProcessor->process(
            $this->configurationManager->getContentObject(),
            [],
            $dataProcessorConfiguration,
            []
        );

        $this->view->assign('files', $filesProcessorData['files']);
        $this->view->assign('product', $product);
    }
}




Kommentare