Silverstripe将外部URL渲染为相对链接

Jus*_*own 0 html php silverstripe

我遇到SilverStripe将外部URL视为相对链接的问题.

我有一个DataObject:

class Artist extends DataObject {
  private static $db = array(
    'Title' => 'Varchar(255)',
    'Content' => 'HTMLText',
    'Website' => 'Varchar(255)',
  );
}
Run Code Online (Sandbox Code Playgroud)

艺术家网站通过<a href="$Website" target="_blank">.问题是URL被附加到网站的基本URL,因此我们最终得到如下内容:

<a href="mysite.com/www.artistsite.com" target="_blank">

而不是所期望的:

<a href="www.artistsite.com" target="_blank">

但是,如果$ Website包含协议(http或https),则链接按预期工作.因此,如果$ Website是http://www.artistsite.com,那么我们得到:

<a href="http://www.artistsite.com" target="_blank">

该网站包含数百个,最终成千上万的客户维护的艺术家记录.理想情况下,客户端可以粘贴URL,而不必担心每个URL都附加http或https.

有人有主意吗?这与SilverStripe论坛中描述的问题相同,但尚未发布任何解决方案.

这个站点在SilverStripe 3.6上.

Oll*_*elä 5

这不是直接的SilverStripe问题.

给出一个包含以下内容的html文档:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<a href="google.com" target="_blank">test</a>
<a href="www.google.com" target="_blank">test</a>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

所有这些都作为网站的相对链接打开,而不是外部网址.

请参阅html - 没有http协议的链接

为了帮助管理员粘贴功能链接,添加一个onBeforeWrite来测试url是否包含有效的协议,如果没有,至少自动添加http://.或者使用@wmk自动在评论中建议的模块.