Hallo Spooky, bis jetzt hat alles soweit gut funktioniert. Genau das Ergebnis, was ich mir vorgestellt habe.
Allerdings benötige ich nun auch noch in meine Custom-Galerie die Option "Sortieren nach" - "Individuelle Reihenfolge".
Die bekomme ich aber nicht so richtig eingebunden.
Die DCA in der tl_news habe ich durch "->addField('sortBy', 'gallery_legend'..." erweitert:
PHP-Code:
PaletteManipulator::create()
->addLegend('gallery_legend', 'image_legend', PaletteManipulator::POSITION_AFTER)
->addField('gallery', 'gallery_legend', PaletteManipulator::POSITION_APPEND)
->addField('sortBy', 'gallery_legend', PaletteManipulator::POSITION_APPEND)
->applyToPalette('default', 'tl_news');
$GLOBALS['TL_DCA']['tl_news']['fields']['gallery'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_news']['gallery'],
'inputType' => 'fileTree',
'eval' => array(
'mandatory' => false,
'multiple' => true,
'files' => true,
'fieldType' => 'checkbox',
'filesOnly' => true,
'extensions' => 'jpg,jpeg',
'orderField' => 'orderSRC',
'isGallery' => true,
'tl_class' => 'm12 clr'
),
'exclude' => true,
'sql' => "blob NULL",
);
$GLOBALS['TL_DCA']['tl_news']['fields']['sortBy'] = array
(
'exclude' => true,
'inputType' => 'select',
'options' => array('custom', 'name_asc', 'name_desc', 'date_asc', 'date_desc', 'random'),
'reference' => &$GLOBALS['TL_LANG']['tl_content'],
'eval' => array('tl_class'=>'w50 clr'),
'sql' => "varchar(32) COLLATE ascii_bin NOT NULL default ''"
);
$GLOBALS['TL_DCA']['tl_news']['fields']['orderSRC'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_content']['orderSRC'],
'sql' => "blob NULL",
);
Das Feld "Sortieren nach" ist auch im Backend sichtbar. Allerdings weiß ich nicht, wie ich das nun mit der Generierung der Bilder über den figureBuilder im Template news_full.html5 verknüpfen kann.
Hier der Block, den ich mit deiner Hilfe im Template stehen habe:
PHP-Code:
<?php
$arrMultiSRC = \StringUtil::deserialize($this->gallery);
$arrImages = \FilesModel::findMultipleByUuids($arrMultiSRC);
$figureBuilder = \System::getContainer()
->get(\Contao\CoreBundle\Image\Studio\Studio::class)
->createFigureBuilder();
// figureBuilder version
echo '<div class="ce_gallery"><ul>';
foreach($arrImages as $image){
$figureBuilder
->fromPath($image->path)
->setSize(2)
->enableLightbox()
->setLightboxGroupIdentifier('gallerygroup1')
;
if ($figure = $figureBuilder->buildIfResourceExists()) {
echo '<li>';
$this->insert('image', $figure->getLegacyTemplateData());
echo '</li>';
}
}
echo '</ul></div>';
?>
Hast du eine Tipp für mich?
Lesezeichen