チャレンジ! Movable TypeをCMSとして使ってみよう!

第4回 テンプレートモジュールを読み込ませる/head要素の中身を作る

この記事を読むのに必要な時間:およそ 6 分

テンプレートごとに違う内容を出力するhead要素を作成する

くれま先輩:そこまでできたら,次はhead要素を作っていこうか。テンプレートの一覧画面から「メインページ」をクリックしてみて。右側メニューの「インクルードテンプレート」の欄が,こういう風になっているでしょ?

図6 ⁠インクルードテンプレート」の下に,読み込んでいるモジュールの一覧が表示される

図6 「インクルードテンプレート」の下に,読み込んでいるモジュールの一覧が表示される

ほげ山くん:さっき準備していなかった「head要素」の右側だけ,⁠新規作成」というリンクがありますね。ここをクリックするんですか?

くれま先輩:そう,クリックしてみて。そうすると,新規のテンプレートを作成する画面に入るから。テンプレートの名前はもうすでに入っているはずだから,その中に,こんな記述をしてね。

<meta http-equiv="Content-Type" content="text/html; charset=<mt:PublishCharset />" />

<!-- ▼title要素ここから▼ -->
<mt:If name="sitemap"><title>サイトマップ|<mt:BlogName /></title></mt:If>
<mt:If name="main_index"><title><mt:BlogName /></title></mt:If>
<mt:IfArchiveType archive_type="Page"><title><mt:PageTitle />|<mt:BlogName /></title></mt:IfArchiveType>
<mt:IfArchiveType archive_type="Individual"><title><mt:EntryTitle />|<mt:EntryCategory />|<mt:BlogName /></title></mt:IfArchiveType>
<mt:IfArchiveType archive_type="Category"><title><mt:CategoryLabel />|<mt:BlogName /></title></mt:IfArchiveType>
<mt:If name="search_results"><title>タグ「<mt:SearchString />」がついているエントリー | <mt:BlogName /></title></mt:If>
<!-- ▲title要素ここまで▲ -->

<!-- ▼meta要素 descriptionここから▼ -->
<mt:If name="sitemap"><meta name="description" content="<mt:BlogName />のサイトマップです。<mt:BlogDescription />" /></mt:If>
<mt:If name="main_index"><meta name="description" content="<mt:BlogDescription />" /></mt:If>
<mt:IfArchiveType archive_type="Page"><meta name="description" content="<mt:PageExcerpt />" /></mt:IfArchiveType>
<mt:IfArchiveType archive_type="Individual"><meta name="description" content="<mt:EntryExcerpt />" /></mt:IfArchiveType>
<mt:IfArchiveType archive_type="Category"><meta name="description" content="<mt:CategoryDescription />" /></mt:IfArchiveType>
<mt:If name="search_results"><meta name="description" content="<mt:BlogName />の検索結果です。<mt:BlogDescription />" /></mt:If>
<!-- ▲meta要素 descriptionここまで▲ -->

<!-- ▼meta要素 keywordsここから▼ -->
<mt:If name="sitemap"><meta name="keywords" content="<mt:Include module="基本キーワード" />" /></mt:If>
<mt:If name="main_index"><meta name="keywords" content="<mt:Include module="基本キーワード" />" /></mt:If>
<mt:IfArchiveType archive_type="Page"><meta name="keywords" content="<mt:PageKeywords /><mt:Include module="基本キーワード" />" /></mt:IfArchiveType>
<mt:IfArchiveType archive_type="Individual"><meta name="keywords" content="<mt:EntryKeywords /><mt:Include module="基本キーワード" />" /></mt:IfArchiveType>
<mt:IfArchiveType archive_type="Category"><meta name="keywords" content="<mt:CategoryKeywords /><mt:Include module="基本キーワード" />" /></mt:IfArchiveType>
<mt:If name="search_results"><meta name="keywords" content="<mt:Include module="基本キーワード" />" /></mt:If>
<!-- ▲meta要素 keywordsここまで▲ -->

<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="<mt:Link template="feed_recent">" />
<link rel="stylesheet" type="text/css" href="<mt:BlogUrl />styles.css " media="screen,print" title="default" />

