Fermer

février 1, 2024

Service personnalisé pour l’URL Youtube dans Drupal 8, 9, 10

Service personnalisé pour l’URL Youtube dans Drupal 8, 9, 10


Aperçu

Lorsque vous travaillez avec l’intégration de vidéos YouTube dans Drupal, vous découvrez souvent l’URL YouTube appropriée que nous utilisons dans notre application pour lire des vidéos. Parfois, quelques URL fonctionnaient sur quelques navigateurs, et d’autres non. Cependant, pour surmonter ce genre de problème, nous disposons déjà d’un module contribué dans Drupal nommé YouTube Field, qui fournit un champ simple qui vous permet d’ajouter une vidéo YouTube à un type de contenu, un utilisateur ou toute autre entité Drupal. Mais si les exigences sont supérieures, nous devons procéder à une personnalisation selon les exigences.

Dans ce blog, je présente une étude de cas de mon projet Drupal dans lequel j’ai dû intégrer des URL YouTube sur des entités et placer leurs URL appropriées dans iframe. J’ai besoin de lire une vidéo YouTube dans une iframe.

Énoncé du problème

Nous disposons déjà du module YouTube Field, qui fournit une prise en charge vidéo en ligne dans iframe. Mais si une page contient plus de 100 vidéos, les performances de cette page diminuent. Nous devons créer une fonctionnalité de telle sorte que seule l’image s’affiche en premier dans la liste, et en cliquant sur le bouton de lecture de l’image, Iframe charge les URL des vidéos dans une fenêtre contextuelle et lit la vidéo. Lors du chargement des URL dans une iframe contextuelle, les URL sont parfois cassées ou déformées en raison d’URL YouTube incorrectes.

Dans Drupal, les utilisateurs peuvent télécharger différents modèles d’URL de vidéos YouTube, mais certaines vidéos URL ne pourront pas être lues dans iframe. Les éditeurs de contenu ne connaissent pas techniquement les URL YouTube appropriées.

Solution

Pour surmonter ce problème, j’ai créé un service commun qui peut être utilisé dans toutes les applications pour récupérer les URL YouTube appropriées. Vous pouvez appeler ce service dans votre code personnalisé et créer une URL YouTube appropriée avant de la placer dans iframe. Vous pouvez également créer des fonctions d’extension de brindilles qui vous aident à résoudre ce problème dans les vues ou directement dans les brindilles.

Code

/**
* Get Youtube Embed URL.
*
* @param string $url
* URL of youtube.
*
* @return string
* Embed URL of youtube.
*/
public function getYoutubeEmbedUrl($url) {
$shortUrlRegex = '/youtu.be\/([a-zA-Z0-9_-]+)\??/i';
$longUrlRegex = '/youtube.com\/((?:embed)|(?:watch))((?:\?v\=)|(?:\/))([a-zA-Z0-9_-]+)/i';
if (preg_match($longUrlRegex, $url, $matches)) {
$youtube_id = $matches[count($matches) - 1];
}
if (preg_match($shortUrlRegex, $url, $matches)) {
$youtube_id = $matches[count($matches) - 1];
}
return 'https://www.youtube.com/embed/' . $youtube_id;
}


Conclusion

De cette façon, nous pouvons obtenir des URL YouTube appropriées. Vous pouvez appeler ce service et transmettre l’URL existante de YouTube, et il renverra une URL appropriée. Si vous n’avez pas beaucoup de personnalisation ou si une seule vidéo sera présente sur une seule page, vous pouvez utiliser le module Youtube Field.

Si vous avez encore des questions, laissez un commentaire et rejoignez la discussion. Bonne lecture!

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link