Go templates are contextually aware, so when you pass “the dot” into a partial, you’re passing in the context of the rendered page. Therefore, the value of .Kind changes according to the kind of page on which it is rendered…
So the context is changing from “home” to “page” when Go renders the partial content.html? That implies to me that every partial will always override the context of the outer page that includes that partial. Is that correct?
{{- partial “header.html” . }} <= home
{{- range .Paginator.Pages }}
{{- partial “content.html” . }} <= most likely a regular page (I say most likely because, by default, sections etc. will be in this list)
{{- end }}
{{- partial “pagination.html” . }} <= home
{{- partialCached “footer.html” . }} <= home
So, the “.” you pass down to the partial determines the output of .Kind from that partial.