在Drupal 7中获取节点的URL

39

目标:发送一封包含从节点生成的URL列表的电子邮件。

在我的自定义模块中,我已经成功获取了用户想要的节点ID,现在我想要获取每个节点的URL并将其放入我的电子邮件中。

我搜索了数据库并使用了谷歌,但似乎找不到正确的解决方案。

看起来我们需要构造像这样的URL:

<?php
global $base_url;
$link=$base_url."// few more parameters 
5个回答

91
你可以使用url()函数:
$options = array('absolute' => TRUE);
$nid = 1; // Node ID
$url = url('node/' . $nid, $options);

这将为您提供绝对路径(即在其前面带有http://example.com/的路径),并带有节点页面的URL别名路径。


15

您也可以尝试使用drupal_lookup_path('alias', "node/" . $ node->nid)


3
这种方法有问题吗?它似乎比被批准的答案更有用,也更不明显。 - robomc
如果节点没有别名怎么办?此外,这将返回一个相对路径。 - cambraca
与全局变量$base_url一起使用。 - scotself
drupal_lookup_path() 并不总是直接可用的,应该使用 url() 代替。 - William Turrell

7

您还可以通过以下方式获取:

$path=drupal_get_path_alias('node/'.$nid);

获取nid的绝对路径

url('node/' . $node->id(), ["absolute" => TRUE]);

如果节点没有别名怎么办?此外,这将返回一个相对路径。 - cambraca
@cambraca 是的,它返回原始路径,类似于 node/3 - Yuseferi

4
你还可以使用 l() 函数来实现。
  l(t('Link text'), 'node/123', array('options' => array('absolute' => TRUE)));

-5

使用

$node_url;

它将为您提供当前节点的网址


1
你没有理解问题!请在回答之前仔细阅读问题。 - Akarsh Satija

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接