在WagTail中,如何显示嵌入在RTF中的文档链接的完整文档URL?

时间:2019-06-25 14:56:52

标签: wagtail

我正在建立一个wagtail网站,该网站需要将所有链接显示为完整的url,因为这些页面也将用作电子邮件模板。

Wagtail版本2.5.1

我的主要问题是嵌入RichTextFields中的文档链接。当前的解决方法是在上传文档后将它们作为外部链接插入。

我已经查看过features.register_link_handler,但不清楚如何处理文档链接。我假设它将需要以某种方式位于wagtail_hooks.py register_rich_text_features中。

3 个答案:

答案 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 =“直接”设置。

这将在使用远程存储时提供直接文档。