ShortcodeでAmazonのリンクを作成する
はじめに
Hugoでブログを書いていて、頻出するようなHTMLを自動で簡単に出力できるようにしたいと思いました。
そこで使用できるのがShortcodeの機能です。
今回はAmazonのアフィリエイトリンクを作成するためのShortcodeを作成します。
Shortcodeの基本
Shortcodeは、事前に定義した小さな処理を呼び出すための仕組みです。
ここでは書き方を整理します。
- /layouts/shortcodes/以下に
SHORTCODE.htmlをファイルを作成するとSHORTCODEがショートコード名になる - Shortcodeを呼び出す場合は
{{< ショートコード名 "値" >}}{{< ショートコード名 パラメータ名="値" >}} - パラメータを取り出す場合は
{{ .Get 0 }}(0はパラメータのインデックス){{ .Get パラメータ名 }} - 間に文字を挟み込める
{{< highlight go >}} A bunch of code here {{< /highlight >}} - 挟み込んだ文字を取り出す場合は
{{ .Inner }} - 挟み込んだ文字は書き方によって処理のされ方が異なる
{{< >}}-> HTML{{% %}}-> Markdown - Built-inショートコードが存在する。
- Figure
- Youtube
- Tweet
- etc.
- ShortcodeのサンプルをMarkdownで表示したい場合は
{{</* shortcode */>}}
Amazonのショートコードを作成
サンプルにAmazonのアフィリエイトリンク用のショートコードを作成します。/layouts/shortcodes/amazon.htmlというファイルを作成しました。
中身は
{{- $tag := .Site.Params.amazonTrackingId }}
{{- $asin := .Get "asin" -}}
{{- $title := .Get "title" -}}
<div class="amazon">
<a target="_blank" href="https://www.amazon.co.jp/dp/{{ $asin }}/ref=nosim?tag={{ $tag }}">
<img class="amazon-img" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN={{ $asin }}&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL350_&tag={{ $tag }}" />
<p class="amazon-title">{{ $title }}</p>
</a>
</div>
Amazonのリンクに関しては Amazon.co.jpの特定の商品へのシンプルなテキストリンクはどのように作ればよいですか。 を参考にしています。
呼び出し方は{{< amazon asin="123456789" title="商品名" >}}
config.tomlに以下のように自身のトラッキングIDを設定してください。
[Params]
amazonTrackingId = "あなたのトラッキングID"
Amazonの商品ページからShortcode作成
補足として、Amazonの商品ページからShortcodeを自動生成する方法を記載しておきます。
以下をBookmarkletとして登録しておきます。
javascript:(function(){var asin=document.URL.match(/\/dp\/(.{10})/)[1], title=document.getElementById("productTitle").textContent.trim(); alert(`{{< amazon asin="${asin}" title="${title}" >}}`);})();
参考
ページ・セクション・カテゴリ数の取得
はじめに Hugoでページのデータを取得する方法をまとめました。 取得方法 サイト内の全記事数 {{ len .Site.RegularPages }} サイト内の全ページ数 {{ len .Site.Pages }} ホームページから下層のページ、そして、カテゴリやタグページも含まれる。 現在の階層の記事数 {{ len .RegularPages }} 現在の階層のページ数 {{ len .Pages }} ページにはセクションページも含まれる。 現在の階層以下の全ての記事数 {{ len .RegularPagesRecursive }} ただし、listページでのみ使用できる。 現在の階層のセクション数を取得 {{ len .Sections }} サイト内の全カテゴリ数 {{ len .Site.Taxonomies.categories }} サイト内の全タグ数 {{ len .Site.Taxonomies.tags }} ...
GitHubPagesとGoogleDomainでサイトを公開する
はじめに GitHubPagesの利点は、いくつか制限があるものの以下のメリットがあります。 TLS対応(Let’s Encrypt) 独自ドメイン対応 無料 GoogleDomainでは1400円のドメインを使用しています。 このドメインにサブドメインを追加することで、複数ドメインを追加料金なく使用しています。 なので、私はいくつかブログを運用していますが、年間合計1400円しかかかっていません。 しかも、GitHubのActionsなど優秀な機能の恩恵を請けられるので、メンテナンスコストが非常に少なくなります。 GoogleDomainでドメイン取得 サブドメインを追加する方法を説明します。 GoogleDomainの管理画面から マイドメイン > 自分のドメイン > DNS > カスタムレコードを管理 すると、ドメインの設定をカスタマイズできるようになります。 新しいレコードを追加 し、以下のように入力します。 ホスト名: サブドメインにしたい文字列(別名とするサブドメインの指定) タイプ: CNAME(データで指定したホストに対して、別名を登録する方式) TTL:3600(1時間の有効期限) データ:XXXXXXX.github.io. (自身のGitHubのホスト) GitHubActionsを使ってHugoをビルドする ActionsのWorkflowに以下を登録します。 name: gh-pages on: push: branches: - master workflow_dispatch: jobs: build: runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v2 with: submodules: true - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: '0.85.0' extended: true - name: Hugo build run: hugo --minify - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets....