django Wagtail -覆盖richtexteditor中的内部链接

u3r8eeie  于 2023-01-14  发布在  Go
关注(0)|答案(1)|浏览(140)

由于我盲目地使用wagtail,内部链接会因为使用了设置中列出的网址而变得混乱。相反,我希望能够覆盖相同的网址并将它们指向我的前端。
这篇文章谈到了2018年的一些情况,但我希望这已经改变了?Wagtail: Is it possible to disable prepending internal link's with the site domain?
对于外部链接,你可以这样做来覆盖它:

class NewWindowExternalLinkHandler(LinkHandler):
    # This specifies to do this override for external links only.
    identifier = 'external'

    @classmethod
    def expand_db_attributes(cls, attrs):
        href = attrs["href"]
        print(attrs)
        # Let's add the target attr, and also rel="noopener" + noreferrer fallback.
        # See https://github.com/whatwg/html/issues/4078.
        return '<a href="%s" target="_blank" rel="noopener noreferrer">' % escape(href)

是否可以对内部链接执行相同的操作?
例如,现在,因为我使用多站点设置,我的链接看起来像:https://localhost.my-backend-api-domain.com/page/pagename我希望它看起来像这样:https://my-frontend-domain.com/page/pagename

a5g8bdjr

a5g8bdjr1#

同时我也在努力改变内部页面链接的行为,直觉上人们会认为按照外部链接的例子,看到标识符为external
但事实并非如此。在进一步挖掘源代码后,我能够如下改变外部链接的行为:

from django.utils.html import escape
from wagtail import hooks
from wagtail.rich_text.pages import PageLinkHandler

from wagtail.models import Page

class TargetNewInternalLinkHandler(PageLinkHandler):
    @classmethod
    def expand_db_attributes(cls, attrs):
        try:
            page = cls.get_instance(attrs)
            return '<a href="%s" class="uk-link uk-link-text">' % escape(page.localized.specific.url)
        except Page.DoesNotExist:
            return "<a>"

@hooks.register('register_rich_text_features')
def register_external_link(features):
    features.register_link_type(TargetNewInternalLinkHandler)

我知道这并没有完全回答你的问题,但它能帮助你找到解决办法吗?

相关问题