Wagtail - переопределение внутренних ссылок в richtexteditor

Поскольку я использую wagtail без головы, внутренние ссылки становятся беспорядочными из-за того, что они используют site-url, указанный в настройках. Вместо этого я хочу иметь возможность переопределить тот же URL и направить их на мой frontend.

В этом посте немного говорится об этом в 2018 году, но я надеюсь, что это изменилось? Трясогузка: Можно ли отключить добавление к внутренней ссылке домена сайта?

Для внешних ссылок вы сделаете что-то вроде этого, чтобы переопределить его:

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

Также я пытался изменить поведение внутренних ссылок на страницу. Интуитивно можно подумать, что нужно следовать примеру внешней ссылки и изменить идентификатор на 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)

Я знаю, что это не совсем отвечает на ваш вопрос. Но поможет ли это вам найти решение?

Вернуться на верх