您无法动态更改菜单项的路径,因为菜单项已缓存.
不过,AFAIK,有两种方法可以得到你想要的东西.这两种方法都要求您在自定义模块(而不是菜单UI)中使用hook_menu创建菜单项.
第一种方法是创建两个名称相同的菜单项,并设置访问规则,以便一个仅适用于已记录的guest虚拟机,另一个仅适用于经过身份验证的用户.由于Drupal仅显示允许用户访问的菜单项,因此在任何给定时刻只会显示一个菜单项.在Drupal核心中,您可以通过查看user_menu()中的/user/login路径来查看用户模块如何为匿名用户创建菜单项.
第二种方法是创建单个菜单项并在用户登录时检查菜单回调.如果用户已登录,则提供一个页面,如果不是,则提供另一个页面.在Drupal核心中,/user路径就像这样.请参阅user_page以了解代码的工作原理.