您在這裡

drupal_get_path

ddtet's 的頭像
ddtet 在 2007-05-07 (週一) 22:06 發表

定義

drupal_get_path($type, $name)
includes/common.inc

描述

可用此函數取得模組、版型或版型引擎(theme engine)的路徑

參數

$type: 要尋找的種類 (如: theme, theme_engine, module)
$name: 尋找東西的名字

傳回值

要找東西的路徑(網站相對路徑,不是伺服器的系統路徑)

範例

當你開發的模組裡面有圖片,或是由其它需要引入的 JavaScript 的時候,那就很有用了。因為你不能確定你的模組會被放在哪裡。
有可能在 modules/ 下,也可能在 sites/all/modules/ 下面。這時候就需要用它來幫你找出模組的路徑,好引入它資料夾裡面的檔案。
如:

$my_module_path = druapl_get_path('module', 'my_module');
$my_theme_path = druapl_get_path('theme', 'my_theme');
$phptemplate_engine_path = druapl_get_path('theme_engine', 'phptemplate');

附帶一提的,如果使用了「簡潔網址」,就是網址不出現 ?q=xxx 的模式。連結使用相對路徑的時候,可能會出現找不到檔案的情形。(瀏覽器被網址列的網址搞混了)
這個時候建議搭配 base_path() 這個函數,寫一個相對於網頁伺服器的"絕對路徑"。
如:

$my_module_path = base_path() . drupal_get_path("module", "my_module");
// 如果網站是在 drupal 資料夾下, base_path() 會傳回 "/drupal"

路徑用 "/" 開頭,就表示由網頁伺服器的"根"開始算相對路徑。
如: "/drupal/my_module/test_page/"

不過如果使用 drupal_add_js() 函數,因為它本身就會加上網站本身的路徑,所以就不需要加上 base_path()了。

程式碼

<?php
function drupal_get_path($type, $name) {
return dirname(drupal_get_filename($type, $name));
}
?>

Drupal版本: