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)
Я знаю, что это не совсем отвечает на ваш вопрос. Но поможет ли это вам найти решение?