2016-06-09 65 views
5

Nel SilverStripe template sintassi $AbsoluteLink restituisce l'URL completo di una pagina/oggetto, compreso il protocollo e host:

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

Voglio essere in grado per chiamare un URL completo con un protocollo diverso:

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

Qual è il modo migliore per raggiungere questo obiettivo?

risposta

5

definire un metodo di collegamento personalizzato che sostituisce il protocollo sito web corrente con la persona desiderata. vale a dire.

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

Non è $ questo-> Link() è il collegamento relativo? quindi str_replace non funzionerà in questo caso? – wmk

+0

Lo str_replace non funziona su $ this-> Link(), sta funzionando su Director :: protocolAndHost() –

5

fare una nuova funzione di getter sulla tua pagina:

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

Si può chiamare dal proprio modello utilizzando $ WebcalLink