你现在的位置:首页 > PHP网站建设知识库 > Joomla > 正文

如何自动引导Joomla用户登录

功能需求

设想你有一些菜单项目,需要用户登录后才可以使用相应功能,比如“提交文章”。你希望无论用户是否处于登录状态,他们都可以看到该菜单项;如果用户已登录,他们就可以直接进入该功能页面;如果用户未登录:

  • 向用户呈现登录表单。
  • 用户成功登录后,便可以进入该功能页面。
  • 如果用户尚未注册,他们可以选择进行注册或是浏览其他页面。

解决方案

下面是针对该功能需求的解决方案:

  1. 在菜单管理(menu manager)中创建新菜单,命名为“hidden menu”。
  2. 创建需要用户登录后才可以进行功能操作的菜单项目(比如“提交文章”),为其设置浏览权限(本例中我们为其设置为“Special”;当然也可以设置为"Registered")。
  3. 我们不需要为这个“hidden menu”创建任何module,因为它不需要在页面上显示出来。
  4. 现在创建“真正的”菜单(比如"main menu"),并创建我们所需的菜单项(比如“提交文章”),用来向所有用户显示其标题。
    • 将该菜单项的类型设置为“Alias”。
    • 通过参数设置将该菜单项关联至我们之前创建的“hidden menu”中的“提交文章”。
    • 将该菜单项的浏览权限设置为“Public”,因为我们需要所有用户无论登录或未登录,都可以看到这个菜单项。
  5. 为这个新创建的“真正的”菜单创建module,将其类型设置为"mod_mainmenu"。
  6. 如果需要创建二级菜单,切记要在真正的"main menu"中创建二级菜单项,而不是在“hidden menu”中创建。

现在,当未登录用户通过我们新创建的菜单进入“提交文章”页面后,将被引导至登录页面。如果用户成功登录,他们将会被带回“提交文章”页面。如果用户处于已登录状态,则可以直接进入“提交文章”页面使用相关功能。

实例

此例中,我已有如下菜单项: 1.HOME 2.BLOG 3.WIKI 4.DIRECTORY 5.CLASSIFIEDS 6.FAQS7.SHOP 8.Contact US

我希望所有这些菜单项都可以被所有用户看到,无论是否处于登录状态。但我希望其中3,4,5,6,7这几个菜单项只允许注册并已登录的用户才可以进入使用。换句话说,未登录的用户点击这几个菜单项后将被引导至登录页面。

所以我首先创建一个"hidden menu",在其中为3,4,5,6,7各自创建一个新菜单项,并为它们设置需要登录才可以继续使用的浏览权限。然后创建一个“真正的”菜单,对应 3,4,5,6,7各自创建一个新菜单项,将它们的菜单类型设置为"Alias",并将每一个菜单项都通过参数设置关联至"hidden menu"中对应的菜单项。搞定。