您在這裡

如何抓到頁面的自訂網址

Yuer's 的頭像
Yuer 在 2008-11-19 (三) 22:44 發表

假若我目前位於 http://xxx.xxx/e1
有開啟clean url,所以我要的是'e1'這個東東
我嘗試了$_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME']、$_SERVER["REQUEST_URI"] ,三者顯示皆為index.php
Menu system裡,我不知道該使用何者,又該如何使用?
請問有何方法能取得我想要的網址呢?

arg() 可以取得網址的某一部分
例如 網址為 www.xxx.com.tw/aaa/bbb/1
arg(0) 會傳回 'aaa'
arg(1) 會傳回 'bbb'
arg(2) 會傳回 1
適合在網址的某一部份作為參數的時候用來取得參數值
譬如一搬常見的
user/1
node/1
網址後面加上 id 作為參數
就適合使用 arg() 來單獨取得網址內的參數

如果是想取得完整的路徑
可以使用 $_GET['q']
網址為 www.xxx.com.tw/aaa/bbb/1 的時候
$_GET['q'] 的值會是 'aaa/bbb/1'

感謝二位指導,讓我整理一下
設:於開啟Clean url之下,原網址為http://xxxx.xxx/node/24,自訂網址為e1,網址列所顯示為 http://xxxx.xxx/e1 ,使用以下函數所讀取之結果

$_SERVER['PHP_SELF'] => index.php
$_SERVER['SCRIPT_NAME'] => index.php
$_SERVER["REQUEST_URI"] => index.php
drupal_get_path_alias(arg(0) . '/' . arg(1)); => e1
$_GET['q'] => node/24

有錯請更正,有額外請增加,謝謝!

可以這樣:
<?php
drupal_get_path_alias($_GET['q']);
?>
這個地node/add, node/edit 下會直接出node/add
所以你要這些地方實行的話, 要使用上我上面的方法