ほげ山くん:mt:Ifを使って,6種類すべてのテンプレートで出力内容を分けるんですね?あ,mt:IfArchiveTypeも使っているのか…。

くれま先輩:うん。アーカイブテンプレートの「ウェブページ」⁠ブログ記事」⁠ブログ記事のリスト」は,全てmt:IfArchiveTypeによって,指定したアーカイブで出力される場合だけ内容を出力させるようにしてあるのよ。

ほげ山くん:archive_typeモディファイアの値に入っている「Page」「ウェブページ」ですよね?

くれま先輩:そうそう。同じように,⁠Individual」「ブログ記事⁠⁠,⁠Category」「ブログ記事のリスト」の場合だけ,内容が出力されるのよ。

ほげ山くん:なるほど,わかりました。あと先輩,3種類あるmt:Ifの変数の値ですが,まだどこにも書いてないですよね?

くれま先輩:そうなのよ。だから,次の3つのテンプレート内で,<mt:Include module="head要素" />の直前に,それぞれこんな記述を追加してみて。説明上,手順が前後してる感じで,ごめんね!

<mt:Include module="head要素" />の直前の行に追加する変数名

インデックステンプレート
サイトマップ<mt:SetVar name="sitemap" value="1" />
メインページ<mt:SetVar name="main_index" value="1" />
システムテンプレート
検索結果<mt:SetVar name="search_results" value="1" />

ほげ山くん:これを追加すると,全部のテンプレートで,出力される内容が変わってくるんですね。僕,あと3点気になることがあるんですが…。

くれま先輩:なになに?全部言ってみてよ。

ほげ山くん:<mt:Include module="基本キーワード" />と書いてある部分って,全ページに共通するキーワードを記述するテンプレートモジュールを,後で作成するんですよね?

くれま先輩:あたり!だから現段階で再構築してしまうと,モジュールが足りなくてエラーを起こしてしまうので,再構築は次回の作業が終わった段階でやろうね。で,2つめは?

ほげ山くん:この中に出てくるMTタグをリファレンスで調べてたんですけど,mt:CategoryKeywordsというタグってないですよね…?

くれま先輩:一見本当にありそうな名前だけど,実は私が名前をつけたカスタムフィールドのタグなんだよねー(笑⁠⁠。これを使って各カテゴリにキーワードを割り当てていく予定なんだけど,今回も説明が長くなっちゃうから,次回に持ち越すね!で,最後は?

ほげ山くん:Web業界の友人に指摘されたんですけど,Movable Typeでこんな風に条件分岐を沢山使うと,空行が多くなっちゃうじゃないですか…。僕は,それが嫌で…。何か良い方法がないでしょうか?

くれま先輩:うーん。今は説明をわかりやすくするためにこういう書き方をしているけど,サイトのテンプレートを一通り説明したら,最後に空行対策のこともいろいろ考えてみようか?

ほげ山くん:ぜひお願いします!!

くれま先輩:了解!では,今日はここまでにしておこうかな。次回もこの続きを進めていくので,引き続きよろしくね!

次回予告

  • 基本キーワードのテンプレートモジュールを作ろう。
  • カテゴリー用キーワードのカスタムフィールドを作ろう。
  • グローバルナビゲーションのテンプレートモジュールを作ろう。

著者プロフィール

黒野明子(くろのあきこ)

1973年生まれ。1995年 武蔵野美術大学短期大学部専攻科グラフィックデザインコース修了。

ファッションカメラマン事務所、広告系デザイン事務所、Web制作会社勤務を経て、2003年よりフリー。Webデザイン・企画を中心に、DTPデザインなども行う。

現在、武蔵野美術大学共通デザイン研究室非常勤講師及び株式会社デジタルスケープ・PreJOBトレーニング講師も兼務。2005年秋頃から業務としてMTサイトの構築を始め、現在の業務のほとんどでMovable Typeを使用している。

著書:

『CMSとして使うMovable Typeガイドブック』 (翔泳社、共著)

『Movable Typeプロフェッショナル・スタイル』(毎日コミュニケーションズ、共著)

URL:http://cremadesign.jp/