我正在使用 joomla 2.5.9 版本,如果我在单击权限访问仅用于注册的文章时未登录,我希望 Joomla 将我重定向到登录页面,但 Joomla 会返回此消息:您无权查看此资源。
而且我看不出为什么 joomla 默认没有重定向到登录页面的任何原因。
谢谢
我正在使用 joomla 2.5.9 版本,如果我在单击权限访问仅用于注册的文章时未登录,我希望 Joomla 将我重定向到登录页面,但 Joomla 会返回此消息:您无权查看此资源。
而且我看不出为什么 joomla 默认没有重定向到登录页面的任何原因。
谢谢
这不能回答您的确切问题,但我认为这是一个很好的解决方法。我正在处理同样的问题。我目前的方法是检查“未授权”字符串的消息,然后根据该字符串设置一个标志。然后,您可以在模板中的任何位置检查该标志并重定向,或者只是选择显示登录表单。`
/* get message from app */
$app = JFactory::getApplication();
$messages = $app->getMessageQueue();
/* set login flag to 0 */
$showlogin = 0;
/* if there is a message set... */
if (isset($messages[0])) {
/* loop through messages and check for the "not authorised" string */
foreach ($messages as $msg) {
if ($msg["type"] == "error" && strpos($msg["message"], "not authorised") ) {
/* if found, update login flag */
$showlogin = 1;
}
}
}
/* include in template body - you could redirect here instead of including login form */
if ($showlogin) { ?>
<jdoc:include type="modules" name="login-form" style="none" />
<?php } ?>
`
当您尝试访问不可见但该类别公开可见的文章时,会发生这种情况。
似乎它不被认为是一个错误,但我认为它是一个非常意想不到的“功能”。
要解决此问题,您可以编辑:
joomla/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') == false && ($item->params->get('show_noauth', '0') == '0'))
{
$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error');
$uri = urlencode(base64_encode(JURI::getInstance()->toString()));
JFactory::getApplication()->redirect(
JRoute::_('index.php?option=com_users&view=login&return='. $uri, false)
);
return;
}
这将显示登录屏幕并在成功登录后返回文章。
如果你不想编辑核心文件(因为你想更新你的系统),你必须创建一个系统插件来覆盖它。