diff --git a/src/language/en-GB/mod_mokojoomhero.sys.ini b/src/language/en-GB/mod_mokojoomhero.sys.ini index 4d3533e..3753a64 100644 --- a/src/language/en-GB/mod_mokojoomhero.sys.ini +++ b/src/language/en-GB/mod_mokojoomhero.sys.ini @@ -27,8 +27,8 @@ MOD_MOKOJOOMHERO_SLIDE_INTERVAL_LABEL="Slide Interval (ms)" MOD_MOKOJOOMHERO_SLIDE_INTERVAL_DESC="Time between slides in milliseconds (e.g. 5000 = 5 seconds)." ; Video settings -MOD_MOKOJOOMHERO_VIDEO_FILE_LABEL="Video File / YouTube URL" -MOD_MOKOJOOMHERO_VIDEO_FILE_DESC="Path to a local video file (MP4), or a YouTube URL (e.g. https://www.youtube.com/watch?v=abc123)." +MOD_MOKOJOOMHERO_VIDEO_FILE_LABEL="Video URL" +MOD_MOKOJOOMHERO_VIDEO_FILE_DESC="Local file path, YouTube URL, or Vimeo URL. Any format works — the module auto-detects the source." ; Hero height MOD_MOKOJOOMHERO_HERO_HEIGHT_LABEL="Hero Height" diff --git a/src/mod_mokojoomhero.php b/src/mod_mokojoomhero.php index a03804c..77b4e95 100644 --- a/src/mod_mokojoomhero.php +++ b/src/mod_mokojoomhero.php @@ -60,15 +60,20 @@ if ($heroMode === 'images') { } } -// Build video URL — detect YouTube vs local file +// Build video URL — smartly detect YouTube, Vimeo, or local/direct file $videoUrl = ''; $youtubeId = ''; +$vimeoId = ''; if ($heroMode === 'video' && $videoFile) { - // Match youtube.com/watch?v=ID, youtu.be/ID, youtube.com/embed/ID - if (preg_match('/(?:youtube\.com\/(?:watch\?v=|embed\/)|youtu\.be\/)([\w-]{11})/', $videoFile, $m)) { + // YouTube: watch, embed, shorts, youtu.be, with optional timestamps/params + if (preg_match('/(?:youtube\.com\/(?:watch\?.*v=|embed\/|shorts\/|v\/)|youtu\.be\/)([\w-]{11})/', $videoFile, $m)) { $youtubeId = $m[1]; + // Vimeo: vimeo.com/123456 or player.vimeo.com/video/123456 + } elseif (preg_match('/vimeo\.com\/(?:video\/)?(\d+)/', $videoFile, $m)) { + $vimeoId = $m[1]; } else { + // Direct URL or local file path $videoUrl = (strpos($videoFile, '://') !== false) ? $videoFile : Uri::root() . ltrim($videoFile, '/'); diff --git a/src/tmpl/default.php b/src/tmpl/default.php index 5ed6791..855d0f1 100644 --- a/src/tmpl/default.php +++ b/src/tmpl/default.php @@ -17,6 +17,7 @@ use Joomla\CMS\Language\Text; /** @var int $slideInterval */ /** @var string $videoUrl */ /** @var string $youtubeId */ +/** @var string $vimeoId */ /** @var string $heroHeight */ /** @var string $overlayColor */ /** @var float $overlayOpacity */ @@ -42,7 +43,9 @@ $heightAttr = htmlspecialchars($heroHeight, ENT_QUOTES, 'UTF-8'); > - + + +