Есть ссылка сформированная в нашем компоненте
// здесь цикл foreach
$link = "index.php?view=object_list&alias_category=kommercheskaya-nedvizhimost&Itemid=140"; // Если указываем Itemid компонента, то значение option не нужно!
JRoute::_($link);
После получаем ЧПУ url:
site.ru/nedvizhimost/kommercheskaya-nedvizhimost.htmlРоутер у нас работает правильно за исключением одного НО,
Я хочу делать выборку объектов из БД по id категории, а не по алиасу.
Обойти это можно только дополнительными запросами к БД, но ведь чем меньше запросов тем производительнее система работает.
Прошу помощи в решении задачи:
Мой роутер
function MycompBuildRoute( &$query )
{
$segments = array();
if( isset($query['view']) ){ unset($query['view']);}
if( isset($query['task']) ){ $segments[] = $query['task']; unset($query['task']); }
if( isset($query['al_category']) ){$segments[] = $query['al_category']; unset($query['al_category']); }
if( isset($query['id']) ){ $segments[] = $query['id']; unset($query['id']); }
if( isset($query['limitstart']) ){ unset($query['limitstart']); }
return $segments;
}
function MycompParseRoute( $segments )
{
$vars = array();
$count = count($segments);
$menu = JMenu::getInstance('site')->getActive();
$view = isset($menu->query['view'])? $menu->query['view'] : '';
if( $view === 'object_list' && $count == 1){// && $count == 1
$vars['view'] = 'object_list';
$vars['al_category'] = str_replace( ':', '-', $segments[0] );
return $vars;
}
if( $view === 'object_list' && $count == 2 ){// && $count == 2
$vars['view'] = 'object_view';
$vars['al_category'] = str_replace( ':', '-', $segments[0] );
$vars['id'] = $segments[1];
return $vars;
}
}
Моя сылка
// здесь цикл foreach
$link = "index.php?view=object_list&id_category='.$cat->id.'&al_category='.$cat->alias.'&Itemid=140";
JRoute::_($link);
Результат работы ЧПУ
site.ru/nedvizhimost/kommercheskaya-nedvizhimost.html?id_category=188Возможно ли передать id_category в URL или как-то ещё, но без участия
?id_category=188То есть замаскировать под
kommercheskaya-nedvizhimost.html ??
Или может есть какие другие варианты решения данного вопроса?
так как уровень вложенности может быть и больше сайт.ру/статья/материал/новости/вовость и всё это хочется без
сайт.ру/12-статья/222-материал/134324-новости/3-вовость