ウェブサイト/ブログを組み合わせた
     サイトのテーマ化
        藤本 壱

         2010/7/31
     MTDDC Tokyoテーマ編

                       1
今日のアジェンダ
自己紹介
ウェブサイトの情報をブログで扱う
ウェブサイト/ブログ間でのテンプレート
モジュールの共有
ブログIDに依存しないテーマの作成
まとめ


                      2
自己紹介




       3
自己紹介
藤本 壱(ふじもと はじめ)
フリーライター(PC関連、マネー関連)
2004年11月よりMovable Typeを利用
Movable Type関連の書籍を複数執筆




                            4
ブログやってます




  The Blog of H.Fujimoto
 http://www.h-fj.com/blog/
                             5
ウェブサイトの情報を
  ブログで扱う




             6
ウェブサイトの情報をブログで扱う
機会が多い
ウェブサイトとブログを組み合わせる場
合、ウェブサイトの情報をブログで扱う機
会が多く存在
 ブログからウェブサイトのトップページへリン
 ク
 ブログのバナーヘッダー部分にウェブサイト
 名を出力



                      7
MTBlogParentWebsiteタグ
 ブログからウェブサイトの情報を参照す
 る際に使うブロックタグ
 例:ウェブサイトの名前を出力
<mt:BlogParentWebsite>
 <$mt:WebsiteName$>
</mt:BlogParentWebsite>
 MTBlogParentWebsiteタグを頻繁に使
 うのは面倒
                              8
テンプレートモジュールで情報を
共有
変数を利用して情報を共有
テンプレートモジュールで変数にウェブサ
イトの情報を代入
個々のブログでは、変数を利用してウェ
ブサイトの情報を出力




                      9
ウェブサイト側のテンプレートモ
ジュール
  ウェブサイト名/ウェブサイトのアドレス/
  ウェブサイトの概要を、テンプレートモジュー
  ルで変数に代入
          変数名               内容
website_id            ウェブサイトのID
website_name          ウェブサイト名
website_url           ウェブサイトのアドレス
website_description   ウェブサイトの概要
  テンプレートモジュールには「ウェブサイトの
  情報」等の名前を付ける
                                    10
ウェブサイト側のテンプレートモ
ジュールの内容
<mt:BlogParentWebsite>
<mt:SetVars>
website_id=<$mt:WebsiteID$>
website_name=<$mt:WebsiteName$>
website_description=<$mt:WebsiteDescription$>
website_url=<$mt:WebsiteURL$>
</mt:SetVars>
</mt:BlogParentWebsite>




                                                11
個々のブログでの作業
 各テンプレートの先頭に、ウェブサイトの
 「ウェブサイトの情報」テンプレートモ
 ジュールを組み込む処理を追加
<mt:BlogParentWebsite>
 <$mt:WebsiteID setvar="website_id"$>
</mt:BlogParentWebsite>
<$mt:Include module="ウェブサイトの情報“
             blog_id="$website_id"$>


                                        12
ブログにウェブサイトの情報を出
力
 MTGetVarタグでwebsite_name等の変
 数を出力すれば良い
<$mt:GetVar name=“website_name”$>

 MTBlogParentWebsiteタグを書く必要
 がなくなる



                                    13
ウェブサイト/ブログ間での
テンプレートモジュールの共有




                 14
テンプレートモジュール管理の問
題(1)
ウェブサイトのテンプレートモジュールを共有し
たい
ウェブサイト       ウェブサイトの
 /ブログ      テンプレートモジュール

ウェブサイト        ヘッダー

 ブログ1         フッター

 ブログ2         サイドバー
                         15
テンプレートモジュール管理の問
題(2)
 テンプレートモジュールの組み込み
 → MTIncludeタグ
<$mt:Include module=“○○○”$>
    ブログに               ウェブサイトの
                        システムの
 ○○○テンプレート            ○○○テンプレート
  モジュールが               モジュールを
   ない時は?                読み込む

  ウェブサイトのテンプレートモジュールを
   共有するには一工夫することが必要
                                  16
blog_idモディファイア
 MTIncludeタグにblog_idモディファイア
 を指定
 ウェブサイトのIDを指定すれば、ウェブサ
 イトのテンプレートモジュールを組み込め
 る
<$mt:Include module=“○○○”
             blog_id=“$website_id”$>


                                       17
ウェブサイトのテンプレートを
        ブログに組み込むと・・・
     ウェブサイト                       ブログ
<mt:Pages lastn="5">   <$mt:Include
 <$mt:PageTitle$>       module=“○○○”
</mt:Pages>             blog_id=“$website_id”$>

        ウェブサイト/ブログのどちらの
          組み込み先のブログの
       ウェブページの情報が表示される?
         ウェブページが表示される
     常に特定のウェブサイトまたはブログの
        情報を表示したい場合は?
                                                  18
ウェブサイトのコンテキストに固定

 同じテンプレートタグでも、テンプレートの文脈
 (コンテキスト)によって出力する情報は変化
 MTBlogParentWebsiteタグで囲んだ部分は、
 常にウェブサイトのコンテキストで出力

<mt:BlogParentWebsite>
 <mt:Pages lastn="5">
  <$mt:PageTitle$>
 </mt:Pages>
</mt:BlogParentWebsite>

                             19
ブログのコンテキストに固定
  MTBlogsタグで囲んだ部分は、常にブロ
  グのコンテキストで出力
例:IDが1番のブログのウェブページ一覧を出力
<mt:Blogs include_blogs="1">
 <mt:Pages lastn="5">
  <$mt:PageTitle$>
 </mt:Pages>
