我不确定这是我当前设置的问题,还是我想要做的事情。
我有一个以编程方式在我的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 :(得分: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