首页 > 解决方案 > 在 WagTail 中,如何显示嵌入在富文本中的文档链接的完整文档 URL?

问题描述

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

鹡鸰版本 2.5.1

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

我查看了 features.register_link_handler 但不清楚如何处理文档链接。我假设它需要以某种方式在 wagtail_hooks.py register_rich_text_features 中。

标签: wagtail

解决方案


我最终在 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>" 

推荐阅读