shortcode->getHandlers()->add('snap-gallery', function (ShortcodeInterface $sc) { $plugin = $this->grav['plugins']->getPlugin('story-blocks'); $page = $plugin ? $plugin->getCurrentPage() : null; $baseUrl = $page ? $page->url() . '/' : ''; $images = array_map('trim', explode(',', $sc->getParameter('images', ''))); $captions = array_map('trim', explode(',', $sc->getParameter('captions', ''))); $alts = array_map('trim', explode(',', $sc->getParameter('alts', ''))); $slidesHtml = ''; $dotsHtml = ''; foreach ($images as $i => $filename) { if (!$filename) continue; $url = $baseUrl . htmlspecialchars($filename, ENT_QUOTES); $caption = htmlspecialchars($captions[$i] ?? '', ENT_QUOTES); $alt = htmlspecialchars($alts[$i] ?? '', ENT_QUOTES); $eager = $i === 0 ? 'eager' : 'lazy'; $active = $i === 0 ? ' is-active' : ''; $captionTag = $caption ? '
' . $caption . '
' : ''; $slidesHtml .= << {$alt} {$captionTag} HTML; $dotsHtml .= ''; } return <<
{$slidesHtml}
HTML; }); } }