Skip to content

Japanese mtml guide 1 4

uehatsu edited this page Jun 29, 2011 · 45 revisions

ウィジェット「アーカイブウィジェットグループ」「カテゴリアーカイブ」「カテゴリ月別アーカイブ」「カレンダー」「サインイン」「ページ一覧」「About」

Back To Top

はじめに

ウィジェット解説もこの回が最後です。他のウィジェットとほとんど同じ物もありますので、読み進めていきましょう。

「アーカイブウィジェットグループ」

コメントにも書かれていますが、アーカイブの種類に応じて異なる内容を表示するように設定されたウィジェットです。

このウィジェットでは、 <mt:Ignore>~<mt:Ignore><mt:If>~</mt:If><mt:IfArchiveTypeEnabled>~</mt:IfArchiveTypeEnabled><$mt:Include$> タグが使われています。

また、 「カテゴリ月別アーカイブ」「カテゴリアーカイブ」「月別アーカイブ」がインクルードされています。

  • 1行目~3行目 <mt:Ignore>~<mt:Ignore>
    • 指定した範囲について、処理を行わないブロックタグです。
    • ここではコメントアウトのために利用され「アーカイブの種類に応じて異なる内容を表示するように設定されたウィジェットです。(後略)」と注意書きがされています。
  • 4行目~8行目 <mt:If>~</mt:If>
    • モディファイアに name="category_archive" と指定されているので、出力されるページがカテゴリアーカイブの場合内部を処理します。
      • 5行目~7行目 <mt:IfArchiveTypeEnabled>~</mt:IfArchiveTypeEnabled>
        • 指定したアーカイブの種類が有効のときに実行する条件タグです。
        • モディファイア archive_type="Category-Monthly" が設定されているので、カテゴリ月別アーカイブが有効な場合に内部を処理します。
          • 6行目 <$mt:Include$>
            • テンプレートモジュールや、外部ファイルを読み込みます。
            • ここではモディファイアに widget="カテゴリ月別アーカイブ" と書かれているので、「カテゴリ月別アーカイブ」ウィジェットを読み込みます。

9行目~14行目は対象が「カテゴリアーカイブ」と「月別アーカイブ」に変更されています。詳細は省略します。

「カテゴリアーカイブ」

このウィジェットでは、 <mt:IfArchiveTypeEnabled>~</mt:IfArchiveTypeEnabled><mt:TopLevelCategories>~</mt:TopLevelCategories><mt:SubCatIsFirst>~</mt:SubCatIsFirst><mt:If>~</mt:If><mt:Else><$mt:CategoryArchiveLink$><$mt:CategoryDescription$><$mt:CategoryLabel$><$mt:CategoryCount$><$mt:SubCatsRecurse$><mt:SubCatIsLast>~</mt:SubCatIsLast> タグが使われています。

  • 1行目~22行目 <mt:IfArchiveTypeEnabled>~</mt:IfArchiveTypeEnabled>
    • もう何度も出てきましたが、対象のアーカイブタイプが有効のときに内部(2行目~21行目)の処理をします。
    • ここではモディファイアに archive_type="Category" が設定されているので、カテゴリアーカイブが有効だった場合に処理を行います。
  • 5行目~19行目 <mt:TopLevelCategories>~</mt:TopLevelCategories>
    • 現在のカテゴリに関わりなく、最上位のカテゴリからサブカテゴリを含めたリストを表示するブロックタグです。
    • トップレベルカテゴリを順にループさせ、6行目~19行目までを処理します。
  • 6行目~8行目 <mt:SubCatIsFirst>~</mt:SubCatIsFirst>
    • カテゴリの一覧の中で、現在のサブカテゴリがそのレベルにおいて最初にリストされているときに実行する条件タグです。
    • 最初のリストの際、7行目ではリスト開始のための <ul> タグが表示されます。
  • 9行目~13行目 <mt:If><mt:Else></mt:If>
    • <mt:If> <mt:Else> 文です。モディファイアに tag="CategoryCount" が指定されているので、処理中のカテゴリを使っているエントリーがあるかカウントし存在すれば、 <else> 以前を、存在しない場合は <mt:Else> 以降を処理します。
      • 10行目 カテゴリを使っている場合
        • <$mt:CategoryArchiveLink$>
          • カテゴリアーカイブの URL を表示します。
        • <mt:If>~</mt:If>
          • モディファイアに tag="CategoryDescription" が指定されているため、カテゴリの説明が書かれている場合は title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>" を処理します。
            • <$mt:CategoryDescription$>
              • <a> タグの title にカテゴリの説明を設定します。
              • remove_html="1"encode_html="1" が指定されているため、HTMLタグを取り除き、HTML形式の文字列にエンコードします。
            • <$mt:CategoryLabel$>
              • カテゴリ名を表示します。
            • <$mt:CategoryCount$>
              • カテゴリに含まれるブログ記事の件数を表示します。
      • 12行目 カテゴリをつかっていない場合
        • <$mt:CategoryLabel$>
          • カテゴリ名を表示します。アーカイブもないためリンクや件数などの装飾はありません。
  • 14行目 <$mt:SubCatsRecurse$>
    • 現在のカテゴリに属するサブカテゴリの MTSubCategories ブロックを再帰的に表示します。
    • <ul><li>~</li></ul> の形で表示されます。
  • 15行目、 </li> でタグを閉じています。
  • 16行目~18行目 <mt:SubCatIsLast>~</mt:SubCatIsLast>
    • カテゴリの一覧の中で、現在のサブカテゴリがそのレベルにおいて最後にリストされているときに実行する条件タグです。
    • ここでは </ul> タグで、リスト表示を閉じるために利用しています。

