- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注 the documentation还有this example在我的 Wagtail 站点中创建自定义 OEmbed Finder。 (最终我想修改 YouTube 视频的 HTML 输出以使用 youtube-nocookie.com
域,而不是 youtube.com
。)
我在 myapp.embeds.finders.oembed.py
中创建了这个:
from wagtail.embeds.finders.oembed import OEmbedFinder
class YouTubeOEmbedFinder(OEmbedFinder):
def find_embed(self, url, max_width=None):
embed = super().find_embed(url, max_width)
# Just to see that it's doing something:
embed['html'] = '<p>Hello</p>'
return embed
并在我的设置中添加了这个:
from wagtail.embeds.oembed_providers import youtube
WAGTAILEMBEDS_FINDERS = [
{
'class': 'myapp.embeds.finders.oembed.YouTubeOEmbedFinder',
'providers': [youtube],
},
{
# Handles all other oEmbed providers the default way
'class': 'wagtail.embeds.finders.oembed',
},
]
但没有什么不同 - 标准的 YouTube 嵌入在已发布的页面中。据我所知,我的 find_embed()
方法从未被调用过。我一定是犯了一些愚蠢的错误,但我很难过。
最佳答案
调试变得更加困难,因为我没有意识到一件事:当您重新保存或发布使用它们的页面时,并不总是重新生成嵌入,包括它们的 HTML。它们只有在 URL 更改时才会重新生成。这就是我的 find_embed()
方法从未被调用的原因;因为我只是重新发布页面,没有更改嵌入中使用的 URL。
一旦我意识到这一点,我尝试做的事情的解决方案就很简单了。
在我的 settings.py
中:
from wagtail.embeds.oembed_providers import youtube
WAGTAILEMBEDS_FINDERS = [
{
'class': 'myapp.embeds.finders.oembed.YouTubeOEmbedFinder',
'providers': [youtube],
},
{
# Handles all other oEmbed providers the default way
'class': 'wagtail.embeds.finders.oembed',
},
]
然后在 myapp/embeds/finders/oembed.py
中:
from wagtail.embeds.finders.oembed import OEmbedFinder
class YouTubeOEmbedFinder(OEmbedFinder):
"""
Ensures that all YouTube embeds use the youtube-nocookie.com domain
instead of youtube.com.
"""
def find_embed(self, url, max_width=None):
embed = super().find_embed(url, max_width)
embed['html'] = embed['html'].replace(
'youtube.com/embed',
'youtube-nocookie.com/embed')
return embed
那只是更改我所有现有 YouTube 嵌入的 URL(例如,通过将 ?v=2
添加到它们的 URL 的末尾)然后重新-发布页面。
关于wagtail - 创建自定义 Wagtail OEmbedFinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54556736/
我正在关注 the documentation还有this example在我的 Wagtail 站点中创建自定义 OEmbed Finder。 (最终我想修改 YouTube 视频的 HTML 输出
我是一名优秀的程序员,十分优秀!