我为客户编写了一个自定义的非mvc组件(因为我不知道如何制作mvc组件,现在它已经变大了,因此更改它将花费更多时间,这对我来说是不可能的)。
一切都很好,但是当涉及到sef url时,它给了我类似的URL,而给了我mysite/component/group/home
非sef url,mysite/index.php?option=com_group&view=home
但是客户端希望从URL中删除组成词。
我还为组件制作了一个路由器,该路由器可以正确删除每个参数,但不能删除组件。我也为此做了一个菜单项,但是并没有帮助我。
这是我的 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
也让新的URL应该是component/group/group-message/
不component/group/group_msg
我尝试从sef url中删除组件部分,菜单项未完全删除,但没有帮助我。
最终我设法自己解决了这个问题。我提到的是为帮助他人而采取的步骤。(如果您想让源代码在您的项目中使用它,请写信给我)
步骤1:添加菜单项(Joomla Administrator->菜单->菜单管理器->添加新项)
第2步:将为新添加的菜单项提供一个ID,像这样将此ID添加到组件的所有URL中。
index.php?option = com_your_component_name&Itemid = newly_generation_id
而已。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句