「カテゴリ月別アーカイブ」

ユーザー月別アーカイブと基本的にはおなじ構成です。

違っているのは <mt:IfArchiveTypeEnabled> などのモディファイアに archive_type="Category-Monthly" 設定してあるため、「カテゴリ月別アーカイブ」が作成されている時だけ処理されます。

他にもCSSのクラスなどが違っています。

詳細は省略します。

「カレンダー」

カレンダーを表示するウィジェットです。再構築した時点での月が表示され、ブログ記事が書かれている日はブログ記事アーカイブへのリンクが張られます。

このウィジェットは <mt:IfArchiveTypeEnabled>~</mt:IfArchiveTypeEnabled><$mt:Date$><mt:Calendar>~</mt:Calendar><mt:CalendarWeekHeader>~</mt:CalendarWeekHeader><mt:CalendarIfEntries>~</mt:CalendarIfEntries><mt:Entries>~</mt:Entries><$mt:EntryPermalink$><$mt:CalendarDay$><mt:CalendarIfNoEntries>~</mt:CalendarIfNoEntries><mt:CalendarIfBlank>~</mt:CalendarIfBlank><mt:CalendarWeekFooter>~</mt:CalendarWeekFooter> タグが使われています。

  • 1行目~37行目 <mt:IfArchiveTypeEnabled>~</mt:IfArchiveTypeEnabled>
    • これも指定されたアーカイブタイプであれば2行目~36行目の内部処理を行うコンディショナルタグです。
    • モディファイアとして初めて archive_type="Individual" が指定されています。これはブログ記事アーカイブが利用されている(デフォルト)場合に内部処理を実行します。
  • 3行目 <$mt:Date$>
    • 再構築した日時を表示します。更新日時を表示したいときに利用します。
    • モディファイアに format="%B %Y" と書かれているので「20xx月xx日」と表示されます。これは日付の言語が投稿設定で「日本語」に設定されているためです。他の言語にすると表示も変わります。
  • 15行目~33行目 <mt:Calendar>~</mt:Calendar>
    • 一ケ月分のカレンダーを表示するためのブロックタグです。
  • 16行目~18行目 <mt:CalendarWeekHeader>~</mt:CalendarWeekHeader>
    • 週の始まりのときに実行する条件タグです。カレンダーを表組みにするとき、<tr> タグの出力に利用します。
  • 20行目~24行目 <mt:CalendarIfEntries>~</mt:CalendarIfEntries>
    • ブログ記事が投稿された日のみ処理する条件タグです。カレンダーを表組みで表示するときに、ブログ記事が投稿された日のみに、日付アーカイブのリンクを付加したい場合に利用できます。
  • 25行目~27行目 <mt:CalendarIfNoEntries>~</mt:CalendarIfNoEntries>
    • ブログ記事が投稿されてない日のみ処理する条件タグです。
  • 28行目 <mt:CalendarIfBlank>~</mt:CalendarIfBlank>
    • カレンダーのセルが空白のとき (セル番号が設定されない) のときに実行する条件タグです。
    • ここでは &nbsp; (空白文字)が表示されます。
  • 30行目~32行目 <mt:CalendarWeekFooter>~</mt:CalendarWeekFooter>
    • 週の終わりのときに実行する条件タグです。カレンダーを表組みにするとき、 タグの出力に利用します。

「サインイン」

サインイン機能を実現するウィジェットです。

このウィジェットは<$mt:CGIPath$><$mt:CommentScript$><mt:IfRegistrationAllowed>~</mt:IfRegistrationAllowed> タグが使われています。

ここでは、Java Scriptの説明は省略します。

  • 1行目~54行目 <mt:IfRegistrationAllowed>~</mt:IfRegistrationAllowed>
    • コメントの投稿について、投稿者認証を利用できる場合のみに実行する条件タグです。
  • 27行目
    • <$mt:CGIPath$>
      • システムの CGI プログラムを配置したパスを表示します。環境設定ファイル (mt-config.cgi) の CGIPath の値を表示します。
    • <$mt:CommentScript$>
      • コメントを処理する CGI プログラムのファイル名を表示します。

