You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal FAQ模块用户名超链接缺失站点URL问题求助

解决Drupal FAQ模块邮件中用户链接缺失站点URL的问题

这问题我之前处理过,邮件里的相对URL确实会失效——毕竟邮件客户端没法识别你的站点根目录,必须用完整的绝对路径才行!

问题根源

你贴的这段代码:

'creator' => theme('username', array('account' => user_load($node->uid), 'plain' => TRUE))

theme('username')默认生成的是相对路径(比如/users/joeblock),这种路径在站点内访问没问题,但放到邮件里就找不到对应的站点了,自然无法正常跳转。

两种修复方案

方案1:用l()函数生成绝对链接(推荐)

直接用Drupal的l()函数构建带完整站点URL的用户链接,它支持absolute参数来生成绝对路径:

$account = user_load($node->uid);
'creator' => l($account->name, 'user/' . $account->uid, array('absolute' => TRUE))

这样生成的链接会自动带上你的站点基础URL(比如https://example.com/users/joeblock),邮件客户端就能正常识别跳转了。

方案2:手动构建绝对链接

如果更倾向于手动控制链接的HTML结构,可以先通过url()函数获取用户页面的绝对URL,再拼接成完整的链接:

$account = user_load($node->uid);
$user_absolute_url = url('user/' . $account->uid, array('absolute' => TRUE));
'creator' => '<a href="' . $user_absolute_url . '" title="' . t('View user profile') . '">' . check_plain($account->name) . '</a>'

这种方式更灵活,你可以自定义链接的title或其他属性。

注意事项

如果你的站点是Drupal 8及以上版本,user_load()需要替换为\Drupal\user\Entity\User::load($node->uid),不过从你提供的模块代码来看,应该是Drupal 7的版本,直接用user_load()就没问题。

内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:22:05