2012-11-14 50 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