2016-06-09 12 views
5

Trong SilverStripe khuôn mẫu cú pháp $AbsoluteLink trả về URL đầy đủ của một trang/đối tượng, bao gồm cả giao thức và host:

http://www.example.com/event/ics 

Tôi muốn có thể để gọi URL đầy đủ có giao thức khác:

webcal://www.example.com/event/ics 

Cách tốt nhất để đạt được điều này là gì?

Trả lời

5

Xác định một phương pháp liên kết tùy chỉnh mà thay thế giao thức trang web hiện tại với một mong muốn của bạn. I E.

public function WebCalLink() 
{ 
    return str_replace(Director::protocol(), 'webcal://', Director::protocolAndHost()) . $this->Link(); 
} 
+1

Không phải $ this-> Link() là liên kết tương đối không? vì vậy str_replace sẽ không hoạt động trong trường hợp này? – wmk

+0

Str_replace không hoạt động trên $ this-> Link(), nó hoạt động trên Director :: protocolAndHost() –

5

Thực hiện một hàm getter mới trên trang của bạn:

public function WebcalLink() { 
    $absolute = $this->AbsoluteLink(); 
    $webcal = str_replace(Director::protocol(), "webcal://", $absolute); 
    return $webcal; 
} 

Bạn có thể gọi nó là từ mẫu của bạn sử dụng $ WebcalLink

Các vấn đề liên quan