0

我需要确定是否启用了 Joomla 的 SEF。

更糟糕的是,Joomla 有不同的 SEF 机制(请参阅此处了解更多信息)。

我需要填写的函数很简单:

function rewrite_enabled(){
    return (boolean)$something; // typecast is frivolous
}

到目前为止,我唯一的想法是:

function rewrite_enabled(){
    $url='index.php?option=com_xyz';
    return JRoute($url)!=$url;
}

也许规范化两个 URL(小写或通过 get vars)可能会使函数更有效,尽管这听起来像一个大黑客,具有严重的影响。

当然,在 Joomla Docs、StackOverflow 和 Google 上搜索了答案,没有任何成功。我还检查了 Joomla 的运行时内部结构,但没有任何结果。

4

3 回答 3

4

使用 Joomla 的核心 SEF 系统时,您可以自己获取配置并检查 SEF 是否设置为 true。

$conf = &JFactory::getConfig();
echo ' SEF is:  '.(($conf->sef == 1) ? 'on' : 'off'); 

(未测试)

希望它有点帮助。干杯

对于 Joomla 3.x,您将需要:

$conf = &JFactory::getConfig();
echo ' SEF is:  '.(($conf->get('sef') == 1) ? 'on' : 'off'); 
于 2011-02-07T16:39:29.570 回答
4

只需致电 JFactory::getConfig()::

return (boolean) JFactory::getConfig()->getValue('config.sef', false);
于 2011-02-07T16:39:50.630 回答
2

嗯,这很尴尬……

我正在查看我的一些旧代码,发现以下内容:

$sef = JFactory::getApplication()->getRouter()->getMode()

它似乎确实可以满足我的要求,尽管我不确定哪个更好...

嗯,现在它是正式的,一个星期进入任何项目,我忘记了我自己的代码:D

于 2011-02-07T19:51:31.600 回答