Hugoで出力されるaタグをカスタマイズする

デフォルトだとaタグにhref以外の属性値をつけてくれませんが、設定を追加してtarget="_blank"rel="nofollow"を追加する方法です。

バージョンに注意

0.60.0より前のバージョンではMarkdownのパーサがBlackfriday だったので設定に記述するだけでtarget="_blank"rel="nofollow"をaタグに追加できていました。
0.60.0からデフォルトのMarkdownパーサがGoldmark に変わったらしく設定からカスタマイズできなくなってしまいました。
0.60.0より前のバージョン、もしくはパーサをBlackfridayに変更して使う場合はBlackfridayの設定を追加する方法でカスタマイズしてください。

参考: Hugoの0.60.0より前のバージョンでMarkdownで生成されるHTMLをカスタマイズする

設定方法

0.62.0からMarkdown Render Hooks という変換処理にカスタムテンプレートを割り込ませる機能が提供されており、これを使うとaタグをカスタマイズできます。
設定方法は専用のファイルを以下のパスとファイル名で保存すると変換結果に反映されるようになります。

layouts/_default/_markup/render-link.html

中身は出力したいaタグをテンプレート形式で指定するようになっていてこんな感じで書けばOK。

<a href="{{ .Destination | safeURL }}" target="_blank" rel="nofollow">{{ .Text | safeHTML }}</a>

ただしこれだとすべてのaタグに属性が追加されてしまいサイト内リンクにも追加されてしまいます。
なのでこんな感じにサイト内リンク以外の場合だけ追加するようにすればいい感じのaタグが出力されるようになります。

<a href="{{ .Destination | safeURL }}"{{ if hasPrefix .Destination "http" }} target="_blank" rel="nofollow noopener"{{ end }}>{{ .Text | safeHTML }}</a>