</mt:Blogs>



                               20
コンテキストの判断
 MTIfWebsiteタグ/MTIfBlogタグでコン
 テキストを判断
<mt:IfWebsite>
 ウェブサイトのコンテキストの時の出力
</mt:IfWebsite>
<mt:IfBlog>
 ブログのコンテキストの時の出力
</mt:IfBlog>


                               21
ブログIDに依存しない
  テーマの作成




              22
include_blogsモディファイア
 テンプレート内で複数ブログの情報を扱
 う → include_blogsモディファイア
例:ウェブサイト配下のすべてのブログから
ブログ記事を読み込む
<mt:Entries include_blogs=“children”>
  <$mt:EntryTitle$>
</mt:Entries>



                                        23
ブログIDへの依存
 ウェブサイト内の一部のブログを扱いたい
 → ブログのIDを直書き
例:ウェブサイト配下のブログのうち、IDが
2番と3番のブログからブログ記事を読み込む
<mt:Entries include_blogs=“2,3”>
 <$mt:EntryTitle$>
</mt:Entries>
 テーマの適用先ではブログのIDが変化
 include_blogsモディファイアの全修正?

                                   24
ブログIDへの依存を避ける
各ブログのIDを変数に設定
「ウェブサイトの情報」テンプレートモ
ジュールで、ブログのIDを変数に設定す
る処理も行う
include_blogsモディファイアではブログ
のIDを変数で指定



                        25
事例
         ウェブサイト


 新着情報    商品情報        社長
  ブログ     ブログ        ブログ
   ブログ           IDの変数名
新着情報     news_blog_id
商品情報     item_blog_id
社長ブログ    ceo_blog_id
                           26
変数設定用テンプレートモジュー
ルの作成
 ブログIDを変数に設定するテンプレート
 モジュールを各ブログに作成
 テンプレートモジュール名は「ブログID設
 定」に統一
新着情報ブログ
<$mt:BlogID setvar=“news_blog_id"$>
商品情報ブログ
<$mt:BlogID setvar=“item_blog_id"$>
社長ブログ
<$mt:BlogID setvar="ceo_blog_id"$>

                                      27
テンプレートモジュールを組み込んで
各ブログのIDを変数に代入
   「ウェブサイトの情報」テンプレートモ
   ジュールを書き換え
<mt:BlogParentWebsite>
<mt:SetVars>
・・・
</mt:SetVars>
<mt:Blogs include_blogs="children">
<$mt:BlogID setvar="blog_id"$>
<$mt:Include module="ブログID設定“
             blog_id="$blog_id"$>
</mt:Blogs>
</mt:BlogParentWebsite>
                                      28
各ブログのIDを変数に代入

 ウェブサイト     新着情報ブログ
ウェブサイトの情報   ブログID設定

            商品情報ブログ
            ブログID設定

             社長ブログ
 ウェブサイト/    ブログID設定
  各ブログの
  テンプレート


                      29
各ブログの情報を扱う
  include_blogsモディファイアを変数で指
  定
例:新着情報ブログから最新記事10件の
  タイトルを出力
<mt:Entries include_blogs=“$news_blog_id”>
 <$mt:EntryTitle$>
</mt:Entries>



                                             30
複数のブログの情報を組み合わ
せたい場合
 Include_blogsモディファイアに複数の変
 数を指定することはできない
<mt:Entries
 include_blogs=“$news_blog_id,$ceo_blog_id”>
 <$mt:EntryTitle$>
</mt:Entries>
  複数のブログIDをカンマで区切った値を、
  あらかじめ変数に代入しておく


                                               31
事例
  「新着情報ブログ」と「社長ブログ」の最
  新記事をまとめて出力したい
  両ブログのIDをコンマで区切った値を、
  変数「news_and_ceo_blog_id」に代入
  「ウェブサイトの情報」テンプレートモ
  ジュールに以下を追加

<mt:SetVarBlock name="news_and_ceo_blog_id">
<$mt:GetVar name="news_blog_id"$>,<$m
t:GetVar name="ceo_blog_id"$>
</mt:SetVarBlock>
                                               32
事例
 include_blogsモディファイアで変数
 news_and_ceo_blog_idを利用
<mt:Entries
 include_blogs=“$news_and_ceo_blog_id”>
 <$mt:EntryTitle$>
</mt:Entries>




                                          33
まとめ




      34
まとめ
ウェブサイトの情報をブログで扱う
 「ウェブサイトの情報」テンプレートモジュールの共有
ウェブサイト/ブログ間でのテンプレートモ
ジュールの共有
 MTIncludeタグのblog_idモディファイア
 MTBlogParentWebsiteタグ/MTBlogsタグによるコンテキス
 トの固定
 MTIfWebsiteタグ/MTIfBlogタグによるコンテキストの判断
ブログIDに依存しないテーマの作成
 各ブログのIDを変数に代入
 Include_blogsモディファイアを変数で指定


                                       35
One More Thing…




                  36
「Movable Type 5 Webサイト製作ガイド
Volume 1&2」(PDF書籍)販売中




 http://www.h-fj.com/blog/mt5bookvol1/
 http://www.h-fj.com/blog/mt5bookvol2/
                                         37
MTDDCご来場特典クーポン




  2,500円    3,000円

  2,300円    2,800円
紹介記事やバナー広告掲載でさらに割引あり
                       38
今回のセッションでお話し
したことは、Volume 2の
中で詳細に解説していま
す。




              39
ご清聴ありがとうございました




                 40

ウェブサイト/ブログを組み合わせたサイトのテーマ化