Hugoで出力されるaタグをカスタマイズする
2020-02-10
デフォルトだと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>