Photo Albums

Custom lightbox usage

At some point you may want to use the same lightbox script on your page globally. This can be accomplished by creating a new jQuery template called j_lightgallery.html5 and adding it to the page layout settings:

<?php
$GLOBALS['TL_CSS'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/css/lightgallery.min.css';
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/js/lightgallery.js';

// Modules (optional)
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/js/lg-autoplay.min.js';
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/js/lg-fullscreen.min.js';
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/js/lg-pager.min.js';
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/js/lg-thumbnail.min.js';
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/cfg_photo_albums/assets/light-gallery/js/lg-zoom.min.js';
?>

<script>
    (function ($) {
        $(document).ready(function () {
            $('.ce_gallery').lightGallery({
                selector: 'a',
                mode: 'lg-slide',
                download: true,
                loop: true,
                controls: true,
                counter: true
            });

            $('a[data-lightbox]').parent().lightGallery({
                selector: 'a',
                mode: 'lg-slide',
                download: true,
                loop: true,
                controls: true,
                counter: true
            });
        });
    })(jQuery);
</script>

Supporting the captions also requires a few gentle tweaks of the Contao core templates. Basically it's about adding the data-sub-html attribute and the special CSS class to the caption element. See the examples below.

ce_image.html5
<?php $this->extend('block_searchable'); ?>
 
<?php $this->block('content'); ?>
 
  <figure class="image_container"<?php if ($this->margin): ?> style="<?= $this->margin ?>"<?php endif; ?>>
 
    <?php if ($this->href): ?>
      <a href="<?= $this->href ?>" data-sub-html=".lightgallery-caption-<?= $this->id ?>"<?php if ($this->linkTitle): ?> title="<?= $this->linkTitle ?>"<?php endif; ?><?= $this->attributes ?>>
    <?php endif; ?>
 
    <?php $this->insert('picture_default', $this->picture); ?>
 
    <?php if ($this->href): ?>
      </a>
    <?php endif; ?>
 
    <?php if ($this->caption): ?>
      <figcaption class="caption lightgallery-caption-<?= $this->id ?>"><?= $this->caption ?></figcaption>
    <?php endif; ?>
 
  </figure>
 
<?php $this->endblock(); ?>
gallery_default.html5
<ul class="cols_<?= $this->perRow ?>">
  <?php $count = 0; foreach ($this->body as $class=>$row): ?>
    <?php foreach ($row as $col): ?>
      <?php if ($col->addImage): ?>
        <li class="<?= $class ?> <?= $col->class ?>">
          <figure class="image_container"<?php if ($col->margin): ?> style="<?= $col->margin ?>"<?php endif; ?>>
            <?php if ($col->href): ?>
              <a href="<?= $col->href ?>"<?= $col->attributes ?> title="<?= $col->alt ?>" data-sub-html=".lightgallery-caption-<?= $this->id ?>-<?= ++$count ?>"><?php $this->insert('picture_default', $col->picture); ?></a>
            <?php else: ?>
              <?php $this->insert('picture_default', $col->picture); ?>
            <?php endif; ?>
            <?php if ($col->caption): ?>
              <figcaption class="caption lightgallery-caption-<?= $this->id ?>-<?= $count ?>"><?= $col->caption ?></figcaption>
            <?php endif; ?>
          </figure>
        </li>
      <?php endif; ?>
    <?php endforeach; ?>
  <?php endforeach; ?>
</ul>
image.html5
<figure class="image_container<?= $this->floatClass ?>"<?php if ($this->margin): ?> style="<?= $this->margin ?>"<?php endif; ?> itemscope itemtype="http://schema.org/ImageObject" itemprop="associatedMedia">
 
  <?php if ($this->href): ?>
    <a href="<?= $this->href ?>" data-sub-html=".lightgallery-caption-<?= $this->id ?>"<?php if ($this->linkTitle): ?> title="<?= $this->linkTitle ?>"<?php endif; ?><?= $this->attributes ?> itemprop="contentUrl">
  <?php endif; ?>
 
  <?php $this->insert('picture_default', $this->picture); ?>
 
  <?php if ($this->href): ?>
    </a>
  <?php endif; ?>
 
  <?php if ($this->caption): ?>
    <figcaption class="caption lightgallery-caption-<?= $this->id ?>" itemprop="caption"><?= $this->caption ?></figcaption>
  <?php endif; ?>
 
</figure>