[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="&nbsp;/&nbsp;" exclude_current="1">
 <$mt:GetVar name="CREATEPATH"$> ←ここが青字部分(M)で置換される
 </mt:ParentFolders>
<mt:Else>
 <mt:ParentFolders glue="&nbsp;/&nbsp;">
 <$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=””の書式は勘弁してくれるとか。。。ねぇ? ^^;

[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) = carstay
    * ウェブページの「ファイル名」 = 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