[MT5メモ]sitemap.xml生成用 MTテンプレート
MT5対応のsitemap.xml生成用テンプレート。
ウェブサイトのカスタムインデックステンプレートとして作るべし。配下ブログも含めて出力する。
- テンプレート名: sitemap.xml(わかればなんでもいい)
- 出力ファイル名: sitemap.xml
- テンプレートの種類:?カスタムインデックステンプレート
<mt:Ignore><!-- 繰り返し処理用 --></mt:Ignore>
<mt:SetVarTemplate name="CREATEURL">
<url>
<loc><$mt:ArchiveLink encode_xml="1"$></loc>
<mt:Entries lastn="1" sort_by="modified_on"><lastmod><$mt:EntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$mt:BlogTimezone$></lastmod></mt:Entries>
<priority>0.5</priority>
</url>
</mt:SetVarTemplate>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<mt:Blogs include_blogs="children" include_with_website="1">
<url>
<loc><$mt:BlogURL encode_xml="1"$></loc>
<lastmod><$mt:Date format="%Y-%m-%dT%H:%M:%S"$><$mt:BlogTimezone$></lastmod>
<changefreq>daily</changefreq>
</url>
<mt:IfArchiveTypeEnabled archive_type="Individual"><mt:Entries lastn="9999"><url>
<loc><$mt:EntryPermalink encode_xml="1"$></loc>
<lastmod><$mt:EntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$mt:BlogTimezone$></lastmod>
<priority>1.0</priority>
</url></mt:Entries></mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Page"><mt:Pages lastn="9999"><url>
<loc><$mt:PagePermalink encode_xml="1"$></loc>
<lastmod><$mt:PageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$mt:BlogTimezone$></lastmod>
<priority>1.0</priority>
</url></mt:Pages></mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Yearly">
<mt:ArchiveList archive_type="Yearly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Monthly">
<mt:ArchiveList archive_type="Monthly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Weekly">
<mt:ArchiveList archive_type="Weekly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Daily">
<mt:ArchiveList archive_type="Daily"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Author">
<mt:ArchiveList archive_type="Author"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Author-Daily">
<mt:ArchiveList archive_type="Author-Daily"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Author-Weekly">
<mt:ArchiveList archive_type="Author-Weekly"><$mt:Var name="CREATEURL"$>
</mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Author-Monthly">
<mt:ArchiveList archive_type="Author-Monthly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Author-Yearly">
<mt:ArchiveList archive_type="Author-Yearly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Category">
<mt:ArchiveList archive_type="Category"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Category-Daily">
<mt:ArchiveList archive_type="Category-Daily"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Category-Weekly">
<mt:ArchiveList archive_type="Category-Weekly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Category-Monthly">
<mt:ArchiveList archive_type="Category-Monthly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
<mt:IfArchiveTypeEnabled archive_type="Category-Yearly">
<mt:ArchiveList archive_type="Category-Yearly"><$mt:Var name="CREATEURL"$></mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
</mt:Blogs>
</urlset>
SetVarTemplateは同じMTタグ群をあちこちに書くとき便利(マクロみたいもん)
SetVarTemplate:今までどう使うのかピンとこなかったけどようやく理解した。
MT4時代からあるタグで今さら感はありつつも自分用にメモのこすーー(^^)
<div class="path"> <mt:Ignore><!-- パスのリンク生成部分(マクロ定義みたいもん) --></mt:Ignore> <mt:SetVarTemplate name="CREATEPATH"> <a href="<$mt:WebsiteURL$><$mt:FolderPath$>/index.html"><$mt:FolderLabel$></a> ・・・(M) </mt:SetVarTemplate> <mt:SetVarBlock name="this_basename"><$mt:PageBasename$></mt:SetVarBlock> <mt:If name="this_basename" eq="index"> <mt:Ignore><!-- indexファイルならパスに自フォルダを表示しない --></mt:Ignore> <mt:ParentFolders glue=" / " exclude_current="1"> <$mt:GetVar name="CREATEPATH"$> ←ここが青字部分(M)で置換される </mt:ParentFolders> <mt:Else> <mt:ParentFolders glue=" / "> <$mt:Var name="CREATEPATH"$> ←ここが青字部分(M)で置換される </mt:ParentFolders> </mt:If> </div><!-- /div.path -->
mt:GetVarで呼び出すと、ブロック内に書いた内容そのまま(MTタグは解釈されずに文字列として)で置換されるらしい。
同じようなMTタグ群をあちこちに書く時に便利かも。
つまりマクロみたいなもんやね。Cっぽく書くとこんな感じ?
#define CREATEPATH <a href="<$mt:WebsiteURL$><$mt:FolderPath$>/index.html"><$mt:FolderLabel$></a>
movabletype.jp > テンプレートタグリファレンス > MTSetVarTemplate
http://www.movabletype.jp/documentation/appendices/tags/setvartemplate.html
タグリファレンスを見ると配列やハッシュが使えたりするので、単純な置き換え用途と考えるにはもったいないのかも。もうちょっと勉強してみよう。
MTTemplateNoteタグの長さはなんとかならんのかねーw
MTTemplateNoteというコメント用のタグがある。
<$mt:TemplateNote value="コメントhoge"$>
と書いて
<mt:Ignore>コメントhoge</mt:Ignore>
と同じように振る舞うんだけど
MTTemplateNoteってこのタグの長ったらしさはなんとかならないのかなー?!
上の2つを並べてみればわかるとおりMTTemplateNoteの方だとコメント本文の開始位置が恐ろしく後ろになるので、コメントとしての視認性が凄く悪い。全体の長さもMTIgnoreで囲む方がなんぼか短いし(エディタ上で確実に折り返されます。MTTemplateNoteさんw)
mt:Note にするとか、せめてvalue=”"の書式は勘弁してくれるとか。。。ねぇ? ^^;
[MT5備忘録]ブログで、親サイトのURLを取得するコードのメモ
ブログから親ウェブサイトのURL, ID, サイト名を取得するコードメモ
<mt:BlogParentWebsite> <$mt:WebsiteURL setvar="siteUrl"$> <$mt:WebsiteID setvar="siteId"$> <$mt:WebsiteName setvar="siteName"$> </mt:BlogParentWebsite> <p>[確認用]siteUrl=<$mt:Var name="siteUrl"></p>
[MT備忘録]パンくずリストのための習作と、アーカイブマッピングにおけるフォルダ, ファイル名の”-(ハイフン)”"_(アンダーバー)”メモ
パンくずリストのための習作
フォルダの設定はこうなっている前提(/foo部分が”パス”, その後ろの日本語部分はフォルダの”名前”)
- /tips 犬連れ旅のTips & Hints
- /tips/car クルマで行こう
- /tips/car_stay クルマで泊まる ※パスに「_(アンダーバー)」を含む
- /tips/other-transits 車以外の交通機関 ※パスに「-(ハイフン)」を含む
- /tips/other-transits/ship 船・フェリー
パンくずリストの習作として、ウェブページのテンプレートを次のように書いて出力してみる。
※親フォルダから順に、FolderBasename, ForderPath等を表示する。
<パンくずリスト生成の予備実験(ウェブページ)>
<div>folders:<br /> <mt:ParentFolders glue=" <hr> "> ※exclude_current="1" をつけると自分自身は排除 <p> FolderBasename=<$mt:FolderBasename$><br /> ←フォルダの「パス」入力値 FolderPath = <$mt:FolderPath$><br /> ←サイトトップからのパス FolderLabel=<$mt:FolderLabel$><br /> ←フォルダの「名前」 FolderDescription=<$MTFolderDescription$><br /> ←フォルダの「説明」 </p> </mt:ParentFolders> </div>
(1)フォルダ指定なしのウェブページの出力結果
folders: ※何もでない※
(2)第1階層のフォルダ:/tips 犬連れ旅のTips & Hints 配下のウェブページ の出力結果
folders: FolderBasename=tips FolderPath = tips FolderLabel=犬連れ旅のTips & Hints FolderDescription=
(3)第2階層のフォルダ:/tips/car_stay クルマで泊まる 配下のウェブページ の出力結果
folders: FolderBasename=tips FolderPath = tips FolderLabel=犬連れ旅のTips & Hints FolderDescription= -------------------------------------------------------------------------------- FolderBasename=car-stay FolderPath = tips/car_stay FolderLabel=クルマで泊まる FolderDescription=
(4)第3階層のフォルダ:/tips/other-transits/ship 船・フェリー 配下のウェブページ の出力結果
folders: FolderBasename=tips FolderPath = tips FolderLabel=犬連れ旅のTips & Hints FolderDescription= -------------------------------------------------------------------------------- FolderBasename=other-transits FolderPath = tips/other-transits FolderLabel=車以外の交通機関(電車, 船, 飛行機 etc.. FolderDescription= -------------------------------------------------------------------------------- FolderBasename=ship FolderPath = tips/other-transits/ship FolderLabel=船・フェリー FolderDescription=
アーカイブマッピングにおけるフォルダ, ファイル名の”-(ハイフン)”"_(アンダーバー)”メモ
上記例で、フォルダのパスに”-(ハイフン)”"_(アンダーバー)”をそれぞれ含むケースがあったが、テンプレートのアーカイブマッピングのパス指定次第ではこの通りのURLにならないので注意。
* フォルダの「パス(FolderBasename) = car-stay
* ウェブページの「ファイル名」 = car_foo.html
だった場合に、
ウェブページのアーカイブマッピングが、
(1)「folder_path/page_basename.html」を選択(%c/%fと書くのと同じ) なら
→ “-”"_”は入力通り
例) http://example.com/tips/car-stay/car_foo.html
(2)「folder-path/page-basename.html」を選択(デフォルト, %-c/%-fと書くのと同じ)
→ “-”"_”は”-”に統一される
例)http://example.com/tips/car-stay/car-foo.html
[MT備忘録]変数設定(SetVar, SetVarBlock系)をコンパクトに書くためのメモ
【setvarモディファイア】単独のブロックタグ内の内容を変数としてセットする場合は、これがコンパクト
<!-- set [this_content] --> <mt:SetVarBlock name="this_content"> <mt:Pages tag="@home" lastn="1"> <h1 id="page-title"><$mt:PageTitle$></h1> <$mt:PageBody$> </mt:Pages> </mt:SetVarBlock>
↓と書く替わりに、こう書く↓
<!-- set [this_content] --> <mt:Pages tag="@home" lastn="1" setvar="this_content"> <h1 id="page-title"><$mt:PageTitle$></h1> <$mt:PageBody$> </mt:Pages>
→setvar
http://www.movabletype.jp/documentation/appendices/modifiers/setvar.html
【mt:SetVars】可読性よいvar_name=value形式で、変数を一括設定
<!-- set [body_id], [is_sidebar], [this_title], [site_id] --> <$mt:SetVar name="body_id" value="home"$> <$mt:SetVar name="is_sidebar" value="yes"$> <$mt:SetVar name="this_title" value="HOME"$> <mt:SetVarBlock name="site_id"><$mt:WebsiteID$></mt:SetVarBlock>
と書く替わりに、
<!-- set [body_id], [is_sidebar], [this_title], [site_id] --> <mt:SetVars> body_id=home is_sidebar=yes this_title=HOME site_id=<$mt:WebsiteID$> </mt:SetVars>
→複数の変数をまとめて設定できる MTSetVars タグ
http://www.movabletype.jp/blog/mtsetvars.html
→MTSetVars
http://www.movabletype.jp/documentation/appendices/tags/setvars.html<!– set [body_id], [is_sidebar], [this_title], [site_id] –>
Google Analyticsの新しいトラッキングコード(非同期トラッキングコードスニペット)の設置方法メモ
12月7日付けのAnalytics日本語版公式ブログによれば、Google Analyticsの新しいトラッキング方法として、非同期トラッキングコードスニペットが提供されたらしい。
Google Analytics のトラッキングコードが新しくなりました
http://code.google.com/intl/ja/apis/analytics/docs/tracking/asyncTracking.html
新しい非同期トラッキングコードは、他のJavaScript コードの読み込みが完了しなくても正常にロードできるため、HTMLファイル内の head セクション内に記述することが可能です。
機能的には従来のga.js トラッキングコードと同等。違いはhead要素内に記述可能になったことで、このため、ページの読み込みに時間がかかったり、離脱したセッションを正確に計測できないという不都合が解消される。
コードは管理画面からではなく手動で取得するらしく、
Google Code の Asynchronous Tracking(英語)
http://code.google.com/intl/ja/apis/analytics/docs/tracking/asyncTracking.html
を参照とのことだったので、設置方法などをざっとメモしておく。
The Snippet設置方法
<script type="text/javascript">var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();</script>
- まず、従来のトラッキングコードを削除する。【重要】従来のコードと、新しいコードを混在させてはいけない。
- 上記コードをコピーしてUA-XXXXX-X 部分を自サイト用のIDに置き換えたものを、</head>の直前に記述する。
- 非同期処理が、同じページ内の他のscriptに影響を及ぼすのを避けるには、それら他scriptを、<head>要素内のGAコードより前か、あるいは、</body>直前(GAコードや全コンテンツの後ろ)に置く。それが無理な場合は、GAコードの方を</body>直前に配置((function()より前の部分はhead内に残すこともできる)。
- e コマース レポートや複数ドメイン用のカスタマイズ、イベント トラッキング等でオプションの関数を導入している場合などは、変更が必要なのでAPIのリファレンスを読め、と ^^:。
[MT5備忘録]親サイトのテンプレートモジュールをincludeする
MT5におけるウェブサイトと、配下のブログの関係をボチボチお勉強
Website-A ├Blog-A1 └Blog-A2
こんな構成になっているとしたとき、
子ブログBlog-A1から、Website-Aのテンプレートモジュールをincludeするには以下のように書く
<mt:BlogParentWebsite> <$mt:WebsiteID setvar="website_id"$> </mt:BlogParentWebsite> <$mt:Include module="※モジュール名※" blog_id="$website_id"$> [確認用]website_id: <$mt:GetVar name="website_id"$>
note:
- 自分の親なのに、わざわざWebsiteIDを与えてモジュールをインクルードする必要がある。
- blog_idを指定しない場合、自ブログ内に指定したモジュールがなければ、(親ウェブサイトは探さず)グローバルテンプレートモジュールからインクルードされる。
- スカイアークシステムさんの「ParentalInclude」プラグインを使うと、<$MTParentalinclude module=”モジュール名”$> で親サイトのモジュールをインクルード指定できるようになるらしい。※私の環境ではうまく動かなかったが、今後に期待。
モジュール内に書いたWebsiteIDってどうなるんだっけ?
BlogA-1のテンプレ
1. 子ブログ内でいきなりmt:WebsiteID:<$mt:WebsiteID$><br />
<mt:BlogParentWebsite><$mt:WebsiteID setvar="website_id">
2. 子ブログ内mtBlogParentWebsiteブロックタグの中でMTWebsiteID: <$mt:WebsiteID$><br />
3. 子ブログ内mtBlogParentWebsiteブロックタグの中で親サイトのテンプレートモジュール呼び出し
(その中でmt:WebsiteID):<$mt:Include module="WS-module" blog_id="$website_id"$><br />
</mt:BlogParentWebsite>
4. 子ブログ内mtBlogParentWebsiteブロックタグの外で親サイトのテンプレートモジュール呼び出し(その中でmt:WebsiteID):
<$mt:Include module="WS-module" blog_id="$website_id"$><br />
Website-A内のテンプレートモジュール(WS-module)
<$mt:WebsiteID$>
結果
1.子ブログ内でいきなりmt:WebsiteID:0 -> NG 2. 子ブログ内mtBlogParentWebsiteブロックタグの中でMTWebsiteID: 1 -> OK 3. 子ブログ内mtBlogParentWebsiteブロックタグの中で親サイトのテンプレートモジュール呼び出し (その中でmt:WebsiteID):1 -> OK 4. 子ブログ内mtBlogParentWebsiteブロックタグの外で親サイトのテンプレートモジュール呼び出し (その中でmt:WebsiteID):0 -> NG
SUBARUの2010年カレンダー
今日はインプレッサの6ヶ月点検とタイヤ交換に東京スバルの恵比寿店に。帰りに来年のカレンダーを貰ってきた。
インプレッサに乗り出して以来、毎年WRC シリーズのスバルのカレンダーを愛用していたのだが、来年のを開いてみたらラリーものから、普通にスバル取扱車種がこぎれいな風景写真に収まっているデザインに変わっていて正直ガッカリした。
WRCもここ数年は勝てないソルベルグの写真ばかりで多少の倦怠感はありましたけどね、それでも壁に飾って1年間愛スバル心を感じるには十分だったのになぁ。来年のカレンダーったらなんかスバルらしさが全然なくて、トヨタでもダイハツでもどうでもいい「ただで貰ったカレンダー」の一つって感じー。ホントつまんない。WRCから撤退したからってコレはないよなー。新井さんとかアルアティヤーのじゃダメなのかしらん?!”走り”にこだわるギラギラしたところを見せないスバルなんてただの弱小メーカーじゃん?と、あまりにカレンダーがつまらないので余計なことまで考えてしまった。
プロボノ イベントに参加しました
ラフォーレミュージアム原宿で行われたプロボノ イベントに参加、同時に設営と撤収ボランティアスタッフとしても参加してきました。
HELLO, PRO BONO ~知的で新しい、スキル・ボランティア、上陸。~
http://svgt.jp/probono/
ボランティアの様子
朝8:45設営ボランティア集合。
早起きがとてもとても苦手で、特に土日は昼近くまで寝ている私ゆえ、遅刻しないように起きられるかが第1関門だった。もうね、3日前ぐらいから結構緊張して就寝時刻を前倒ししたり、寝る前にゆっくりお風呂につかって疲れを取るようにしたりしたの。普通に起きられる人から見たら可笑しいですよね。でも努力の甲斐あって。。。ちゃんと間に合いました(大爆笑)。もしかしたら私的にはこれが今日一番の手柄かもしれない。
お昼はスタッフエリアでお弁当を食べながら、他のボランティアの人たちと、普段の活動のことやなぜ今回のボランティアに応募したかなど話したりしました。大学生ボランティアも何人かおり、それぞれ自分に引き付けて取り組んでいる様子が聞けて刺激になった。同時に、普段何も考えずにのらりくらりと生活している自分がちょっと恥ずかしかったかも。
イベントの様子
ゲストトーカーの知花くららさん。
TVや雑誌でよく見かける元ミス・ユニバースのきれな人という印象しかなかったのですが、元もと社会貢献的なことがしたくてミス・ユニバースに応募したとのこと。今も”高知名度ゆえにできる役割がある”と活動されているそうです。頭脳明晰な上にパッションを感じる人だった。とても素敵な方です。
各セッションで印象に残ったこと
NPO側から見たプロボノの意味や関わり方の様子をNPO法人マドレボニータ(産後ケア)の吉岡マコさん、NPO法人フローレンス(病児保育)の岡本佳美さんからのレポート。
育休中の会員ママ達がスキルを生かしていわば組織内プロボノ的なアプローチで産後白書プロジェクトを進めた話。
持続的な活動のために、最初に事業モデルをきちんと決めた。その過程をコンサルティングファームがサポート。ファイナンスのプロが専任担当+残業時間の一部を使って参加して手助けしたそうだ。
NPOは自身が立ち向かっている社会問題があり、それに関しての専門性は高い。他方で法律とかわからないこともたくさんあり、そうしたことをプロボノによる専門スキルをもった自律的な(プロマネ機能)チームがサポートするのがとても助かるとおっしゃっていた。
OK Waveの兼元さん。
最初、「え?OK Waveがなんでプロボノと関係あるの?」と思ったのだが、回答者の方達のしていることはまさに自分のスキルを生かした貢献。化学、保険、英語のプロフェッショナルを生かした回答者の方が出てきて思いを話してくれた。
ワークショップ
知らない人と話をするのが、早起きと同程度に憂鬱で苦手です。なので「次はワークショップ」と聞いただけで、トイレのふりして席を立とうかと思った位なのだけど、結果的には立たないでヨカッタし、短時間でも非常に興味深いものだったw
今回のワークショップは、まず各自が自分の職種、何ができるか(スキル)、もしプロボノするとしたら週何時間・年間何時間ぐらい参加できそうかをメモ。その後、近くの6名1グループになって貢献時間を集計しつつ、どんなスキルで貢献できそうかとか話をした。普段Web関連のイベントにしかでないので、異業種の方とこういう話をする機会が得られていろいろ気づきがあった。
イベントを通して感じたこと。
まず、対外的に自分が提供できるスキルって何だろう?と見直す良い機会になった。会社の中だけにいると、なんとなく仕事をこなせているように見えるが、いざ個人として何かのチームに入ってやろうとしたときこんな中途半端な知識やスキルじゃ心許ないなーと。
また、今まで「社会こーけん」とか「NPO/NGOの活動」とかいうとエコとか貧困とかすごく概念的なキーワードで捕らえていて、いきなりそんな凄い貢献は「私には無理むり」と腰が引けていたのだけど、実にいろんなテーマのNPO活動があることに驚いた。
今後も意識的に何かできることを見つけて参加していきたいと思った。