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');
>
-
+
+
+