基本上我需要将target="_blank"
属性添加到wagtail
Draftail richtext
编辑器中插入的所有外部网址中:
In [2]: wagtail.__version__
Out[2]: '2.0.1'
EDIT-1 : 这不是重复的 。 wagtail
版本2使用完全不同的richtext
编辑器。
建议的answer建议$('a[href^="http://"]').attr('target', '_blank')
,它会将相应的属性添加到包含http://
的页面上的所有链接。这是非常不理想的解决方案,因为页面上可能有更多链接不需要这样的处理。显然必须有更充分的修复,特别是因为wagtail
已经区分了编辑器UI上的Internal
和External
链接(参见附图)。
EDIT-2 :
似乎在wagtail.core.rich_text.feature_registry.FeatureRegistry
类中有一个方法,我最好的理解是为不同的URL类型分配不同的处理程序,但是我不知道这些处理程序是什么,它们是如何获得的叫或如何修改它们?
def register_link_type(self, link_type, handler):
self.link_types[link_type] = handler
答案 0 :(得分:3)
创建文件wagtail_hooks.py并添加以下行:
class NewWindowExternalLinkHandler(LinkHandler):
identifier = 'external'
@classmethod
def expand_db_attributes(cls, attrs):
href = attrs["href"]
return '<a href="%s" target="_blank" rel="noopener noreferrer">' % escape(href)
@hooks.register('register_rich_text_features')
def register_rich_text_handlers(features):
features.register_link_type(NewWindowExternalLinkHandler)