0

我正在使用 joomla 2.5.9 版本,如果我在单击权限访问仅用于注册的文章时未登录,我希望 Joomla 将我重定向到登录页面,但 Joomla 会返回此消息:您无权查看此资源。

而且我看不出为什么 joomla 默认没有重定向到登录页面的任何原因。

谢谢

4

2 回答 2

0

这不能回答您的确切问题,但我认为这是一个很好的解决方法。我正在处理同样的问题。我目前的方法是检查“未授权”字符串的消息,然后根据该字符串设置一个标志。然后,您可以在模板中的任何位置检查该标志并重定向,或者只是选择显示登录表单。`

/* 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 } ?>

`

于 2013-11-14T05:00:09.080 回答
0

当您尝试访问不可见但该类别公开可见的文章时,会发生这种情况。

似乎它不被认为是一个错误,但我认为它是一个非常意想不到的“功能”。

要解决此问题,您可以编辑:

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;
    }

这将显示登录屏幕并在成功登录后返回文章。

如果你不想编辑核心文件(因为你想更新你的系统),你必须创建一个系统插件来覆盖它。

于 2017-05-10T12:37:34.120 回答