MovableTypeでAMPページ用にiframeをamp-iframeに置き換えて書き出す
目次
MovableTypeのブログをAMP対応にするため、AmpConvertというプラグインを入れています。You-Tube埋め込み用のiframeタグはamp-youtubeに変換してくれますが。それ以外のiframeタグはamp-frameにしてくれませんでした。
そこでテンプレート側で正規表現で置き換える方法で対応したのでメモ。
例えばGoogle Maps
例えばGoogleマップの地図をページを埋め込むためのタグが以下だったとします。
< iframe src = "https://www.google.com/maps/embed?mid=0123456789" width = "600" height = "450" frameborder = "0" style = "border:0" allowfullscreen></ iframe > |
この<iframe></iflame>を以下のようにしたいのです。
< amp-iframe layout = "responsive" sandbox = "allow-scripts allow-same-origin allow-popups" src = "https://www.google.com/maps/d/embed?mid=mid=0123456789" width = "640" height = "480" ></ amp-iframe > |
AMP用テンプレートのソース
MovableTypeのAMP用に作ったテンプレートの本文の部分を以下のようにしました。
< mt:AmpConvert fix_img_size = "1" base_url = "https://qwerty.work" > <$mt:Var name='regex[0]' value='/< iframe (.*?)<\/iframe>/g'$> <$mt:Var name='regex[1]' value='< amp-iframe layout = "responsive" sandbox = "allow-scripts allow-same-origin allow-popups" $1</amp-iframe>'$> < mt:For regex_replace = "$regex" > < mt:EntryBody > < mt:EntryMore > </ mt:For > </ mt:AmpConvert > |
以下が正規表現でiframeをamp-iframeに置換前と置換後を指定している部分です。
<$mt:Var name='regex[0]' value='/< iframe (.*?)<\/iframe>/g'$> <$mt:Var name='regex[1]' value='< amp-iframe layout = "responsive" sandbox = "allow-scripts allow-same-origin allow-popups" $1</amp-iframe>'$> |
Googleマップの場合、amp-iframeに置き換えるだけなく、sandbox="allow-scripts allow-same-origin allow-popups"がないとAMPページで地図が表示されませんでした。