Upload
hajime-fujimoto
View
5.450
Download
2
Embed Size (px)
Citation preview
1
ウェブサイト/ブログを組み合わせたサイトのテーマ化
藤本 壱
2010/7/31MTDDC Tokyoテーマ編
2
今日のアジェンダ
自己紹介
ウェブサイトの情報をブログで扱う
ウェブサイト/ブログ間でのテンプレートモジュールの共有
ブログIDに依存しないテーマの作成
まとめ
3
自己紹介
4
自己紹介
藤本 壱(ふじもと はじめ)
フリーライター(PC関連、マネー関連)2004年11月よりMovable Typeを利用
Movable Type関連の書籍を複数執筆
5
ブログやってます
The Blog of H.Fujimotohttp://www.h-fj.com/blog/
6
ウェブサイトの情報をブログで扱う
7
ウェブサイトの情報をブログで扱う機会が多い
ウェブサイトとブログを組み合わせる場合、ウェブサイトの情報をブログで扱う機会が多く存在
ブログからウェブサイトのトップページへリンク
ブログのバナーヘッダー部分にウェブサイト名を出力
8
MTBlogParentWebsiteタグ
ブログからウェブサイトの情報を参照する際に使うブロックタグ
例:ウェブサイトの名前を出力
<mt:BlogParentWebsite><$mt:WebsiteName$>
</mt:BlogParentWebsite>MTBlogParentWebsiteタグを頻繁に使
うのは面倒
9
テンプレートモジュールで情報を共有
変数を利用して情報を共有
テンプレートモジュールで変数にウェブサイトの情報を代入
個々のブログでは、変数を利用してウェブサイトの情報を出力
10
ウェブサイト側のテンプレートモジュール
ウェブサイト名/ウェブサイトのアドレス/ウェブサイトの概要を、テンプレートモジュールで変数に代入
ウェブサイトの概要website_descriptionウェブサイトのアドレスwebsite_urlウェブサイト名website_nameウェブサイトのIDwebsite_id
内容変数名
テンプレートモジュールには「ウェブサイトの情報」等の名前を付ける
11
ウェブサイト側のテンプレートモジュールの内容<mt:BlogParentWebsite><mt:SetVars>website_id=<$mt:WebsiteID$>website_name=<$mt:WebsiteName$>website_description=<$mt:WebsiteDescription$>website_url=<$mt:WebsiteURL$></mt:SetVars></mt:BlogParentWebsite>
12
個々のブログでの作業
各テンプレートの先頭に、ウェブサイトの「ウェブサイトの情報」テンプレートモジュールを組み込む処理を追加
<mt:BlogParentWebsite><$mt:WebsiteID setvar="website_id"$>
</mt:BlogParentWebsite><$mt:Include module="ウェブサイトの情報“
blog_id="$website_id"$>
13
ブログにウェブサイトの情報を出力
MTGetVarタグでwebsite_name等の変
数を出力すれば良い
MTBlogParentWebsiteタグを書く必要
がなくなる
<$mt:GetVar name=“website_name”$>
14
ウェブサイト/ブログ間でのテンプレートモジュールの共有
15
テンプレートモジュール管理の問題(1)
ウェブサイト
ブログ1
ブログ2
ヘッダー
フッター
サイドバー
ウェブサイト/ブログ
ウェブサイトのテンプレートモジュール
ウェブサイトのテンプレートモジュールを共有したい
16
テンプレートモジュール管理の問題(2)テンプレートモジュールの組み込み→ MTIncludeタグ
<$mt:Include module=“○○○”$>
ブログに○○○テンプレート
モジュールがない時は?
ウェブサイトの○○○テンプレート
モジュールを読み込む
システムの○○○テンプレート
モジュールを読み込む
ウェブサイトのテンプレートモジュールを共有するには一工夫することが必要
17
blog_idモディファイア
MTIncludeタグにblog_idモディファイア
を指定
ウェブサイトのIDを指定すれば、ウェブサ
イトのテンプレートモジュールを組み込める
<$mt:Include module=“○○○”blog_id=“$website_id”$>
18
ウェブサイト/ブログのどちらのウェブページの情報が表示される?
組み込み先のブログのウェブページが表示される
ウェブサイトのテンプレートをブログに組み込むと・・・
ウェブサイト ブログ
<mt:Pages lastn="5"><$mt:PageTitle$>
</mt:Pages>
<$mt:Includemodule=“○○○”blog_id=“$website_id”$>
常に特定のウェブサイトまたはブログの情報を表示したい場合は?
19
ウェブサイトのコンテキストに固定
同じテンプレートタグでも、テンプレートの文脈(コンテキスト)によって出力する情報は変化
MTBlogParentWebsiteタグで囲んだ部分は、
常にウェブサイトのコンテキストで出力
<mt:BlogParentWebsite><mt:Pages lastn="5"><$mt:PageTitle$>
</mt:Pages></mt:BlogParentWebsite>
20
ブログのコンテキストに固定
MTBlogsタグで囲んだ部分は、常にブロ
グのコンテキストで出力
<mt:Blogs include_blogs="1"><mt:Pages lastn="5"><$mt:PageTitle$>
</mt:Pages></mt:Blogs>
例:IDが1番のブログのウェブページ一覧を出力
21
コンテキストの判断
MTIfWebsiteタグ/MTIfBlogタグでコン
テキストを判断
<mt:IfWebsite>ウェブサイトのコンテキストの時の出力
</mt:IfWebsite><mt:IfBlog>ブログのコンテキストの時の出力
</mt:IfBlog>
22
ブログIDに依存しない
テーマの作成
23
include_blogsモディファイア
テンプレート内で複数ブログの情報を扱う → include_blogsモディファイア
<mt:Entries include_blogs=“children”><$mt:EntryTitle$>
</mt:Entries>
例:ウェブサイト配下のすべてのブログからブログ記事を読み込む
24
ブログIDへの依存
ウェブサイト内の一部のブログを扱いたい→ ブログのIDを直書き
<mt:Entries include_blogs=“2,3”><$mt:EntryTitle$>
</mt:Entries>
例:ウェブサイト配下のブログのうち、IDが2番と3番のブログからブログ記事を読み込む
テーマの適用先ではブログのIDが変化
include_blogsモディファイアの全修正?
25
ブログIDへの依存を避ける
各ブログのIDを変数に設定
「ウェブサイトの情報」テンプレートモジュールで、ブログのIDを変数に設定す
る処理も行う
include_blogsモディファイアではブログのIDを変数で指定
26
事例
ウェブサイト
新着情報ブログ
商品情報ブログ
社長ブログ
ceo_blog_id社長ブログ
item_blog_id商品情報
news_blog_id新着情報
IDの変数名ブログ
27
変数設定用テンプレートモジュールの作成ブログIDを変数に設定するテンプレートモジュールを各ブログに作成テンプレートモジュール名は「ブログID設定」に統一
新着情報ブログ
<$mt:BlogID setvar=“news_blog_id"$>商品情報ブログ
<$mt:BlogID setvar=“item_blog_id"$>社長ブログ
<$mt:BlogID setvar="ceo_blog_id"$>
28
テンプレートモジュールを組み込んで各ブログの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>
29
各ブログのIDを変数に代入
新着情報ブログ
ブログID設定
商品情報ブログ
ブログID設定
社長ブログ
ブログID設定
ウェブサイト
ウェブサイトの情報
ウェブサイト/各ブログのテンプレート
30
各ブログの情報を扱う
include_blogsモディファイアを変数で指
定
例:新着情報ブログから最新記事10件の
タイトルを出力<mt:Entries include_blogs=“$news_blog_id”>
<$mt:EntryTitle$></mt:Entries>
31
複数のブログの情報を組み合わせたい場合
Include_blogsモディファイアに複数の変
数を指定することはできない<mt:Entries
include_blogs=“$news_blog_id,$ceo_blog_id”><$mt:EntryTitle$>
</mt:Entries>
<mt:Entriesinclude_blogs=“$news_blog_id,$ceo_blog_id”><$mt:EntryTitle$>
</mt:Entries>
複数のブログIDをカンマで区切った値を、
あらかじめ変数に代入しておく
32
事例
「新着情報ブログ」と「社長ブログ」の最新記事をまとめて出力したい両ブログのIDをコンマで区切った値を、変数「news_and_ceo_blog_id」に代入
「ウェブサイトの情報」テンプレートモジュールに以下を追加
<mt:SetVarBlock name="news_and_ceo_blog_id"><$mt:GetVar name="news_blog_id"$>,<$mt:GetVar name="ceo_blog_id"$></mt:SetVarBlock>
33
事例
include_blogsモディファイアで変数news_and_ceo_blog_idを利用
<mt:Entriesinclude_blogs=“$news_and_ceo_blog_id”><$mt:EntryTitle$>
</mt:Entries>
34
まとめ
35
まとめ
ウェブサイトの情報をブログで扱う「ウェブサイトの情報」テンプレートモジュールの共有
ウェブサイト/ブログ間でのテンプレートモジュールの共有
MTIncludeタグのblog_idモディファイア
MTBlogParentWebsiteタグ/MTBlogsタグによるコンテキストの固定
MTIfWebsiteタグ/MTIfBlogタグによるコンテキストの判断
ブログIDに依存しないテーマの作成各ブログのIDを変数に代入
Include_blogsモディファイアを変数で指定
36
One More Thing…
37
「Movable Type 5 Webサイト製作ガイドVolume 1&2」(PDF書籍)販売中
http://www.h-fj.com/blog/mt5bookvol1/http://www.h-fj.com/blog/mt5bookvol2/
38
MTDDCご来場特典クーポン
2,500円 3,000円
2,300円 2,800円
紹介記事やバナー広告掲載でさらに割引あり
39
今回のセッションでお話ししたことは、Volume 2の中で詳細に解説しています。
40
ご清聴ありがとうございました