在Silverstripe中,模板语法$AbsoluteLink返回页面/对象的完整URL,包括协议和主机:
http://www.example.com/event/ics
Run Code Online (Sandbox Code Playgroud)
我希望能够使用不同的协议调用完整的URL:
webcal://www.example.com/event/ics
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?
在您的页面上创建一个新的getter功能:
public function WebcalLink() {
$absolute = $this->AbsoluteLink();
$webcal = str_replace(Director::protocol(), "webcal://", $absolute);
return $webcal;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用$ WebcalLink从模板中调用它
定义一个自定义链接方法,用当前网站协议替换您想要的网站协议.即.
public function WebCalLink()
{
return str_replace(Director::protocol(), 'webcal://', Director::protocolAndHost()) . $this->Link();
}
Run Code Online (Sandbox Code Playgroud)