1

我试图SEF在我的 Joomla 网站中创建root/<menu-item-alias>/<view-name>/<item-alias>类似的 URL。

我意识到,如果我添加任何东西来返回函数MyComponentBuildRoute()的值route.php,它总是出现在我的 URL 上:

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

我看一下 Joomla 中的 com_content ,它没有这个<view-name>部分,root/<menu-item-alias>/<item-alias>但是在代码中仍然有类似的东西

$segments[] = $view;

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

4

2 回答 2

2

不建议编辑 joomla 核心,如果您可以在不修改核心的情况下做到这一点,那就太好了。我建议使用 Artio JoomSEF,它是一个组件,可让您编辑 SEF 网址,因此您可以为每个页面决定 www.yourdomain.tld/ 之后的网址。

在此处输入图像描述

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

希望这有帮助

于 2013-01-25T11:04:16.523 回答
0

在 BuildRoute() 中:

仅将您希望在 url 中看到的值添加到 $segments;

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

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

unset($query['task']);

因此,例如,如果您想摆脱布局参数,而不关心它的值,只需

unset($query['layout']);

在 ParseRoute() 中:

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

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

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

于 2013-01-25T21:34:53.527 回答