在Joomla组件中添加router.php会中断站点

时间:2013-08-15 13:33:52

标签: joomla custom-component joomla-sef-urls

我正在尝试为我制作的自定义组件添加路由,并且我按照文档介绍了如何执行此操作。但是当我将router.php文件上传到组件时,它将该站点呈现为空白。不确定我是否遗漏了任何东西。就好像整个网站只引用这个新文件,从而给我一个空白页面。

组件的SEF URL的URL是:

index.php/en/products

我构建路由器的方式是让链接看起来像这样:

index.php/en/products/trousers
index.php/en/products/555-123-20

组件\ router.php

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

    if(isset($query['view'])) {
        $segments[] = $query['view'];
        unset($query['view']);
    }
    if(isset($query['cat'])) {
        $segments[] = $query['cat'];
        unset($query['cat']);
    }
    if(isset($query['itemid'])) {
        $segments[] = $query['itemid'];
        unset($query['itemid']);
    }
    if(isset($query['color'])) {
        $segments[] = $query['color'];
        unset($query['color']);
    }

    return $segments;
}

function componentParseRoute($segments) {
    $vars = array();
    switch($segments[0])
    {
        case 'listing':
               $vars['view'] = $this->chooseView($segments[1]);
               break;
        case 'item':
               $vars['id'] = $segments[1].'-'.$segments[2];
               break;
    }
    return $vars;
}

private function chooseView($cat) {
    switch($cat) {
        case '1':
            $cat = 'trousers';
            break;
        case '2':
            $cat = 'jackets';
            break;
    }
    return $cat;
}

1 个答案:

答案 0 :(得分:0)

@MasterAM对private

是正确的

在一个有点相关的说明中,router.php不喜欢位于函数之外的变量。我试图添加一个全局数组,但它无法访问。相反,我做了一个函数来返回数组。