在模块中获取Drupal root的路径

时间:2012-11-14 20:25:55

标签: drupal drupal-6 drupal-modules

我不确定这是我当前设置的问题,还是我想要做的事情。

我有一个以编程方式在我的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没有安装在根目录下,因此我不能简单地在链接的前面添加斜杠。

3 个答案:

答案 0 :(得分:2)

尝试使用$GLOBALS['base_path']获取基本路径。

答案 1 :(得分:1)

$GLOBALS['base_path']将起作用,但您正在访问一个全局变量,该变量还包含一些内容,例如数据库连接信息和其他一些重要内容。因此,只需用手指滑动就可以搞砸其他东西。我更喜欢base_path(),它做同样的事情但是更安全。

答案 2 :(得分:0)

使用

global $base_url;

使用主题文件夹的路径

path_to_theme()

您可以使用base_path(),但这不会为您提供域名 基本网址将为您提供完整的网址: www.example.com

base_path()会给你: /

path_to_theme()会为您提供: sites / all / themes / yourthemename