「ページ一覧」

ウェブページ一覧を表示するウィジェットです。

実装はカテゴリアーカイブとほぼ同等です。

詳細は省略します。

「About」

メインインデックスページ以外で表示される各ページの概要を表示するウィジェットです。

このウィジェットは <mt:unless>~</mt:unless><mt:If>~</mt:If><$mt:EntryAuthorLink$><$mt:EntryDate$><mt:EntryPrevious>~</mt:EntryPrevious><$mt:EntryPermalink$><$mt:EntryTitle$><mt:EntryNext>~</mt:EntryNext><$mt:ArchiveDate$><$mt:CategoryLabel$><$mt:ArchiveLink$><$mt:ArchiveTitle$><mt:Else><mt:CategoryPrevious>~</mt:CategoryPrevious><$mt:CategoryArchiveLink$><mt:CategoryNext>~</mt:CategoryNext><$mt:AuthorDisplayName$><mt:ArchivePrevious>~</mt:ArchivePrevious><mt:ArchiveNext>~</mt:ArchiveNext><$mt:BlogURL$><$mt:Link$> タグが使われています。

  • 1行目~76行目 <mt:unless>~</mt:unless>
    • <mt:unless> タグは、 <mt:If> タグと逆の動作をし、条件文が合わなかった場合に内部を処理します。
    • ここではモディファイアに name="main_index" が指定されているため、ページがメインインデックス以外の場合に内部を処理します。
  • 4行目~6行目 <mt:If><mt:Else></mt:If>
    • モディファイアに name="entry_template" が設定されているため、ブログ記事だった場合「このブログ記事について」と表示されます。
    • それ以外の場合、7行目~9行目でモディファイアが name="archive_template" と指定されているので、アーカイブテンプレートだった場合「このアーカイブについて」と表示されます。
    • これらに合わず 11行目~13行目で、モディファイア name="archive_index" が指定されているため、アーカイブインデックスだった場合「このページについて」と表示されます。
  • 16行目~18行目で、モディファイア name="archive_index" が指定されているので、アーカイブインデックスだった場合「このページには過去に書かれたすべてのコンテンツが含まれています。」と表示されます。
  • 19行目~27行目で、モディファイア name="entry_template" が指定されているのでブログ記事だった場合、内部が処理されます。
    • 20行目
      • <$mt:EntryAuthorLink$>
        • ブログ記事の作成者へのリンクを表示します。このリンクには、作成者のログイン名ではなく、表示名が表示されることに注意してください。ユーザー設定で表示名の設定が無い場合、何も表示されません。
        • ブログ記事作成者のプロフィールに URL が入力されていれば URL へのリンクが付加されます。URLが入力されていないときは、リンクは付加されません。
      • <$mt:EntryDate$>
        • ブログ記事の作成日時を表示します。
        • モディファイアに format="%x %X" が指定され、日付の言語が投稿指定で「日本語」に指定されているため、「20xx年xx月xx日 xx:xx」と表示されます。
    • 21行目~23行目 <mt:EntryPrevious>~</mt:EntryPrevious>
      • 現在のブログ記事の前のブログ記事の内容を表示するためのブロックタグです。
        • 22行目
          • <$mt:EntryPermalink$>
            • ブログ記事アーカイブの絶対 URL を表示します。
          • <$mt:EntryTitle$>
            • ブログ記事のタイトルを表示します。
            • モディファイアに remove_html="1" と書かれているため、HTMLタグを消去します。
    • 24行目~26行目 <mt:EntryNext>~</mt:EntryNext>
      • 現在のブログ記事の次のブログ記事の内容を表示するためのブロックタグです。
        • 25行目
          • <$mt:EntryPermalink$>
            • ブログ記事アーカイブの絶対 URL を表示します。
          • <$mt:EntryTitle$>
            • ブログ記事のタイトルを表示します。
            • モディファイアに remove_html="1" と書かれているため、HTMLタグを消去します。

この後、「カテゴリアーカイブ」、「ユーザーアーカイブ」、「日・週・月・年別のアーカイブ」、「アーカイブインデックス」に場合分けされて処理が行われます。詳細は省略します。

まとめ

今回出てきた中で特に注目していただきたいのは、 <mt:unless>~</mt:unless> です。今までの、 <mt:If> <mt:Else> と合わせて、MTMLで良く利用されるタグです。

これら条件分岐タグを組み合わせる事で色々な処理を行う事が可能となります。次の章で改めて解説します。

Back To Top

Clone this wiki locally