Php Silverstripe 3:Tinymce,配置外部链接

Php Silverstripe 3:Tinymce,配置外部链接,php,tinymce,silverstripe,Php,Tinymce,Silverstripe,我希望我的SilverStripe站点上的所有外部链接都使用https 在silverstripe中,我使用的是HTMLEditorFields,我想为外部链接配置选项。默认情况下,外部链接的链接字段将显示http:// 我想: 将此更改为https:// 创建一个onBeforeWrite()函数,我可以在其中检查链接中是否存在https协议(因为可以删除最初位于文本字段中的http://协议) 我可以在哪里进行这些更改而不更改原始代码?我正在使用SilverStripe 3。onBefore

我希望我的SilverStripe站点上的所有外部链接都使用https

在silverstripe中,我使用的是HTMLEditorFields,我想为外部链接配置选项。默认情况下,外部链接的链接字段将显示http://

我想:

  • 将此更改为https://
  • 创建一个onBeforeWrite()函数,我可以在其中检查链接中是否存在https协议(因为可以删除最初位于文本字段中的http://协议)
  • 我可以在哪里进行这些更改而不更改原始代码?我正在使用SilverStripe 3。

    onBeforeWrite()调用应该可以解决您的需要:

    public function onBeforeWrite()
    {
        parent::onBeforeWrite();
    
        $this->Content = str_replace('http://', 'https://', $this->Content);
    }
    

    请注意,如果目标网站不支持https,这可能会导致断开链接。2019年,这一数字应该相当小,并进一步下降。

    per JS,可能会对你有所帮助吗?如果这是str_replace是的,你是对的。别问我打这封信时脑子在想什么。谢谢你指出@spekulatius我只是想知道我应该把这个方法放在哪里?如何在外部链接字段中使用onBeforeWrite,因为我还希望将https添加到任何可能缺少协议的链接中。它应该放在你的应用程序
    Page.php
    文件中-在那里它将用https钩住并替换http。它不会捕获任何URL不完整(没有协议)的情况。为此,您需要解析内容,识别不完整的URL并修复它们。