【问题标题】:Remove the one part from SEF link joomla从 SEF 链接 joomla 中删除一部分
【发布时间】:2013-01-09 07:13:37
【问题描述】:

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

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

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

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

$segments[] = $view;

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

【问题讨论】:

    标签: php joomla joomla-sef-urls


    【解决方案1】:

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

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

    希望这有帮助

    【讨论】:

    • 我没有编辑 Joomla 核心,我正在开发自己的组件,我想将我的 SEF Link 配置应用到它上
    【解决方案2】:

    在 BuildRoute() 中:

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

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

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

    unset($query['task']);
    

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

    unset($query['layout']);
    

    在 ParseRoute() 中:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 2013-05-15
      • 2012-10-04
      • 2012-08-25
      • 1970-01-01
      相关资源
      最近更新 更多