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/