2011-02-07 33 views
0

我需要查找Joomla的SEF是否啓用。如何查找Joomla SEF是否啓用

爲了讓事情變得更糟,Joomla有不同的SEF機制(更多信息請參考see here)。

我需要填寫的功能很簡單:

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

我至今唯一的想法是:

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

也許正常化兩個URL(小寫或GET瓦爾)可能使該功能稍微有效一些,雖然聽起來像是一個很大的破解,並帶來嚴重的影響。

當然,搜索Joomla Docs,StackOverflow和谷歌的答案,沒有任何成功。我還檢查了Joomla的運行時內部,但沒有出現。

回答

3

當使用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'); 
+0

我想問一樣的問題,因爲我問ircmaxell。 – Christian 2011-02-07 17:37:26

+0

嗯,這是Joomla的核心SEF系統的設置。其他一些SEF組件需要將其設置爲'1',其中一些不是。您可能需要回退,例如檢查數據庫中是否安裝了擴展,篩選SEF擴展以及獲取其配置文件。現在有通用的方式AFAIK。 – 2011-02-07 17:39:59

2

嗯,嗯,這是embarasing ...

我看着我的一些舊代碼,發現以下內容:

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

它似乎做我想做的,雖然我不知道哪一個更好?

咩,現在是正式的,一個星期到任何項目,我忘記了所有關於我自己的代碼: D