我想在我的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
链接中删除视图名称部分或任何其他部分?
答案 0 :(得分:2)
不建议编辑joomla核心,如果你可以在不修改核心的情况下进行编辑,那就太棒了。我建议使用Artio JoomSEF,它是一个允许您编辑SEF网址的组件,因此您可以为每个页面决定在www.yourdomain.tld /
之后您的网址是什么
完整图片位于:http://www.diystash.com/sefproblem.png
希望这有帮助
答案 1 :(得分:0)
:
仅向$ segment添加您希望在网址中看到的值;
$segments[] = $query['task'];
然后删除该变量,否则它仍将作为查询参数添加:
unset($query['task']);
所以例如,如果你想摆脱布局参数,而不关心它的价值,只需
unset($query['layout']);
ParseRoute()中的:
假设$ vars是你要返回的数组,只需从url段中分配你需要的段,但确保重新创建你需要的那些:即查看等等以便恢复布局参数:
$vars['layout']='mydefaultlayout';
这样您就不会显示不需要的内容,仍然可以让您的组件接收正确初始化的参数。