2009-06-13 39 views
2

我知道你可能沒有得到像這樣的很多問題...如何在啓用SEF的情況下找到非SEF URL(Joomla 1.5)?

我正在研究一個組件,我希望能夠處理非SEF URL,同時啓用SEF,不管它是內置SEF或類似sh404sef的東西。

Joomla是否將原始非SEF URL存儲在任何地方即。 index.php?com = com_fred & view = homepage?

我發現任何SEF激活,將JURI :: getInstance()值更改爲SEF等價值。 我也發現了$ REQUEST [「URI」]值不會所有的平臺/服務器等

感謝所有幫助

+0

難道你不是指`$ _SERVER ['REQUEST_URI']`? – Gumbo 2009-09-28 08:28:51

回答

1

菜單項,它存儲在「jos_menu」表上工作,在'link'列中(但itemid不在此字符串中 - 它是'id'列)。

對於其他任何東西,它可能不存儲在數據庫中,但通常可以很容易地制定出來,特別是對於核心組件。對於第三方組件來說,這可能會帶來一點痛苦,但是您可以通過大多數組件的MVC體系結構來了解它。

否則,您可以隨時在您的開發站點上關閉SEF /爲此創建一個開發站點。

是否有您感興趣的特定組件?

0

。即使您打開了SEF網址,Joomla仍會顯示正確的網頁,如果有人使用非SEF網址訪問網站。處理SEF URL的組件部分(路由器)只告訴Joomla如何使用URL信息來確定要顯示的內容。當呈現非SEF URL時,Joomla只是像通常那樣分析查詢字符串。

對於任何給定的組成部分,網址是建立這樣的 - ?

的index.php選項= com_name &視圖= XXXX & ID = 1111 &的itemid = 11111

  • 選項的名稱組件
  • 視圖當然是顯示哪個視圖
  • id是特定內容項的ID
  • itemid是它用於確定模塊/模板分配的菜單項
3

您可以使用JRequest :: get(true)從URL中獲取所有查詢參數的數組。儘管如此,我還沒有檢查到它是否僅返回GET參數,或者它完成了所有REQUEST參數(我認爲這更可能)。但是,它可能會幫助你找到你想要的東西。

4
  1. GET/POST請求中獲取所有變量到數組中。此時,您還可以在生成URL字符串之前修改這些值。

    $newURL = http_build_query($getVars); 
    

希望它能幫助:

$getVars = JRequest::get('GET'); 
  • 如果你真正需要的URL字符串,你可以得到!

  • 2

    我回到了這段代碼,並再次嘗試,但給了我一些錯誤,所以我根據之前回答的這個新的回答(部分工作在Joomla!3.4.5上)

    // build the JInput object 
    $jinput = JFactory::getApplication()->input; 
    // retrieve the array of values from the request (stored in the application environment) to form the query 
    $uriQuery = $jinput->getArray(); 
    // build the the query as a string 
    echo 'index.php?' . JUri::buildQuery($uriQuery); 
    

    的Joomla! API文檔:JInput - JUri


    以前的答案: 周圍的Googling I found this

    <?php 
        // "unparse" the Joomla SEF url to get the internal joomla URL 
        JURI::current();// It's very strange, but without this line at least Joomla 3 fails to fulfill the task 
        $router =& JSite::getRouter();// get router 
        $query = $router->parse(JURI::getInstance()); // Get the real joomla query as an array - parse current joomla link 
        $url = 'index.php?'.JURI::getInstance()->buildQuery($query); 
    ?> 
    

    我與Joomla測試吧! 3.4.4及其工作正常!不知道它是否可以使用1.5