Hallo zusammen,
ist es möglich, das Nachrichtenliste Modul um die Funktion einer Bild Galerie zu erweitern?
Hat jemand einen Tipp wo ich ansetzten kann
Druckbare Version
Hallo zusammen,
ist es möglich, das Nachrichtenliste Modul um die Funktion einer Bild Galerie zu erweitern?
Hat jemand einen Tipp wo ich ansetzten kann
Nachrichtenliste ausschließlich als Bildergalerie? Da würde ich den Teaser leerlassen und ein Inhaltselement Galerie einfügen. Dazu benutzt Du für die Nachrichtenliste das news_full-Template und schon hast Du eine Galerieübersicht mit dem News-Modul erstellt.
Das habe ich probiert. Teaser leer, Galerie Element angelegt.
Werden aber leider keine Bilder ausgegeben.
Lege ich allerdings ein Text Element an, dann wird dieses dargestellt
Auch eine Ausgabe der Template Variablen gibt keinen Anhaltspunkt, das Bilder durchgereicht werden
Ok, bin jetzt auf einem Weg zu einer Lösung mit DCA
Hab ein eigenes Modul angelegt um den Teaser zu erweitern.
PHP-Code:
$GLOBALS['TL_DCA']['tl_news']['palettes']['default'] = str_replace
(
'{image_legend},addImage',
'{image_legend},addImage,gallery',
$GLOBALS['TL_DCA']['tl_news']['palettes']['default']
);
$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,png,gif,svg', 'isGallery' => true), 'exclude' => true,
'sql' => "blob NULL"
);
Kann mir mal einer auf die Sprünge helfen, wie ich das DCA so erweitern kann, damit man auch eine individuelle Reihenfolge der Bilder bestimmen kann
Schau dir das vom Standard ab.
https://github.com/contao/core/blob/...tl_content.php Zeile 528-544
Erkläre mal genauer was du haben möchtest.
@spooky:
Ich möchte das Nachrichten Modul (Nachrichtenliste) um die Funktion einer Bild Galerie erweitern, um dann einen Swiper Slider einzubauen
siehe hier: http://www.holmvintage.com/objects.html
Derzeitig funktioniert das anlegen einer individuellen Galerie im Backend:
Allerdings kann ich die Elemente noch nicht im Template ausgeben.PHP-Code:
$GLOBALS['TL_DCA']['tl_news']['palettes']['default'] = str_replace
(
'{image_legend},addImage',
'{image_legend},addImage,gallery',
$GLOBALS['TL_DCA']['tl_news']['palettes']['default']
);
$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
),
'exclude' => true,
'sql' => "blob NULL",
);
$GLOBALS['TL_DCA']['tl_news']['fields']['orderSRC'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_content']['orderSRC'],
'sql' => "blob NULL",
);
Hat da jemand einen Tipp?
Hiermit kann ich schon mal auf das Array zugreifen
Aber welche Image Klasse sollte hier zu auslesen verwendet werden?PHP-Code:
$images = deserialize($this->gallery);
$tmp = deserialize($this->orderSRC);
if (!empty($tmp) && is_array($tmp)) {
$order = array_map(function(){}, array_flip($tmp));
foreach ($images as $k => $v) {
if (array_key_exists($v, $order)) {
$order[$v] = $v;
unset($images[$k]);
}
}
if (!empty($images)) {
$order = array_merge($order, array_values($images));
}
$images = array_values(array_filter($order));
}
Ok, hab's gefunden
PHP-Code:
<?php foreach ($images as $uuid): ?>
<?php
echo \FilesModel::findByUuid($uuid)->path;
?>
<?php endforeach ?>
Achso, also du willst den Slider direkt in einer Newsliste ausgeben?
@Spooky: Ja
Ich hab jetzt die Bildgrößen Palette eingebunden.
Doch gibt es hier noch einen anderen Weg, die Bilddateien auszulesen als diesen hierPHP-Code:
$GLOBALS['TL_DCA']['tl_news']['fields']['sizes'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_content']['size'],
'exclude' => true,
'inputType' => 'imageSize',
'options' => \Contao\System::getImageSizes(),
'reference' => &$GLOBALS['TL_LANG']['MSC'],
'eval' => array('rgxp'=>'natural', 'includeBlankOption'=>true, 'nospace'=>true, 'helpwizard'=>true, 'tl_class'=>'w50'),
'sql' => "varchar(64) NOT NULL default ''"
);
PHP-Code:
<?php foreach ($images as $uuid): ?>
<?php
echo $this->getImage(\FilesModel::findByUuid($uuid)->path, 800,512,'crop');
?>
<?php endforeach ?>