2012-11-14 81 views
0

我不確定這是否與我當前的設置有關,或者我想要做什麼。在模塊中獲取Drupal根目錄的路徑

我有一個模塊,它在我的Drupal 6站點中編程創建節點,並且在每個節點中我都必須提供鏈接。

我基本上有幾個foreach循環,並在每個我有當前路徑。

例如:

foreach ($page->category as $category) { 
    $category_link = "category/" . $category['id']; 

    // generate category pages 
    ... 
    $content = "<a href='$category_link'>".$category['name']."</a>"; 
    _create_node($content); 

    foreach ($category->article as $article) { 
    $article_link = $category_link . "/article/" . $article['id']; 

    // generate article page 
    $content = "<a href='$category_link'>".$category['name']."</a>"; 
    $content .= "<a href='$article_link'>".$article['name']."</a>"; 
    _create_node($content); 
    } 
} 

是我看到的問題是,該鏈接似乎不斷地建立起來了。 例如,在主類別頁面中沒有問題(我會看到category/1234),文章鏈接將會很好,但類別鏈接似乎會比應該更長。基本上,我會最終看到:

category/1234/article/5678/category/1234 

我首先想到的是利用$base_url,只是創造了絕對路徑,但每當我嘗試打印從我的模塊變量它完全是空的。這是在本地服務器上,但是當我將它移動到生產環境時,Drupal沒有安裝在根目錄下,所以我不能簡單地在鏈接的前面添加一個斜槓。

+0

你試過'unset($ category_link);'在你的第一個'foreach'的最後? – Sean3z

+0

我做了...似乎是因爲我的當前位置是過去的類別/ id/paper/id,並且Drupal會自動附加額外的URL。 – espais

回答

2

嘗試使用$GLOBALS['base_path']獲取基本路徑。

+0

我希望我有超過1個upvote給你。我能從Google找到的所有內容涉及'$ base_path' – espais

1

$GLOBALS['base_path']會工作,但你正在訪問一個全局變量,其中還包含一些東西,如你的數據庫連接信息和一些其他重要的東西。所以用一根手指就可以把其他東西弄糊塗了。我更喜歡base_path(),它做同樣的事情,但是更安全。

0

使用

global $base_url; 

對於路徑主題文件夾使用

path_to_theme() 

您可以使用base_path()但不會爲您提供的域名。
基礎URL將提供你喜歡的完整網址:www.example.com

base_path()會給你:/

path_to_theme()會給你:網站/所有/主題/ yourthemename