我正在建立一个wagtail网站,该网站需要将所有链接显示为完整的url,因为这些页面也将用作电子邮件模板。
Wagtail版本2.5.1
我的主要问题是嵌入RichTextFields中的文档链接。当前的解决方法是在上传文档后将它们作为外部链接插入。
我已经查看过features.register_link_handler,但不清楚如何处理文档链接。我假设它将需要以某种方式位于wagtail_hooks.py register_rich_text_features中。
答案 0 :(得分:0)
我最终在wagtail_hooks.py中为此创建了一个register_rich_text_features链接处理程序
DocumentFullLinkHandler(DocumentLinkHandler)类:
@classmethod
def expand_db_attributes(cls, attrs):
try:
document = cls.get_instance(attrs)
current_site = Site.objects.get_current()
document_url = (
document.url
if document.url.startswith(settings.PATH_PREFIX)
else f"{settings.PATH_PREFIX}{document.url}"
)
full_url = f"https://{current_site.domain}{document_url}"
return f'<a href="{escape(full_url)}">'
except (ObjectDoesNotExist, KeyError):
return "<a>"
答案 1 :(得分:0)
@ sw12k我尝试应用相同的解决方案,但无法使其正常工作,但是...我想我发现了一个更简单的解决方案,确实可以解决问题。
在html模板中,当您渲染RichTextField时,我从以下位置移动:
{{ page.description|safe }}
对此:
{{ page.description|richtext }}
现在文档链接格式正确,下载链接也可以正常工作。
希望有帮助。
答案 2 :(得分:0)
真正的答案是升级到Wagtail 2.7,然后设置
WAGTAILDOCS_SERVE_METHOD =“直接”设置。
这将在使用远程存储时提供直接文档。