我想扩展 Wagtail 的 PageLinkHandler 以将内部
PageChooser
链接与 AnchorLink
组合起来,因此模板输出为 <a href="/mypage#myanchor"
。
class AnchorPageLinkHandler(PageLinkHandler):
identifier = 'page_anchor'
@staticmethod
def get_model():
return Page
@classmethod
def get_instance(cls, attrs):
return super().get_instance(attrs).specific
@classmethod
def expand_db_attributes(cls, attrs):
try:
page = cls.get_instance(attrs)
hash_id = attrs["hash_id"]
return '<a href="{}#{}">'.format(escape(
page.localized.specific.url), hash_id)
except Page.DoesNotExist:
return "<a>"
@hooks.register('register_rich_text_features')
def register_link_handler(features):
features.register_link_type(AnchorPageLinkHandler)
我已经做到了这一点,但有两个问题:i)
page_anchor
没有显示在链接编辑器小部件中,如何启用它? ii) 当我启用它时,如何将 hash_id
文本输入添加到小部件?