Movable Type 4.1のテンプレートで、ウェブページにおいて、概要の記述のないページについては meta description= を出力させないようにしてみました
MTPageExcerptについて
MTのウェブページで、meta要素のdescriptionのcontent属性の値を自動で出力するひとつの方法として、MTPageExcerpt(以下「PageExcerpt」と表記します)という、テンプレートタグを用いる方法があります。
参考:
ウェブページにおいては以下のような、metaタグを記述するようです。
<meta name="description" content="<$MTPageExcerpt remove_html="1"$>" />
参考:
PageExcerptの仕様
さて、PageExcerptの仕様ですが、概要記述(記事作成画面の「概要」のフィールドに書かれた内容のこと)がない場合に、ウェブページの先頭からブログ記事の設定で概要の文字数指定をした分だけを出力するという、 つまり、MTEntryExcerptと同じ動作ということになります。
このサイトでのウェブページの一覧から、詳細設定表示にしたときのキャプチャを示します
例として、以下の2つのページをみていくとします
なんかへたくそな英語がでてきましたけど、Testpageでの概要は、TestPageに書いてある内容となっており、SiteMapでは概要を手入力にておこなっています。
2つのページのソースでhead要素の内容をみていただいたらわかるかとおもうんですが、SiteMapではmeta description=・・・があり、TestPageではmetaタグがでないようになっています。
ところで、PageExcerptの仕様ですとMTIfNonEmptyによる条件分岐では、内容の有無で条件判断できないようであります。
参考:
EntryExcerptでの動作についての質問ではありますが、PageExcerptでも同様にして、IfNonEmptyではタグの中身があることとなっています。。
そこで、一旦変数に概要をいれることで判断をおこなうことにしました。
概要記述の有無で条件分岐(?)
あっているかどうか不明ですけど、このような形で条件分岐させてみました。
先ず変数に概要をいれる
ここでは、pageExcerptという変数にウェブページの概要をいれることにします。
#ネーミングのセンスがないというのはおいといて (汗;
ウェブページアーカイブテンプレートのMTSetVarタグ群の箇所に以下のコードを。
<MTSetVarBlock name="pageExcerpt"><$MTPageExcerpt no_generate="1"$></MTSetVarBlock>
remove_htmlがないのは、手入力の概要にHTMLタグを書く場合が少ないことからです。
次に変数html_headにmetaタグ
ウェブページアーカイブテンプレートから、<MTSetVarBlock name="html_head">を探して、タグ内に追記します
<MTSetVarBlock name="html_head">
<MTIf name="pageExcerpt">
<meta name="description" content="<$MTGetVar name="pageExcerpt">" />
</MTIf>
: : :
</MTSetVarBlock>
ウェブページアーカイブのみリビルドして、概要のないページでmeta desciption=が出ていなければ成功です。
- TemplateShelfプラグインの「All Templates」の選択がワナらしいので
- Movable Typeで分割ページのTITLE要素にページ数を入れるお話
- メモというか、rel-tagの件でLinkTypeが複数のときとかその辺のお話
- 使ってるカスタムフィールドの内容を出力してみた
- 記事投稿者によるコメントのときおよび返信コメントにclass属性
- テンプレート入れ替えとその顛末
- EntryCategoriesタグを改良するプラグインを使ってフォルダ一覧のリストを表示
- MT4.1xからMT4.21にアップグレード完了
- mt.Vicuna、新バージョンに着手か?
- InstaMTで4.2使ってみた