Hi Leute,
der RS ermöglicht bereits von Haus aus eine responsive Darstellung. Um den RS in ein "media query driven" Slider um zu wandeln, anbei ein kleines modifiziertes revoslider_ Template.
Mit dem Template werden die Contao-responsive-Image Bildgrößen in die Slide-Hintergründe geladen und deren MediaQuery-Definitionen dynamisch eingesetzt.
revoslider_...html5
der RS ermöglicht bereits von Haus aus eine responsive Darstellung. Um den RS in ein "media query driven" Slider um zu wandeln, anbei ein kleines modifiziertes revoslider_ Template.
Mit dem Template werden die Contao-responsive-Image Bildgrößen in die Slide-Hintergründe geladen und deren MediaQuery-Definitionen dynamisch eingesetzt.
revoslider_...html5
Code:
<?php
$objSlides = \RevolutionSlider\Models\Slides::findBy( array('pid=?','published=?'), array($this->id,1), array('order' => 'sorting') );
$arrSlides = $objSlides->getModels();
$arrMediaQueries = array();
?>
<?php if(!empty($this->slides)): ?>
<div <?php echo $this->sliderID; ?> class="banner <?php echo $this->class; ?> block">
<ul>
<?php foreach($this->slides as $i => $slide): ?>
<?php
$objSlide = $arrSlides[$i];
if( $objSlide->singleSRC && $objSlide->background == 'image' )
{
$slide['class'] .= ' rs_mq_image_'.$this->id.'_'.$i;
$objFile = \FilesModel::findByPk( $objSlide->singleSRC );
$objPicture = \Picture::create($objFile->path,deserialize( $objSlide->size) );
if( $objPicture !== null )
{
$arrPicture = $objPicture->getTemplateData();
foreach($arrPicture['sources'] ?: array() as $data)
{
if( strlen($data['media']) < 1 )
{
continue;
}
$arrMediaQueries[] = '@media ('.$data['media'].') { .rs_mq_image_'.$this->id.'_'.$i.' .tp-bgimg { background-image:url('.$data['src'].') !important; } }';
}
}
}
if( count($arrMediaQueries) > 0 )
{
$GLOBALS['TL_HEAD'][] = '<style> '.implode("\n",$arrMediaQueries).'</style>';
}
?>
<li <?php echo $slide['cssID']; ?> class="<?php echo $slide['class']; ?>" <?php echo $slide['attributes']; ?>>
<?php foreach($slide['content'] as $content): ?>
<?php echo $content; ?>
<?php endforeach; ?>
</li>
<?php endforeach; ?>
</ul>
<div class="tp-bannertimer"></div>
</div>
<?php else: ?>
<p class="info empty"><?php echo $this->emptyMsg; ?></p>
<?php endif; ?>


Kommentar