Adding a view source link

At the bottom of each of the blog posts I now have a See the source link. With hugo (and quite likely all other blog-enignes, what do I know?) this is pretty straight forward:

Implementation

For a site you can define global variables in config.toml and each Node, for example a post has both Frontmatter is available per “post”. All this is available in the templates which displays the content:

{{ .Params.github_src }}/blob/master/content/{{ $.Path }}

and the concept of partials helps getting such a link included on all posts:

{{ with .Site.Params.github_src }}
<div style="float: right; " class="src share"> 
    <a href="https://github.com/{{ . }}/blob/master/content/{{ $.Path }}"
       class="src" title="See the source">
        See the source <span class="fa fa-code-fork"></span>
    </a>
</div>
{{ end }

A small note

It’s worth noting that for me to be able to recreate the link inside of the actual .md of this post without manually entering it I had to enclose it in a shortcode - in the name of reuse I thought I could use the same mechanism in both the template and this post. No such luck. To get it into the post, outside of the template system, I needed to use a shortcode. But shortcodes don’t work inside of templates - and it turns out the qualified paths to the data wasn’t exactly the same either:

Viewsrc.html shortcode:

{{ with $.Page.Site.Params.github_src }}
https://github.com/{{ . }}/blob/master/content/{{ $.Page.Path }}
{{ end }}

Comments