我只为Guest(未登录用户)创建了一个菜单项。如果用户登录,它将从菜单中消失。它工作得很好......
但是我注意到,当我将链接添加到浏览器中的Guest菜单项时,当我没有进入时,它显示非常恶心 jos-错误:您无权查看此资源
我想找到一种方法来跟踪此类错误并重定向到自定义404页面或其他页面。
请在这个问题上帮助我。
由于
答案 0 :(得分:0)
JERROR_ALERTNOAUTHOR
语言字符串中的字符串您无权查看此资源并在includes/application.php
函数中触发:
public function authorise($itemid)
{
$menus = $this->getMenu();
$user = JFactory::getUser();
if (!$menus->authorise($itemid))
{
if ($user->get('id') == 0)
{
// Redirect to login
$uri = JFactory::getURI();
$return = (string)$uri;
$this->setUserState('users.login.form.data', array( 'return' => $return ) );
$url = 'index.php?option=com_users&view=login';
$url = JRoute::_($url, false);
$this->redirect($url, JText::_('JGLOBAL_YOU_MUST_LOGIN_FIRST'));
}
else {
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
}
}
}
您可以更改此功能并添加重定向或使用所需的消息更改文本字符串。
可以使用redirect()方法完成重定向。
重定向语法的示例:
$app = JFactory::getApplication();
$app->redirect(JRoute::_(JURI::root().'index.php'));
请确保您在未创建override system plugin的情况下无法更改application.php
。
希望这有帮助