是否可以使用自定义函数覆盖 wagtail.hooks.register 函数?
Is it possible to override a wagtail.hooks.register function with a custom function?
是否可以使用自定义函数覆盖 wagtail @hooks.register
函数或一起注销函数?
我想要实现的一个示例是编辑 wagtail/contrib/styleguide/wagtail_hooks.py
中的 register_styleguide_menu_item
函数,以便仅向超级用户显示样式指南。
例如;我想覆盖当前功能:
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
return MenuItem(
_("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
)
有了这个:
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
return AdminOnlyMenuItem(
_("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
)
(注意第三行从 MenuItem 到 AdminOnlyMenuItem 的变化)
wagtail 钩子的文档可在 https://docs.wagtail.org/en/stable/reference/hooks.html 获得,但它不涵盖这种情况。
是否有实现此目的的机制?
要修改基于 request
的菜单项,您需要使用不同的钩子。
或者construct_main_menu
for the main menu or construct_settings_menu
for the settings menu.
from wagtail.core import hooks
@hooks.register('construct_settings_menu')
def hide_styleguide_menu_item(request, menu_items):
if not request.user.is_superuser:
menu_items[:] = [item for item in menu_items if item.name != 'styleguide']
注意:item.name 可能不完全是 'styleguide'
,可能是 'Styleguide'
。
是否可以使用自定义函数覆盖 wagtail @hooks.register
函数或一起注销函数?
我想要实现的一个示例是编辑 wagtail/contrib/styleguide/wagtail_hooks.py
中的 register_styleguide_menu_item
函数,以便仅向超级用户显示样式指南。
例如;我想覆盖当前功能:
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
return MenuItem(
_("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
)
有了这个:
@hooks.register("register_settings_menu_item")
def register_styleguide_menu_item():
return AdminOnlyMenuItem(
_("Styleguide"), reverse("wagtailstyleguide"), icon_name="image", order=1000
)
(注意第三行从 MenuItem 到 AdminOnlyMenuItem 的变化)
wagtail 钩子的文档可在 https://docs.wagtail.org/en/stable/reference/hooks.html 获得,但它不涵盖这种情况。
是否有实现此目的的机制?
要修改基于 request
的菜单项,您需要使用不同的钩子。
或者construct_main_menu
for the main menu or construct_settings_menu
for the settings menu.
from wagtail.core import hooks
@hooks.register('construct_settings_menu')
def hide_styleguide_menu_item(request, menu_items):
if not request.user.is_superuser:
menu_items[:] = [item for item in menu_items if item.name != 'styleguide']
注意:item.name 可能不完全是 'styleguide'
,可能是 'Styleguide'
。