0

在我的 joomla 项目中,有一些隐藏页面(意味着没有直接指向该页面的菜单)。某些页面正在重定向到此页面。

我正在使用此代码访问此页面

$app = JFactory::getApplication();
$app->redirect('index.php?option=com_package&view=testpage');

工作完美。

我为应用程序启用了 SEF URL、URL 后缀、URL 重写。但是这些页面(没有适当的菜单)没有显示 SEF URL。但是那些具有显示 SEF url 的页面的菜单项的页面。

所以我添加了一个隐藏菜单并在该菜单中添加了这些所有页面。但它没有显示 SEF URL。

对这些页面启用 SEF URL 有什么想法吗?

请帮助提前谢谢

我的 Router.php 看起来像

defined('_JEXEC') or die;


function GadminBuildRoute(&$query)
{
    $segments = array();

    if (isset($query['task'])) {
        $segments[] = implode('/',explode('.',$query['task']));
        unset($query['task']);
    }
    if (isset($query['id'])) {
        $segments[] = $query['id'];
        unset($query['id']);
    }

    return $segments;
}

/**
 * @param   array   A named array
 * @param   array
 *
 * Formats:
 *
 * index.php?/gadmin/task/id/Itemid
 *
 * index.php?/gadmin/id/Itemid
 */
function GadminParseRoute($segments)
{
    $vars = array();

    // view is always the first element of the array
    $count = count($segments);

    if ($count)
    {
        $count--;
        $segment = array_pop($segments) ;
        if (is_numeric($segment)) {
            $vars['id'] = $segment;
        }
        else{
            $count--;
            $vars['task'] = array_pop($segments) . '.' . $segment;
        }
    }

    if ($count)
    {   
        $vars['task'] = implode('.',$segments);
    }
    return $vars;
}
4

2 回答 2

0

隐藏菜单需要是已发布(未挂起)且无位置/不存在位置的菜单模块;这样Joomla会考虑它;还必须启用菜单项。

此外,必须在 view/tmpl 文件夹中使用 default.xml 设置视图,并使用您想要的相同参数。

如果这仍然无法正常工作,可能是 router.php 中的错误

于 2013-08-10T07:36:00.387 回答
0

您没有通过路由器传递 URL。尝试...

 $app->redirect(JRoute::_('index.php?option=com_package&view=testpage'));
于 2014-06-29T22:50:49.343 回答