Error: Can't evaluate field Site in type []string

DISCLAIMER: I am no authority at golang, so I am explaining to the best of my understanding, please correct me if I am wrong.

As far as I understand, it seems that the context gets changed because you use the with function to change the context (this dot: {{ . }}).

Here is a simplified example of your second (updated) problem):

{{- with .Site.DisqusShortname -}}
<a href="{{ .Permalink }}></a>
{{- end }}

the context here is .Site.DisqusShortname, so .Permalink essentially refers to .Site.DisqusShortname.Permalink (which does not exist, hence it cannot evaluate it.

As for the first example, I am assuming that Site.Taxonomies.tags fails to evaluate because the context is already something other than the root (so you are probably in already within a {{ range ... }} or {{ with .. }}).

Hope this clears this up for future users. This article helped me understand it better: https://regisphilibert.com/blog/2018/02/hugo-the-scope-the-context-and-the-dot/