从SEF链接joomla中删除一部分

时间:2013-01-25 10:26:19

标签: php joomla joomla-sef-urls

我想在我的Joomla网站上创建SEF网址root/<menu-item-alias>/<view-name>/<item-alias>

我意识到,如果我在MyComponentBuildRoute()中添加任何内容以返回函数route.php的值,它总会显示在我的网址上:

$segments[] = $view;
$segments[] = $item_alias;
return $segments;

我看看Joomla中的com_content,它没有<view-name>部分,只有root/<menu-item-alias>/<item-alias>但是在代码中还有类似

的内容

$segments[] = $view;

我怎么能像默认的com_content那样做?如何从SEF链接中删除视图名称部分或任何其他部分?

2 个答案:

答案 0 :(得分:2)

不建议编辑joomla核心,如果你可以在不修改核心的情况下进行编辑,那就太棒了。我建议使用Artio JoomSEF,它是一个允许您编辑SEF网址的组件,因此您可以为每个页面决定在www.yourdomain.tld /

之后您的网址是什么

enter image description here

完整图片位于:http://www.diystash.com/sefproblem.png

希望这有帮助

答案 1 :(得分:0)

BuildRoute()中的

仅向$ segment添加您希望在网址中看到的值;

$segments[] = $query['task'];

然后删除该变量,否则它仍将作为查询参数添加:

unset($query['task']);

所以例如,如果你想摆脱布局参数,而不关心它的价值,只需

unset($query['layout']);
ParseRoute()中的

假设$ vars是你要返回的数组,只需从url段中分配你需要的段,但确保重新创建你需要的那些:即查看等等以便恢复布局参数:

$vars['layout']='mydefaultlayout';

这样您就不会显示不需要的内容,仍然可以让您的组件接收正确初始化的参数。