Featured image of post Short Code試作

Short Code試作

Hugoのショートコードを実装してみる

前回?の続き

とりあえずものは試しと思ってBandcampのアルバムとトラックを埋め込めるショートコードを作ってみた。新しいおもちゃを手に入れたので弄りまわっている状態である。

試作品

アルバム

code

1
{{< bandcamp albumID="1589371023" >}}

output

トラック

code

1
{{< bandcamp albumID="1589371023" trackID="2624468845" >}}

output

実装

単にiframeに変数をぶち込めるようにしてラッパーを用意しただけである。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{{- $albumID := .Get "albumID" -}}
{{- $trackID := .Get "trackID" -}}
<div class="bandcamp-wrapper">
    {{- if not $trackID -}}
    <iframe style="border: 0; width: 100%; height: 307px;"
            src="https://bandcamp.com/EmbeddedPlayer/album={{ $albumID }}/size=large/bgcol=ffffff/linkcol=0687f5/artwork=small/transparent=true/" seamless>
    </iframe>
    {{ else }}
    <iframe style="border: 0; width: 100%; height: 120px;"
            src="https://bandcamp.com/EmbeddedPlayer/album={{ $albumID }}/size=large/bgcol=ffffff/linkcol=0687f5/tracklist=false/artwork=small/track={{ $trackID }}/transparent=true/" seamless>
    </iframe>
    {{ end }}
</div>

課題点

一見これでまぁええんちゃうの感はあるけど、bandcampのアルバムIDとトラックIDは普段フロントに出ておらずスラッグが用いられているので、このショートコードを利用するにあたってどうにかしてこの対象楽曲のIDを割り出さないといけない。なんだったら一番手っ取り早いのは「埋め込み用iframeのコードを出力してそこからIDを取得する」である。

ちなみにSoundcloudもこの方式だった。URLが分かりやすいのはいいけどその代償がでかすぎる。

どうにかしたいがURLからIDを割り出す手段が思いつかず、共有で出力されるiframeそのまま貼るだけで形になっているので、とりあえず提供されたものをそのまま使うことにする。

普通のサイトの埋め込み

それ以外はというと、Hugo単体でどうにかするのは無理では?という気がしてきたので、なんかそれっぽいものを自作してみることにした。

出来たものがこちらです

1
2
3
4
5
6
{{- $url := .Get "url" -}}
<div class="embed-container">
  {{- if $url -}}
  <iframe src="https://proxy.seeds-9.com/?{{ $url }}" frameborder="0" scrolling="no"></iframe>
  {{ end }}
</div>

もはやショートコードよりURLからOGP割り出すのを書いている

OGPなし

OGPあり

Misskeyのノートとか

流石にリアクションとかは無理ぽ

写真はOGPとして代用されるらしい


ふと思ったけど

これは所謂サマリープロクシとかいうやつでは?

Licensed under CC BY-NC-SA 4.0