Wagatail встраивает YouTube - не показывать похожие видео
Я должен убедиться, что похожие видео не показываются на YouTube видео на клиентском сайте, созданном с помощью Wagtail. Все они в настоящее время используют встроенную функцию wagtailembeds через wagtailembeds_tags {% embed video.url %}.
Обычно я делал это раньше, добавляя параметр GET 'rel=0' в URL. Я пробовал это через поле URL на экране редактора страниц, но кажется, что на каком-то этапе его обработки его удаляют.
В настоящее время я не вижу никакого способа сделать это? Если посмотреть на последнюю ветку проекта в ReadTheDocs, то, похоже, скоро появится возможность настроить провайдера oEmbed, просто мне нужно решение сейчас.
http://docs.wagtail.io/en/latest/advanced_topics/embeds.html
Заранее благодарю за любую помощь!
1 ответ
Я решил это путем реализации пользовательского тега шаблона. Возможно, это быстрое и несколько грязное решение (официальный поставщик может быть официальным способом), но оно работает, и мне этого достаточно.
Пользователь вставляет обычный URL. Если URL предназначен для Youtube или Vimeo, пользовательские теги шаблона позаботятся об этом. В противном случае шаблон использует поставщиков Wagtail по умолчанию.
Проект / templatetags / custom_template_tags.py:
import re
from django import template
register = template.Library()
@register.filter
def get_embed_url_with_parameters(url):
if 'youtube.com' in url or 'youtu.be' in url:
regex = r"(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)" # Get video id from URL
embed_url = re.sub(regex, r"https://www.youtube.com/embed/\1", url) # Append video id to desired URL
embed_url_with_parameters = embed_url + '?rel=0' # Add additional parameters
return embed_url_with_parameters
elif 'vimeo.com' in url:
embed_url = url.replace('vimeo.com', 'player.vimeo.com/video')
embed_url_with_parameters = embed_url + '?loop=0&title=0&byline=0&portrait=0'
return embed_url_with_parameters
else:
return None
/project/templates/video_embed.htm:
{% load wagtailcore_tags %}
{% load wagtailembeds_tags %}
{% load custom_template_filters %}
{% with value.embed.url as regular_url %}
{% with regular_url|get_embed_url_with_parameters as embed_url %}
<div class="container">
<div class="block-description cvast-embed cvast-spacer-top">
<div align="center">
<h5>{{ value.title }}</h5>
{% if embed_url is None %}
{% embed regular_url %}
{% else %}
<iframe src="{{ embed_url }}" frameborder="0" allowfullscreen></iframe>
{% endif %}
</div>
</div>
</div>
{% endwith %}
{% endwith %}
Проект /models.py:
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.blocks import StructBlock
from wagtail.wagtailembeds.blocks import EmbedBlock
from wagtail.wagtailadmin.edit_handlers import FieldPanel
class EmbedVideoBlock(StructBlock):
embed = EmbedBlock()
class Meta:
template = "blocks/embed_video_block.htm"
class YourPage(Page):
video = EmbedVideoBlock()
content_panels = Page.content_panels + [
FieldPanel('video'),
]