我构建了一个自定义组件,该组件只能被登录用户访问。我正在考虑检查JFactory::getUser()->guest
,如果已设置,请将其重定向到自定义页面。在joomla中同时显示注册和登录页面自定义组件
现在我更喜欢此页面包含注册和登录选项,但joomla本身似乎没有此功能。我是否必须将此功能用于自定义组件,或者有另一种解决方案?
我构建了一个自定义组件,该组件只能被登录用户访问。我正在考虑检查JFactory::getUser()->guest
,如果已设置,请将其重定向到自定义页面。在joomla中同时显示注册和登录页面自定义组件
现在我更喜欢此页面包含注册和登录选项,但joomla本身似乎没有此功能。我是否必须将此功能用于自定义组件,或者有另一种解决方案?
你真的应该使用内置的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控制访问你的组件以及自定义登录/重新注册页面,而不必赘述任何不必要的扩展。
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;
}