[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>

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

    [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&lt;!– set [body_id], [is_sidebar], [this_title], [site_id] –>

    [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