Поменять router.php в папке с компонентом.
Ниже набросок для категорий, но суть такая - вырезаем task (в данном случае = category) и view ( = itemlist) при опред. условиях в K2BuildRoute, а в K2ParseRoute, если отсутствует $segments[1] и $segments[2] (т.е. есть только id-alias категории), дописываем нужные task и view.
Метод частный, работает только для ссылок категорий (остальные ссылки формируются стандартно - katalog/item/16-name.htmk, но можно и под конкретный проект заточить:
<?php
/**
 * @version		$Id: router.php 1034 2011-10-04 17:00:00Z joomlaworks $
 * @package		K2
 * @author		JoomlaWorks http://www.joomlaworks.gr
 * @copyright	Copyright (c) 2006 - 2011 JoomlaWorks Ltd. All rights reserved.
 * @license		GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */
// no direct access
defined('_JEXEC') or die('Restricted access');
function K2BuildRoute( & $query) {
    $segments = array ();
    $menu = & JSite::getMenu();
    if ( empty($query['Itemid'])) {
        $menuItem = & $menu->getActive();
    }
    else {
        $menuItem = & $menu->getItem($query['Itemid']);
    }
    $mView = ( empty($menuItem->query['view']))?null:$menuItem->query['view'];
    $mTask = ( empty($menuItem->query['task']))?null:$menuItem->query['task'];
    $mId = ( empty($menuItem->query['id']))?null:$menuItem->query['id'];
    $mTag = ( empty($menuItem->query['tag']))?null:$menuItem->query['tag'];
    if ( isset ($query['layout'])) {
        unset ($query['layout']);
    }
    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mId == @intval($query['id']) &&  @intval($query['id']) > 0 ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['id']);
    }
    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mTag == @$query['tag'] && isset($query['tag']) ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['tag']);
    }
    if ( isset ($query['view'])) {
        $view = $query['view'];
if($query['view'] == 'itemlist') {}
else {
        $segments[] = $view;
}
        unset ($query['view']);
    }
    if (@ isset ($query['task'])) {
        $task = $query['task'];
if($query['task'] == 'category') {}
else {
        $segments[] = $task;
}
        unset ($query['task']);
    }
    if ( isset ($query['id'])) {
        $id = $query['id'];
        $segments[] = $id;
        unset ($query['id']);
    }
    if ( isset ($query['cid'])) {
        $cid = $query['cid'];
        $segments[] = $cid;
        unset ($query['cid']);
    }
    if ( isset ($query['tag'])) {
        $tag = $query['tag'];
        $segments[] = $tag;
        unset ($query['tag']);
    }
    if ( isset ($query['year'])) {
        $year = $query['year'];
        $segments[] = $year;
        unset ($query['year']);
    }
    if ( isset ($query['month'])) {
        $month = $query['month'];
        $segments[] = $month;
        unset ($query['month']);
    }
    if ( isset ($query['day'])) {
        $day = $query['day'];
        $segments[] = $day;
        unset ($query['day']);
    }
    if ( isset ($query['task'])) {
        $task = $query['task'];
        $segments[] = $task;
        unset ($query['task']);
    }
    return $segments;
}
function K2ParseRoute($segments) {
    $vars = array ();
if(!isset($segments[1]) && !isset($segments[2])){
$vars['id'] = $segments[0];
$vars['task'] = 'category';
$vars['view'] = 'itemlist';
}else {
    $vars['view'] = $segments[0];
    if (!isset($segments[1]))
        $segments[1]='';
    $vars['task'] = $segments[1];
    if ($segments[0] == 'itemlist') {
        switch($segments[1]) {
            case 'category':
                $vars['id'] = $segments[2];
                break;
            case 'tag':
                if (isset($segments[2]))
                    $vars['tag'] = $segments[2];
                break;
            case 'user':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;
            case 'date':
                if (isset($segments[2]))
                    $vars['year'] = $segments[2];
                if (isset($segments[3]))
                    $vars['month'] = $segments[3];
                if (isset($segments[4])) {
                    $vars['day'] = $segments[4];
                }
                break;
        }
    }
    else if ($segments[0] == 'item') {
        switch($segments[1]) {
            case 'edit':
                if (isset($segments[2]))
                    $vars['cid'] = $segments[2];
                break;
            case 'download':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;
            default:
                $vars['id'] = $segments[1];
                break;
        }
    }
   
}
 return $vars;
}