Menu 如何向wagtail添加多级菜单支持(支持非wagtail页面)

Menu 如何向wagtail添加多级菜单支持(支持非wagtail页面),menu,submenu,wagtail,Menu,Submenu,Wagtail,如何添加对自定义菜单的支持,这些菜单也适用于非Wagtail页面 例如,通过直接提供注册页面的相对url,如“/account/registration”) 例如,直接向外部页面(如“www.stackoverflow.com”)提供绝对url 我发现这个项目非常有趣:https://github.com/rkhleics/wagtailmenus 不幸的是,is不支持主菜单中的子菜单。Wagtail的一点是,我称之为数据树的内容仅由页面组成(称为a)。此树用作导航的基础,但是,当然,有时您可能

如何添加对自定义菜单的支持,这些菜单也适用于非Wagtail页面

  • 例如,通过直接提供注册页面的相对url,如“/account/registration”)
  • 例如,直接向外部页面(如“www.stackoverflow.com”)提供绝对url
  • 我发现这个项目非常有趣:
    https://github.com/rkhleics/wagtailmenus

    不幸的是,is不支持主菜单中的子菜单。

    Wagtail的一点是,我称之为数据树的内容仅由页面组成(称为a)。此树用作导航的基础,但是,当然,有时您可能希望此树中的导航项不是页面。通过子类化
    页面
    ,我完成了您想要做的事情:

    from django.http import HttpResponseRedirect
    
    class Node(Page):
    
        subpage_types = [your subpage types]
        parent_page_types = [your parent page types]
    
        link = models.CharField(max_length=255, default='', blank='True')
    
        content_panels = Page.content_panels + [
            FieldPanel('link')
        ]    
    
        def serve(self, request):
            if self.link is not None:
                return HttpResponseRedirect(self.link)
            else:
                pass
    
    在模板中:

    {% for item in menu_items %}
        <li>
            <a href="{% if item.specific.link and item.specific.link != '' %}{{ item.specific.link }}{% else %}{% pageurl item %}{% endif %}">{{ item.title }
            </a>
        </li>
    {% endfor %}
    
    {%用于菜单项中的项\u items%}
    
  • {%endfor%}
    感谢您的输入。但这不是我真正想要的。有时我想链接到外部资源。你会怎么做?(我将更新我的帖子并添加此要求)当然。我明白你的要求,我也试过了。我之所以发布这个解决方案,是因为如果您的项目主要是Wagtail,并且您正在从Wagtail页面树呈现主菜单,那么这为您提供了一种在Wagtail页面树中包含临时链接的方法,而无需创建任何其他数据结构。您可以手动在HTML中包含链接(不建议这样做),也可以创建自己的一组基于模型的链接,但如果您希望能够从一个数据树(Wagtail的页面树)简单地呈现菜单,则此解决方案将起作用。另请参阅我为显示模板呈现所做的编辑logic@PhilippS. 这个问题解决得好吗?是的,只是随便玩玩。但是你的代码帮助很大。我只是添加了这一行,以避免将“假页面”添加到站点地图:def get_sitemap_url(self):return[]