2012-01-26 52 views
0

我构建了一个自定义组件,该组件只能被登录用户访问。我正在考虑检查JFactory::getUser()->guest,如果已设置,请将其重定向到自定义页面。在joomla中同时显示注册和登录页面自定义组件

现在我更喜欢此页面包含注册和登录选项,但joomla本身似乎没有此功能。我是否必须将此功能用于自定义组件,或者有另一种解决方案?

回答

1

你真的应该使用内置的ACL来控制用户的访问,而不是试图把它自己的代码。这就是ACL开始的关键点。下面是该ACL在管理和站点的前端是如何工作的教程 -

http://docs.joomla.org/ACL_Tutorial_for_Joomla_1.6

这里是添加ACL到组件的教程 -

http://docs.joomla.org/Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_14

我想你使用ACL系统可以更好地提供服务,因为它使您拥有更多的灵活性 - 例如稍后添加额外的用户组和权限,而无需触摸代码。

完成此设置后,制作自定义注册或登录页面就像默认com_user登录视图的模板覆盖一样简单。您需要合并这些文件 -

对于页面的登录部分:

JOOMLA/components/com_users/views/login/tmpl/default.php 

对于页面的注册部分:

JOOMLA/components/com_users/views/registration/tmpl.default.php 

然后把新的和改进的文件在这里:

JOOMLA/templates/YOUR TEMPLATE/html/com_users/login/default.php 

这会给你ACL控制访问你的组件以及自定义登录/重新注册页面,而不必赘述任何不必要的扩展。

0

Joomla!的默认登录模块/页面仅提供注册页面的链接。

快速搜索the JED shows about 200 login extensions,有可能他们其中一个做你想做的。

但是,如果您希望将它与对组件的访问集成在一起,则必须自己编写代码。正常的过程是,如果用户试图访问资产视图,view.html.php(或类似的)将检查他们的权限,并根据组件发布JError消息,并可能将其重定向到系统登录。

例如。 com_content

// 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; 
    } 
相关问题