我写了一个自定义的非mvc组件(因为我不知道如何制作mvc组件,现在它的大小已经增长,所以改变它将花费更多的时间,这对我来说是不可能的)'com_group'对我的客户来说。
一切都很好,但是当涉及到sef网址时,它会为我提供mysite/component/group/home
等网址以及mysite/index.php?option=com_group&view=home
等非网址网址,但客户端希望从网址中删除组件字。
我还为我的组件制作了一个路由器,它正确地删除了每个参数,但它没有删除组件。我也为它做了一个菜单项,但它没有帮助我。
这是我的router.php
<?php //error_reporting(E_ALL);
defined ( '_JEXEC' ) or die ();
jimport('joomla.error.profiler');
function GroupBuildRoute(&$query){
$segments = array();
//$query['Itemid'] = 201;
if( isset($query['view']) )
{
$segments[] = $query['view'];
unset( $query['view'] );
};
if( isset($query['pin']) )
{
$segments[] = $query['pin'];
unset( $query['pin'] );
};
return $segments;
}
function GroupParseRoute($segments){
$vars = array();
$app =& JFactory::getApplication();
$menu =& $app->getMenu();
$item =& $menu->getActive();
$items = $menu->getItems('component', 'com_group');
if (!isset($query['Itemid']))
$query['Itemid'] = 180;//$items->id;
// Count segments
$count = count( $segments );
//Handle View and Identifier
switch( $segments['0'] ){
case 'group_page':
$vars['view'] = 'group-pages';
break;
case 'group':
$vars['view'] = 'home';
break;
case 'folow':
$vars['view'] = 'follow';
break;
case 'start':
$vars['view'] = 'start-group';
break;
case 'group_eventplan':
$vars['view'] = 'group-event-plan';
break;
case 'group_member':
$vars['view'] = 'group-members';
break;
case 'manage_subscription':
$vars['view'] = 'manage-subscription';
break;
case 'group_msg':
$vars['view'] = 'group-message';
break;
case 'group_invite':
$vars['view'] = 'invite-friends';
break;
case 'other_group':
$vars['view'] = 'other-groups';
break;
case 'groupinfo':
$vars['view'] = 'group-info';
break;
case 'home':
$vars['view'] = 'group-home';
break;
}
if (!isset($item)) {
$vars['view'] = $segments[0];
$vars['pin'] = $segments[1];
return $vars;
}
if($count==2){
$vars['view'] = $vars['view'];
$vars['pin'] = $segments[1];
return $vars;
}
return $vars;
}
我还想将group_msg
替换为group-message
,以便新网址component/group/group-message/
不是component/group/group_msg
我尝试了Remove component part from sef url, menu item not completely,但没有帮助我。
答案 0 :(得分:1)
最后,我设法自己解决了这个问题。我提到了帮助他人的步骤。 (如果您希望源代码与项目一起使用,请写信给我)
步骤1:添加菜单项(Joomla Administrator - &gt;菜单 - &gt;菜单管理器 - &gt;添加新项目)
步骤2:新添加的菜单项将提供一个ID,将此ID添加到您组件的所有网址中。
?的index.php选项= com_your_component_name&安培; ITEMID = newly_generated_id
是的。
答案 1 :(得分:0)
我要尝试的第一个选项是sh404SEF
祝你好运!编辑
如果SEF扩展程序不适合您,可能使用.htaccess和redirect,如下所示:
RewriteEngine On
Redirect /component/group/home /something-else