有人知道如何使用 l() 或 url() 函数创建 mailto 链接吗?
我正在运行 drupal 6。
您需要使用绝对选项:
l('Mail me', 'mailto:[email protected]', array('absolute' => TRUE));
将会生成
<a href="mailto:[email protected]">Mail Me</a>
一个好的做法是对字符串使用 t() 函数。代码应该是:
l(t('Mail me'), 'mailto:[email protected]', array('absolute' => TRUE));
Drupal 核心在
Drupal\Core\Field\Plugin\Field\FieldFormatter\MailToFormatter
中有此代码:
$elements[$delta] = [
'#type' => 'link',
'#title' => $item->value,
'#url' => Url::fromUri('mailto:' . $item->value),
];
所以你可以像这样创建一个渲染数组:
[
'#type' => 'link',
'#title' => $email,
'#url' => Url::fromUri('mailto:' . $email),
];
或者像这样:
Link::fromTextAndUrl($email, Url::fromUri('mailto:' . $email))->toRenderable();
最好没有:
l() 对于内部链接的输出很有用:
它处理别名路径,并向指向当前页面的链接添加“活动”类属性(用于主题化)” 参见参考资料
您不需要以上任何一个。 url() 也是如此。您可以使用它们,但为什么不保持简单并直接使用 HTML 锚标记。
在 Drupal 9 中,我没有找到其他解决方案:
$this->t('<a href="@link">This is a mail link</a>', ['@link' => 'mailto:[email protected]']);