Joomla 2.5-可见菜单项-但需要登录才能访问



我遵循了关于ACL的教程-http://community.joomla.org/blogs/community/1252-16-acl.html

为了让一切都清楚:这就是我需要的:

  1. 具有链接到文章的菜单项
  2. 用户进入(尚未登录)网站(用户是否已经注册并不重要)
  3. 该用户应该看到菜单项
  4. 用户单击菜单项
    • 如果用户未登录-要求用户输入用户名/通行证
    • 如果用户登录->转到6
  5. 登录完成后,用户可以看到链接菜单项的文章内容

我的目标是拥有一个对所有用户都可见的菜单项:已登录和未登录。但单击时-只有已登录的用户才能查看菜单项指向的内容。如果用户未登录,则应显示登录表单。

在遵循上面的教程之后,我得到了一个菜单项,它对没有登录的用户来说是完全不可见的

如何使菜单项对所有人都可见,但需要登录才能查看内容?

谢谢。

编辑1:

我刚刚找到了这个解决方案http://docs.joomla.org/Auto_redirect_guests_to_login这是唯一的解决方案吗?我有一个巨大的树状菜单结构。这意味着我需要一个我巨大菜单的克隆。。。每次我更改菜单项名称时,我都应该做两次(在可见菜单和不可见菜单中)。如果没有2个菜单,还有其他解决方案吗?

编辑2:

找到了另一个解决方案(破解核心文件)。这是当菜单项设置为"公共",但物品ACL设置为"已注册"时

components/com_content/views/article/view.html.php

来自

// Check the view access to the article (the model has already computed the values).
if ($item->params->get('access-view') != true && (($item->params->get('show_noauth') != true &&  $user->get('guest') ))) {
JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR'));
return;
}

// Check the view access to the article (the model has already computed the values).
if ($item->params->get('access-view') != true && (($item->params->get('show_noauth') != true &&  $user->get('guest') ))) {
// Redirect to login
$uri = JFactory::getURI();
$app->redirect('index.php?option=com_users&view=login&return=' . base64_encode($uri), JText::_('Members please login to view this page. If you are not a member please <a href="/component/users/?view=registration">register here<a>'));
return;
}

如何覆盖该代码并避免对核心文件进行黑客攻击?

或者可能还有一个更优雅的解决方案?

谢谢。

您可以做的是覆盖模板并将登录表单添加到提供消息的页面中。模板覆盖将允许您在不侵入核心文件的情况下向页面添加额外内容,因此在更新Joomla时,它仍然存在。

有关如何覆盖的更多信息,请参阅下面的链接:

http://docs.joomla.org/How_to_override_the_output_from_the_Joomla_核心

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新