2013-08-14 16 views
6

Używam pakietu "html/template" firmy golang do udostępniania treści na wielu stronach przy użyciu tego samego _base.html jako frameworka. Łączę wiele plików html (_base.html i plik treści), aby służyć jako jeden.Szablon Golang obsługujący css na różnych poziomach katalogów

func main() { 
http.HandleFunc("/", indexHandler) 
http.HandleFunc("/blog/", blogHandler) 
http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("http/css")))) 
http.ListenAndServe(":1337", nil) 
} 

func indexHandler(w http.ResponseWriter, r *http.Request) { 
index := template.Must(template.ParseFiles(
    "http/html/_base.html", 
    "http/html/index.html", 
)) 
index.Execute(w, nil) 
} 

func blogHandler(w http.ResponseWriter, r *http.Request) { 
blog := template.Must(template.ParseFiles(
    "http/html/_base.html", 
    "http/html/blog.html", 
)) 
blog.Execute(w, nil) 
} 

Robi tak na korzeniu mojego serwera WWW mój css czyni dobrze, ponieważ tag HTML Link do mojego .css w _base.html punktów w prawo za pomocą katalogu:

<link href="css/style.css" rel="stylesheet"> 

jednak gdy Przechodzę z/na/blog/moje css poszło o jeden poziom niżej (lub podniosłem poziom wyżej, jakkolwiek chciałbyś go zobaczyć), więc css href nagle wskazuje na /blog/css/style.css, a tym samym nie będzie renderować.

Można to łatwo ustalić podając poziom css we wszystkich plikach treści scalanych z _base.html, jednak uważam, że musi istnieć inny, czyściejszy, inny sposób. Czy w tym przypadku jest moje złe nastawienie?

Odpowiedz

5

Nie testowałem go, więc nie jestem pewien, ale co zmienia

<link href="css/style.css" rel="stylesheet"> 

do

<link href="/css/style.css" rel="stylesheet"> 

?

+0

Skarbie, jestem taki n00b, a ty jesteś bardzo pomocny, proszę pana. Powinienem wiedzieć, ale zapomniałem. Dziękuję bardzo – Dani

Powiązane problemy