Ссылку вида http://сайт/алиас_пункта_меню/алиас_материала_компонента в своем компоненте сделать очень просто:
(итак если вы каркас делали моим сервисом http://ссылка вырезана, так как домен распространяет вирусы/sozdanie-komponenta.html)
1. Формирование ссылки: КомпонентHelper::getRoute('имя_вашего_компонента', 'вид_списка', '&id=' . $item->alias);
2. В роутере в методе КомпонентBuildRoute( &$query ) в месте
if ( isset( $query['view'] ) ) {
$segments[] = $query['view']; // удалить эту строку что бы не было вида в ссылке
unset( $query['view'] );
}
3. в роутере в методе КомпонентParseRoute( $segments )
Вставить в начале такие строки:
$vars = array();
$count = count( $segments );
$menu = JMenu::getInstance( 'site' )->getActive();
$view = isset( $menu->query['view'] )? $menu->query['view'] : '';
if ( $view === 'Вид_Списка_на_который_завязан_пункт_меню' && $count == 1 ) {
$vars['view'] = 'Вид_одиночной_записи';
$vars['id'] = $segments[0];
return $vars;
}
После этого у вас будет открываться вид одиночной записи, и alias будет в переменной id!
Ссылки вида http://сайт/алиас_материала_компонента чуть сложнее делать!
1. Надо связать вид материала (без привязки id материала), или любой пустой вид, с пунктом меню! и Главное пункт меню сделать главной страницей! А дальше
2. Делаем ссылку КомпонентHelper::getRoute('имя_вашего_компонента', 'имя_вида_с_которым_вы_связали_главный_пункт_менб', '&id=' . $item->alias);
3. в КомпонентBuildRoute( &$query ) делаем все тоже что и выше (тоесть удаляем строку $segments[] = $query['view']
4. в КомпонентParseRoute( $segments ) все тоже самое, только меняем на нужные названия видов!