Top > Movable Type > カスタマイズ > その他 [全て開く]
2008年7月12日

「最近のコメント」のページを作る(改)

July 12,2008 2:02 AM
Tag:[, , ]
Permalink

昨日公開した「「最近のコメント」のページを作る」は、ウェブページを保存しないと内容が更新されないという重大な誤りがありました。この場をお借りしてお詫び申し上げます。
はてブでのご指摘ありがとうございました。 > aklaswadさん

前のエントリーは失敗例としてそのままにしておき、このエントリーで修正したものを紹介します。


Movable Type 4 で「最近のコメント」のページを作る方法です。

完成画面

サイト内でひとつの独立したページを作成するため、ここではウェブページアーカイブを利用する方法を紹介します。サンプルはデフォルトテンプレートを使っていますが、他のテンプレートでも同様です。

このカスタマイズは、バージョン 4.2 向けです。4.0 ~4.1 で使用する場合は、手順の中のmteval モディファイアを、EvalTemplateプラグインに変更してください。多分動作すると思います。

このテクニックを利用すれば、「最近のブログ記事」や「カテゴリー一覧」など、好きなリストのページを作成することができます。

1.ウェブページアーカイブの修正

ウェブページアーカイブの本文フィールドでテンプレートタグを使えるようにするための修正を行います。

[設定]-[テンプレート]-[アーカイブテンプレート一覧]にある「ウェブページ」をクリックします。

アーカイブテンプレート一覧

テンプレート編集画面にある、MTPageBodyタグにmtevalモディファイアを追加して、[保存]をクリックします。

テンプレート編集画面

修正後のMTPageBodyタグは次のようになります。

<$mt:PageBody mteval="1"$>

2.「最近のコメント」インデックステンプレートの作成

「最近のコメント」のリスト部分を出力するインデックステンプレートを作成します。

[デザイン]-[テンプレート]でテンプレート一覧画面を表示し、インデックステンプレートを作成をクリックします。

テンプレート一覧画面

テンプレートの内容に次のサブテンプレートを設定します。

<mt:IfNonZero tag="blogCommentCount">
<mt:Entries recently_commented_on="10">
  <mt:EntriesHeader>
<ul>
  </mt:EntriesHeader>
  <li><a href="<mt:EntryPermalink valid_html="1" />"><mt:EntryTitle encode_html="1"></a>
    <ul>
    <mt:Comments lastn="10">
      <li>
        <a href="<mt:EntryLink archive_type="Individual" />#c<mt:CommentID />" title="comment-<mt:CommentID />">
          <mt:CommentAuthor default="Anonymous">
        </a> <mt:CommentDate format="%m/%d" />
      </li>
    </mt:Comments>
    </ul>
  </li>
  <mt:EntriesFooter>
</ul>
  </mt:EntriesFooter>
</mt:Entries>
</mt:IfNonZero>

上記のテンプレートは自由にカスタマイズして構いません。

出力ファイル名に「recent_comments」、テンプレートの種類に「カスタムインデックステンプレート」を選択します。公開欄はとりあえずスタティックにしておいてください。

テンプレート設定画面

このテンプレートは、次項のウェブページを作成する前に、必ず再構築を行ってください。

3.「最近のコメント」ウェブページの作成

「最近のコメント」用のウェブページを作成します。

[新規作成]-[ウェブページの作成]でウェブページ作成画面を開きます。

ウェブページ作成

タイトルは「最近のコメント一覧」として(何でもいいです)、本文フィールドのフォーマットを「なし」に変更します。

ウェブページ作成

フォーマット変更後、次の内容を本文フィールドに設定します。

<mt:include file="recent_comments">

MTLink タグに file モディファイアを設定することで、外部ファイルの内容をページに反映させることができます。

ウェブページの出力先フォルダの設定は任意です。ここでは設定しないので、ブログディレクトリ直下に出力します。ファイル名は何でも構いませんが、「comments.html」にしておきます。また、このウェブページへのコメント・
トラックバックは受信しない設定にします。

ウェブページの設定

保存すれば冒頭の画面のように表示されます。コメント投稿者は実在の人物ですが、気にしないでください。

4.「最近のコメント」ウェブページへのリンクの作成

このページへのリンクを表示するには、サイドバーなどに、このページのURLを、a 要素のhref属性に直接埋め込むか、MTLinkタグを使って次の内容を埋め込んでください。

<a href="<mt:Link entry_id="ウェブページのID番号" />">最近のコメント</a>

ウェブページのID番号 は、該当のウェブページ編集画面を表示したときのURLに含まれる、下記の赤色部分です。

http://user-domain/mt/mt.cgi?__mode=view&_type=page&id=3&blog_id=1

entry_id モディファイアはもともとブログ記事のID番号を指定するためのモディファイアですが、ウェブページのID番号はブログ記事とウェブページでユニーク(=ブログ記事と重複しない)なので、このような指定が可能、という訳です。

5.インデックステンプレートのみで「最近のコメント」のページを作る場合

1~4項の手順ではウェブページを使った方法を示しましたが、ウェブページを使わない場合は、インデックステンプレートのみで「最近のコメント」のページを作ります。

具体的には、「最近のコメント」という新しいインデックステンプレートを作成し、「メインページ」インデックステンプレートと、「ブログ記事の概要」テンプレートモジュールの(X)HTMLマークアップ部分と、3項の内容を組み合わせたものを設定します(以下)。

黒色部分が「メインページ」インデックステンプレート、青色部分が「ブログ記事の概要」テンプレートモジュール、赤色が3項の「最近のコメント」のサブテンプレートです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard">
<head>
  <$mt:Include module="HTMLヘッダー"$>
  <link rel="EditURI" type="application/rsd+xml" title="RSD" href="<$mt:Link template="rsd"$>" />
  <title><$mt:BlogName encode_html="1"$></title>
</head>
<body id="<$mt:BlogTemplateSetID$>" class="mt-main-index <$mt:Var name="page_layout"$>">
  <div id="container">
    <div id="container-inner">
      <$mt:Include module="バナーヘッダー"$>
      <div id="content">
        <div id="content-inner">
          <div id="alpha">
            <div id="alpha-inner">
<div class="entry-asset asset hentry">
  <div class="asset-header">
    <h2 class="asset-name entry-title">最近のコメント</h2>
  </div>
  <div class="asset-content entry-content">
    <div class="asset-body">
<mt:IfNonZero tag="blogCommentCount">
<mt:Entries recently_commented_on="10">
<mt:EntriesHeader>
  <ul>
</mt:EntriesHeader>
  <li><a href="<mt:EntryPermalink valid_html="1" />"><mt:EntryTitle encode_html="1"></a>
    <ul>
    <mt:Comments lastn="10">
      <li>
        <a href="<mt:EntryLink archive_type="Individual" />#c<mt:CommentID />" title="comment-<mt:CommentID />">
          <mt:CommentAuthor default="Anonymous">
        </a> <mt:CommentDate format="%m/%d" />
      </li>
    </mt:Comments>
    </ul>
  </li>
<mt:EntriesFooter>
  </ul>
</mt:EntriesFooter>
</mt:Entries>
</mt:IfNonZero>
    </div>
  </div>
  <div class="asset-footer"></div>
</div>
            </div>
          </div>
          <$mt:Include module="サイドバー"$>
        </div>
      </div>
      <$mt:Include module="バナーフッター"$>
    </div>
  </div>
</body>
</html>

このインデックステンプレートから出力したページへのリンクを表示するには、サイドバーなどに、このページのURLを、a 要素のhref属性に直接埋め込むか、MTLinkタグを使って次の内容を埋め込んでください。

<a href="<mt:Link template="最近のコメント" />">最近のコメント</a>
Comments [0] | Trackbacks [0]
2008年7月11日

「最近のコメント」のページを作る

July 11,2008 12:55 PM
Tag:[, , ]
Permalink

Movable Type 4 で「最近のコメント」のページを作る方法です。

お詫び:このカスタマイズにはウェブページを更新しないと、最新の情報が取得できないという致命的な誤りがあるため、本エントリーのカスタマイズは行わず「「最近のコメント」のページを作る(改)」を参照してください。なお、本カスタマイズで使用しているプラグインには何ら問題はありません。

完成画面

サイト内でひとつの独立したページを作成するため、ここではウェブページアーカイブを利用する方法を紹介します。サンプルはデフォルトテンプレートを使っていますが、他のテンプレートでも同様です。

このカスタマイズは、バージョン 4.2 向けです。4.0 ~4.1 で使用する場合は、手順の中のmteval モディファイアを、EvalTemplateプラグインに変更してください。多分動作すると思います。

このテクニックを利用すれば、「最近のブログ記事」や「カテゴリー一覧」など、好きなリストのページを作成することができます。

1.IndexContext プラグインのインストール

メインページと同じ情報をアーカイブページで表示する indexcontext プラグイン」の1項の設定を行ってください。

このプラグインを使用しないと、ウェブページ(の本文フィールド)でMTCommentsタグを使用した場合、ウェブページのコンテキストに依存してしまい、期待する内容(=ブログ全体を対象としてコメント)が出力されません。

2.ウェブページアーカイブの修正

ウェブページアーカイブの本文フィールドでテンプレートタグを使えるようにするための修正を行います。

[設定]-[テンプレート]-[アーカイブテンプレート一覧]にある「ウェブページ」をクリックします。

アーカイブテンプレート一覧

テンプレート編集画面にある、MTPageBodyタグにmtevalモディファイアを追加して、[保存]をクリックします。

テンプレート編集画面

修正後のMTPageBodyタグは次のようになります。

<$mt:PageBody mteval="1"$>

3.「最近のコメント」ウェブページの作成

「最近のコメント」用のウェブページを作成します。

[新規作成]-[ウェブページの作成]でウェブページ作成画面を開きます。

ウェブページ作成

タイトルは「最近のコメント一覧」として(何でもいいです)、本文フィールドのフォーマットを「なし」に変更します。

ウェブページ作成

フォーマット変更後、次の内容を本文フィールドに設定します。

<mt:IndexContext>
<mt:IfNonZero tag="blogCommentCount">
<mt:Entries recently_commented_on="10">
  <mt:EntriesHeader>
<ul>
  </mt:EntriesHeader>
  <li><a href="<mt:EntryPermalink valid_html="1" />"><mt:EntryTitle encode_html="1"></a>
    <ul>
    <mt:Comments lastn="10">
      <li>
        <a href="<mt:EntryLink archive_type="Individual" />#c<mt:CommentID />" title="comment-<mt:CommentID />">
          <mt:CommentAuthor default="Anonymous">
        </a> <mt:CommentDate format="%m/%d" />
      </li>
    </mt:Comments>
    </ul>
  </li>
  <mt:EntriesFooter>
</ul>
  </mt:EntriesFooter>
</mt:Entries>
</mt:IfNonZero>
</mt:IndexContext>

上記のテンプレートは自由にカスタマイズして構いませんが、一番外側のIndexContextタグは外さないでください。

このページの出力先フォルダの設定は任意です。ここでは設定しないので、ブログディレクトリ直下に出力します。ファイル名は何でも構いませんが、「comments.html」にしておきます。また、このウェブページへのコメント・
トラックバックは受信しない設定にします。

ウェブページの設定

保存すれば冒頭の画面のように表示されます。コメント投稿者は実在の人物ですが、気にしないでください。

4.「最近のコメント」ウェブページへのリンクの作成

このページへのリンクを表示するには、サイドバーなどに、このページのURLを、a 要素のhref属性に直接埋め込むか、MTLinkタグを使って次の内容を埋め込んでください。

<a href="<mt:Link entry_id="ウェブページのID番号" />">最近のコメント</a>

ウェブページのID番号 は、該当のウェブページ編集画面を表示したときのURLに含まれる、下記の赤色部分です。

http://user-domain/mt/mt.cgi?__mode=view&_type=page&id=3&blog_id=1

entry_id モディファイアはもともとブログ記事のID番号を指定するためのモディファイアですが、ウェブページのID番号はブログ記事とウェブページでユニーク(=ブログ記事と重複しない)なので、このような指定が可能、という訳です。

Comments [0] | Trackbacks [0]
2008年1月 2日

トップページの最新記事に Google Adsense を貼り付ける

January 2,2008 1:23 AM
Tag:[, , , ]
Permalink

Movable Type 4 で、トップページの最新記事に Google Adsense を貼り付けるカスタマイズです。昨年よりご質問を頂いていたもので、本エントリーにて紹介致します。

ここでは公開テンプレートをサンプルに紹介しますが、デフォルトテンプレートでもほぼ同じです。

1.日付の前に表示する

表示位置のイメージ

日付の前に表示するイメージ

ブログ管理画面より「テンプレート」→「デザイン」→「テンプレートモジュール」→「ブログ記事の概要」を開き、青色のタグを追加します。[Google Adsenseのコード] の部分にご自身の Google Adsense のコードを貼り付けてください。


<mt:if name="main_template">
<MTEntriesHeader>
   <div class="adsense">
   [Google Adsenseのコード]
   </div>
</MTEntriesHeader>
</mt:if>
 
<MTDateHeader>
<p class="date"><$MTEntryDate format="%x"$></p>
</MTDateHeader>
 
<div class="entry">
 
   <h2 id="a<$MTEntryID pad="1"$>" class="entry-header"><a href="<$MTEntryPermalink$>"><$MTEntryTitle encode_html="1"$></a></h2>
   <div class="entry-content clearfix">
      <MTIfNonEmpty tag="EntryBody">
         <$MTEntryBody$>
      </MTIfNonEmpty>
      <MTIfNonEmpty tag="EntryMore">
         <p class="entry-more"><a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle encode_html="1"$>"</a></p>
      </MTIfNonEmpty>
 
      <MTEntryIfTagged>
         <$MTInclude module="タグ"$>
      </MTEntryIfTagged>
 
   </div>
   <$MTInclude module="ブログ記事のメタデータ"$>
</div>

2.タイトルの前に表示する

表示位置のイメージ

タイトルの前に表示するイメージ

ブログ管理画面より「テンプレート」→「デザイン」→「テンプレートモジュール」→「ブログ記事の概要」を開き、青色のタグを追加します。[Google Adsenseのコード] の部分にご自身の Google Adsense のコードを貼り付けてください。

<MTDateHeader>
<p class="date"><$MTEntryDate format="%x"$></p>
</MTDateHeader>
 
<div class="entry">
   <mt:if name="main_template">
   <MTEntriesHeader>
      <div class="adsense">
      [Google Adsenseのコード]
      </div>
   </MTEntriesHeader>
   </mt:if>
   <h2 id="a<$MTEntryID pad="1"$>" class="entry-header"><a href="<$MTEntryPermalink$>"><$MTEntryTitle encode_html="1"$></a></h2>
   <div class="entry-content clearfix">
      <MTIfNonEmpty tag="EntryBody">
         <$MTEntryBody$>
      </MTIfNonEmpty>
      <MTIfNonEmpty tag="EntryMore">
         <p class="entry-more"><a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle encode_html="1"$>"</a></p>
      </MTIfNonEmpty>
 
      <MTEntryIfTagged>
         <$MTInclude module="タグ"$>
      </MTEntryIfTagged>
 
   </div>
   <$MTInclude module="ブログ記事のメタデータ"$>
</div>

3.タイトルと本文の間に表示する

表示位置のイメージ

タイトルと本文の間に表示するイメージ

ブログ管理画面より「テンプレート」→「デザイン」→「テンプレートモジュール」→「ブログ記事の概要」を開き、青色のタグを追加します。[Google Adsenseのコード] の部分にご自身の Google Adsense のコードを貼り付けてください。

<MTDateHeader>
<p class="date"><$MTEntryDate format="%x"$></p>
</MTDateHeader>
 
<div class="entry">
 
   <h2 id="a<$MTEntryID pad="1"$>" class="entry-header"><a href="<$MTEntryPermalink$>"><$MTEntryTitle encode_html="1"$></a></h2>
   <div class="entry-content clearfix">
      <mt:if name="main_template">
      <MTEntriesHeader>
         <div class="adsense">
         [Google Adsenseのコード]
         </div>
      </MTEntriesHeader>
      </mt:if>
      <MTIfNonEmpty tag="EntryBody">
         <$MTEntryBody$>
      </MTIfNonEmpty>
      <MTIfNonEmpty tag="EntryMore">
         <p class="entry-more"><a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle encode_html="1"$>"</a></p>
      </MTIfNonEmpty>
 
      <MTEntryIfTagged>
         <$MTInclude module="タグ"$>
      </MTEntryIfTagged>
 
   </div>
   <$MTInclude module="ブログ記事のメタデータ"$>
</div>

4.仕組み

このカスタマイズでは MTIf タグと MTEntriesHeader タグを用いて制御しています。

MTIf タグでは、メインページテンプレートでのみブロック内を実行する制御を行っています。

MTEntriesHeader タグは、MTEntries ブロックタグ内で使用するためのブロックタグ(コンディショナルタグ)で、ブログ記事をリスト表示する初回のみ、このタグでコンテナされた内容を実行すブロックタグです。

5.他のアーカイブでも表示する

ブログ記事の概要は月別アーカイブやカテゴリアーカイブでも使われるのですが、前項の説明の通り、トップページ以外では表示されないように制御しています。

Google Adsense を月別アーカイブやカテゴリアーカイブでも表示したい場合は、

<mt:if name="main_template">
<MTEntriesHeader>
   <div class="adsense">
   [Google Adsenseのコード]
   </div>
</MTEntriesHeader>
</mt:if>

の MTIf タグを削除して、

<MTEntriesHeader>
   <div class="adsense">
   [Google Adsenseのコード]
   </div>
</MTEntriesHeader>

に変更してください。

6.CSS

時間の都合上、表示位置の微調整まで書ききれていないため、各自で行ってください。微調整する際は、スタイルシートに下記のセレクタを追加して、点線の部分に任意のプロパティを記述してください。

div.adsense {
  :
}
Comments [4] | Trackbacks [0]
2007年10月31日

Sitemaps 0.90 用テンプレート(MT4対応)

October 31,2007 1:15 AM
Tag:[, , ]
Permalink

Sitemaps 0.90 用テンプレート(Google・Yahoo!・MSN サポート予定)」で公開していた Sitemaps 0.90 用テンプレートについて、ご要望を頂きましたので Movable Type 4 対応に修正しました。

Sitemaps 0.90 に対応した情報を公開することで、Google、Yahoo、Microsoft の各検索エンジンにサイト情報を適切に通知できるようになります(検索エンジンのインデックスにウェブページのすべてを含むことを保証するものではありません。クロールを補完するための仕組みです)。

1.テンプレートの変更点

変更点は下記の通りです。

  • ウェブページに対応
  • 全ての種類のアーカイブテンプレートに対応
  • ブログ記事アーカイブの全件出力にMTSetVarBlockタグを使用
  • アーカイブインデックス用のMTLinkタグのtemplate属性名を修正

以下、Sitemaps 0.90 用テンプレートの設定方法です。

2.テンプレート作成

ブログ管理画面より「デザイン」→「テンプレート」→「インデックステンプレートを作成」をクリック

  • テンプレート名:サイトマップ(名前は何でもいいです)
  • テンプレートの種類:カスタムインデックステンプレート
  • 出力ファイル名:sitemaps.xml
  • 再構築オプション:チェックする
  • ファイルへのリンク:(設定不要)
  • テンプレートの内容:下記 の内容をコピー&ペースト
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 
<MTIgnore>メインページ</MTIgnore>
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<changefreq>daily</changefreq>
</url>
 
<MTIgnore>ブログ記事アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Individual"> 
<MTSetVarBlock name="blogentrycount"><$MTBlogEntryCount$></MTSetVarBlock>
<MTEntries lastn="$blogentrycount">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<priority>1.0</priority>
</url>
</MTEntries>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ウェブページ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Page"> 
<MTPages>
<url>
<loc><$MTPagePermalink encode_xml="1"$></loc>
<lastmod><$MTPageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<priority>1.0</priority>
</url>
</MTPages>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリー・アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category"> 
<MTCategories>
<url>
<loc><$MTCategoryArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTCategories>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author"> 
<MTArchiveList archive_type="Author">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>年別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Yearly"> 
<MTArchiveList archive_type="Yearly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Monthly"> 
<MTArchiveList archive_type="Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Weekly"> 
<MTArchiveList archive_type="Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Daily"> 
<MTArchiveList archive_type="Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー年別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Yearly"> 
<MTArchiveList archive_type="Author-Yearly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Monthly"> 
<MTArchiveList archive_type="Author-Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Weekly"> 
<MTArchiveList archive_type="Author-Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Daily"> 
<MTArchiveList archive_type="Author-Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ年別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Yearly"> 
<MTArchiveList archive_type="Category-Yearly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Monthly"> 
<MTArchiveList archive_type="Category-Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Weekly"> 
<MTArchiveList archive_type="Category-Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Daily"> 
<MTArchiveList archive_type="Category-Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>アーカイブインデックス</MTIgnore>
<url>
<loc><$MTLink template="アーカイブインデックス" encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</url>
 
</urlset>

上記を設定後、保存・再構築します。

これでメインページと同じディレクトリに sitemaps.xml が生成されていればOKです。確認方法は、ブラウザから sitemaps.xml をURL指定して実行してみるか、FTPツールでメインページと同じディレクトリに sitemaps.xml があることを探してください。

3.その他

他のサイトでもサイトマップ用テンプレートは数多く公開されていますが、当サイトでは下記の点を改善しています。

3.1 アーカイブの選択

各アーカイブ(カテゴリー/エントリー/月別/週別/日別等)の表示は、MTIfArchiveTypeEnabled を用いているので、使用中のアーカイブのみを自動的に対象に含めます。
つまりデフォルトテンプレートの運用であれば、サイトマップテンプレートの修正は不要です。

3.2 ファイルの最終更新日

各アーカイブページの更新日時は、下記の設定により、更新順に並べ替えた最新の1件を用いるようにしています。これにより過去のエントリーを修正した場合も、その時刻が反映されます。

Google の説明では、静的ファイルは「ファイルを実際に更新した日付」とありますが、Movable Type の静的ファイル生成、つまり再構築はアーカイブ別に行われるため、MTEntryModifiedDate が適正と思われます(間違ってたらすいません)。これにより、更新されていない URL はクロールしなくなるらしいので、サーバー負荷や CPU 使用量を軽減できます。

<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>

下の設定では、該当するアーカイブに属する最新エントリーの更新時刻しか収集されません。つまり、過去のエントリーを修正した時刻が反映されないという欠点があります。

<MTEntries lastn="1">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>

ただし、インデックステンプレート(メインページ/アーカイブページ)については正確な更新日を取得する手段がないため、MTDate(再構築日時)を利用しています。

3.3 タイムゾーン

タイムゾーンに MTBlogTimeZone を用いています。現地時刻表記の場合は MTBlogTimeZone を用いてタイムゾーン・オフセットを付与するのが適切と思われます。

<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>

utc 属性を用いれば協定世界時になるので、MTBlogTimezone の代わりに下記の設定でも大丈夫なようです。

<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>

W3C Datetime によれば、青色部分の「Z」は時刻をUTC (協定世界時) で表記した場合に付与する特別な指定子です。

なお、utc 属性は MTDate / MTEntryDate / MTEntryModifiedDate / MTEntryCreateDate / MTTemplateCreatedOn タグで利用することができます(MT4 公式マニュアルには掲載されていません)。

3.4 優先度

インデクシングして欲しい(と思われる)エントリー・アーカイブに priority を設定し、相対値を少し高くしています。

4.注意事項

Sitemap ファイル(sitemaps.xml)は UTF-8 で保存する必要があります。ブログの文字コードが UTF-8 以外の場合は下記のプラグインを用いて、Sitemaps の文字コードを UTF-8 で出力しましょう。

Ogawa::memorandaMT-I18Nプラグイン

MT-I18Nプラグインをインストールした後、Sitemaps のテンプレート全体を MTEncodeText タグで括ります。

<MTEncodeText from="[ブログの文字コード]" to="utf8">
    :
[Sitemap の内容]
    :
</MTEncodeText>
Comments [13] | Trackbacks [6]
2007年3月 4日

Movable Type でブログを複数作成する

March 4,2007 1:50 AM
Tag:[]
Permalink

あまり話題に上がりませんが、サーバにインストールしたひとつの Movable Type から複数のブログを作成することができます。このエントリーではその方法、および関連情報についてご紹介します。

1.利用シーン

これにより、ブログを複数運用するケースはもちろんのこと、

  • カスタマイズした結果を誰にも知られないように確認したい
  • デフォルトテンプレートはどうなっていたか *1

等、ブログを複数作成できるのはなにかと便利です。

2.最大ブログ作成数について

ダウンロードした Movable Type からブログをいくつまで作成できるか?ということですが、個人ライセンス(無償)の場合、ダウンロードページの「利用許諾契約書」の最後に、「ブログ数: 無制限」と記載されています(3.2x の時はたしか3つまで)。

その他の利用条件については「利用許諾契約書」をご確認ください。

3.複数ブログ作成方法

mt.cgi を起動し、管理画面にログイン

ログイン画面

ページ右側にあるシステムメニューの「ブログ」をクリック。

システム・メニュー画面

ページ右上にある「ブログを新規作成」をクリック。

システム全体: ブログ画面

次ページで

  • サイト名
  • サイトURL
  • サイト・パス

を設定して、下にある「変更を保存」をクリック。

ブログの新規作成画面

これら3つの情報は後で変更することができますが、最低「サイト名」は何か文字を入力する必要があります(入力しない状態で「変更を保存」をクリックするとエラーのダイアログが表示されます)。

また、複数ブログを作成する目的がデフォルトテンプレートの参照だけであれば、URLとパスの設定はそのままにして「変更を保存」をクリックしてください(この後再構築は行わないよう、十分気をつけてください)。

これで新しいブログが作成されました。後の操作は一番最初のブログと同じです。

4.ブログの切り替え

管理画面の「システム・メニュー > ブログ」のページで切り替えられますが、スクリーンショットのように、管理画面上部にあるショートカットを利用するのが便利です。

ブログ切り替え

5.新たに作成したブログのディレクトリ

再構築を実行すれば「サイトパス」に設定したディレクトリ、つまり新しく作成したブログのディレクトリが自動的に生成されます。以前のバージョンではディレクトリを予め作成しておかないと再構築できない仕様になっていましたが、この点は変更されたようです。
したがって、サイトパスの設定には充分ご注意ください

6.ディレクトリに生成されるファイル

エントリーを投稿していない状態ですべてを再構築した場合、新しく作成したディレクトリには下記のファイルが生成されます。

archives.html
atom.xml
index.html
index.xml
mt-site.js
mtview.php
nav-commenters.gif
rsd.xml
styles-site.css

つまり mt-static やデータベース、インストールディレクトリには一番最初にインストールした設定が継承されます。

7.エントリーIDについて

またエントリーIDは複数ブログで一意となります。例えば、ブログAでエントリーを投稿するとそのエントリーIDは「1」となり、次にブログBでエントリーを投稿するとそのエントリーIDは「2」、さらにブログAでエントリーを投稿するとそのエントリーIDは「3」となります。

試していませんが、他のID(コメントIDやトラックバックID等)も同様と思われます。


*1:初期化をすればデフォルトテンプレートに戻せますが、運用中にそういう操作をしたくない場合を想定しています。

Comments [2] | Trackbacks [1]
2006年12月 6日

Sitemaps 0.90 用テンプレート(Google・Yahoo!・MSN サポート)

December 6,2006 1:35 AM
Tag:[, , ]
Permalink

少し前の話ですが、Google sitemaps 0.84 として Google がサポートしていた Sitemaps が、0.90 より Yahoo! MSN のサポートが表明されました。

注:本記事は Movable Type 3.x の内容です。Movable Type 4 対応の Sitemaps 0.90 用テンプレートについては「Sitemaps 0.90 用テンプレート(MT4対応)」をご覧ください。

ということで、以前作成して放置状態だった 0.84 用のサイトマップ用テンプレートを 0.90 対応に作り直してみました。

1.テンプレート設定方法

管理画面の[テンプレート]-[インデックス]タブ(デフォルトはこのタブになっています)-[テンプレートを新規作成]をクリック

  • テンプレート名:サイトマップ(名前は何でもいいです)
  • 出力ファイル名:sitemap.xml
  • このテンプレートにリンクするファイル:(設定不要)
  • インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する:チェックする
  • テンプレートの内容:リスト1 の内容をコピー&ペースト
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 
<MTIgnore>メインページ</MTIgnore>
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<changefreq>daily</changefreq>
</url>
 
<MTIgnore>エントリー・アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Individual"> 
<MTEntries offset="0">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<priority>1.0</priority>
</url>
</MTEntries>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリー・アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category"> 
<MTCategories>
<url>
<loc><$MTCategoryArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTCategories>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Monthly"> 
<MTArchiveList archive_type="Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Weekly"> 
<MTArchiveList archive_type="Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Daily"> 
<MTArchiveList archive_type="Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>アーカイブページ</MTIgnore>
<url>
<loc><$MTLink template="アーカイブページ" encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</url>
 
</urlset>
リスト1 Sitemaps テンプレート

上記を設定後、保存・再構築します。

これでメインページと同じディレクトリに sitemaps.xml が生成されていればOKです。確認方法は、ブラウザから sitemaps.xml をURL指定して実行してみるか、FTPツールでメインページと同じディレクトリに sitemaps.xml があることを探してください。

2.テンプレートの改善点

他のサイトでもサイトマップ用テンプレートは数多く公開されていますが、当サイトでは下記の点を改善しています。

2.1 エントリー数設定

エントリー・アーカイブでの全エントリー数取得は offset 属性を用いています(適正な利用方法ではないかもしれませんが)。これにより、lastn="9999" という設定を不要にしています。

2.2 アーカイブの選択

各アーカイブ(カテゴリー/エントリー/月別/週別/日別)の表示は MTIfArchiveTypeEnabled を用いているので、使用中のアーカイブのみを自動的に対象に含めます。
つまりデフォルトテンプレートの運用であれば、サイトマップテンプレートの修正は不要です。

2.3 ファイルの最終更新日

カテゴリー・アーカイブ/月別アーカイブ/週別アーカイブ/日別アーカイブの更新日時は、下記の設定により、更新順に並べ替えた最新の1件を用いるようにしています。これにより過去のエントリーを修正した場合も、その時刻が反映されます。

Google の説明では、静的ファイルは「ファイルを実際に更新した日付」とありますが、Movable Type の静的ファイル生成、つまり再構築はアーカイブ別に行われるため、MTEntryModifiedDate が適正と思われます(間違ってたらすいません)。これにより、更新されていない URL はクロールしなくなるらしいので、サーバー負荷や CPU 使用量を軽減できます。

<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
リスト2 改善点2 - 適正な最終更新日取得

下の設定では、該当するアーカイブに属する最新エントリーの更新時刻しか収集されません。つまり、過去のエントリーを修正した時刻が反映されないという欠点があります。

<MTEntries lastn="1">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
リスト3 modified_on 属性を用いない場合のMTタグ

ただし、インデックステンプレート(メインページ/アーカイブページ)については正確な更新日を取得する手段がないため、MTDate(再構築日時)を利用しています。

2.4 タイムゾーン

タイムゾーンに MTBlogTimeZone を用いています。現地時刻表記の場合は MTBlogTimeZone を用いてタイムゾーン・オフセットを付与するのが適切と思われます。

<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
リスト4 改善点3 - タイムゾーンの設定1

utc 属性を用いれば協定世界時になるので、MTBlogTimezone の代わりに下記の設定でも大丈夫なようです。

<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
リスト5 改善点3 - タイムゾーンの設定2

W3C Datetime によれば、青色部分の「Z」は時刻をUTC (協定世界時) で表記した場合に付与する特別な指定子です。

なお、utc 属性は MTEntryModifiedDate / MTDate タグで適用することができます(3.3 公式マニュアルには掲載されていません)。

2.5 優先度

インデクシングして欲しい(と思われる)エントリー・アーカイブに priority を設定し、相対値を少し高くしています。

3.注意事項

Sitemap ファイル(sitemaps.xml)は UTF-8 で保存する必要があります。ブログの文字コードが UTF-8 以外の場合は下記のプラグインを用いて、Sitemaps の文字コードを UTF-8 で出力しましょう。

Ogawa::memorandaMT-I18Nプラグイン

MT-I18Nプラグインをインストールした後、Sitemaps のテンプレート全体を MTEncodeText タグで括ります(リスト1)。

<MTEncodeText from="[ブログの文字コード]" to="utf8">
    :
[Sitemap の内容]
    :
</MTEncodeText>
リスト6 MT-I18Nプラグインによる文字コード変換
Comments [0] | Trackbacks [7]
2006年6月29日

Movable Type 3.3 エントリー・タグ詳説

June 29,2006 9:38 AM
Tag:[, ]
Permalink

Movable Type 3.3 から追加されたタグ機能の利用方法が下記のページに掲載されています。

Movable Type Beta WeblogEverybody loves tags!

以下、元記事で紹介されているタグの機能や利用方法について超意訳で紹介します。

1.タグとは?

タグは、項目の特定の一部分を説明するための簡単な単語、あるいは語句です。例えば、私は(私自身に)

human, male, guy, sailor, product manager, san franciscan, shaved head, tall, joke-cracking, six apartisan, stressed-out, geek

というタグ付けをするかもしれません。それらのタグの全てが、私が誰であるかに関して、より良い情報を与えてくれます。

Movable Type ではエントリーにタグを与える機能を提供します。例えば、あなたはこの記事に関するエントリーを書き、エントリーに、

movable type 3.3, movable type, new release, beta, feature, tagging, entry tags

というタグを付与することができます。
そして後でこのエントリー(や他のエントリー)を見つけるのに使用することができる、特別なメタデータ(MTタグ)を提供します。

Movable Type 3.3 では「自動同義語」をサポートしています。例えば "Movable Type" は "movabletype" と同等であるとみなします。特定のタグを共有するエントリーは、自動的に関連づけられます。これで Movable Typeインタフェース、またはあなたの公開ブログから関連する内容を見つけることが簡単になります。

タグのデフォルト区切り文字はカンマですが、

メイン・メニュー > システム・メニュー > 投稿者 > [投稿者名]

の「タグ区切り」でスペース文字に変更することもできます。
エントリー編集画面のタグ・フィールドでは、使用済みのタグを利用した自動補完機能があります。

2.キーワードとの違い

キーワードはエントリーに括りつけられた、MTEntryKeywords によって出力される文字列で、検索することも可能ですが、エントリー・タグは強力かつ洗練されたタグのセットで、「タグサーチ」という機能で特定のタグが与えられたエントリーを検索します。
将来は XML-RPC API でエントリー・タグがサポートされる予定です。

3.カテゴリーとの違い

タグは関連するエントリーを分類・組織化し、検索を助けるという点においてはカテゴリーと同様ですが、下記の点に相違があります。

Model:
カテゴリは目次のようにトップダウン的な設定ですが、タグは本のインデックスのようにボトムアップで設定されます。
Specificity:
カテゴリは汎用的で、エントリーを副カテゴリに分配することで特性を獲得する場合に適しています。タグは限定的で、タグの組み合わせで(エントリーの)特性を獲得する場合に適しています。
Planning:
カテゴリは少ない数で計画性があり、時間の経過によって一貫性のあるものとなります。タグは計画性がなく、各項目の細部に基づいたものになります。
Archiving vs searching:
カテゴリーは「アーカイブ」として異なるページに各カテゴリーに関連するエントリーを静的に格納します。タグも1ページに特定のタグによるエントリーを表示しますが、それらのページはダイナミック(再構築不要)に表示されます。

4.エントリー・タグの追加と削除

タグを利用するには、エントリー編集画面の下にある「画面の表示設定を変更」をクリックして、ダイアログの「エディター・フィールド」欄の左側にあるラジオボタンが「基本」になっているので「すべて」または「カスタム」を選択します。
「すべて」を選んだ場合はそのまま右下の「保存」をクリックします。「カスタム」を選んだ場合は、「タグ」というチェックボックスにチェックをしてください。
追記:左下にある「アクション・バー」で「両方」を選択しておくと「保存」「確認」ボタンがエントリー上部にも表示されて便利です。

エントリー・タグフィールドについて

エントリー・タグフィールドにタグを設定します。タグを複数記述する場合はカンマで区切ってください。タグはカンマ以外のどのような文字列も許容しますが、

@ ! ` \ < > * & # / ~ ? ' " . , = ( ) $ { } [ ] ; : <space> + -

以外の文字列を入力することで正常に動作します。入力した英文字は最終的に小文字として扱われます。

例外的な利用方法として、タグに "@" を付加することでタグは「プライベート・モード」として機能します。プライベート・モードのタグはブログ上で表示されることはありませんが、検索インタフェースや管理インタフェースで使用することができます。

エントリー・タグの自動補完

エントリー・タグを入力フィールドにタイプした時、使用済みのエントリー・タグと一致する文字列で始まるのであれば、それらが候補としてドロップダウンリストで表示されます。リストを直接クリックするか上下キーで選択した後 Tab キーを押すと、エントリー・タグの入力が補完されます。

5.エントリー・タグの管理

エントリー・タグはブログ全体およびブログ単位のどちらでも管理可能です。それぞれの管理画面のサイドバーにある「タグ」をクリックすると管理画面に遷移します。

削除

削除したいタグの左側にあるチェックボックスをチェックして、削除ボタンをクリックします。

タグ名の変更

タグ名のリンクをクリックするとテキストボックスに切り替わるので、任意の名称を入力して「名前の変更」をクリックします。

タグのマージ

前記の「タグ名の変更」で、すでに存在するタグ名を設定すると「マージ(合体)しますか?」という旨のダイアログが表示されます。「OK」をクリックするとマージされます。

6.エントリー・タグの表示

Movable Type 3.3 ではエントリー・タグ表示のために、次のMTタグを提供します。

  • MTTags
  • MTTagName
  • MTTagID
  • MTTagCount
  • MTTagRank
  • MTTagSearchLink
  • MTEntryTags
  • MTEntryIfTagged

以下、テンプレートに対するエントリー・タグの設定方法です。関連タグを青色で示しています。

エントリーにタグを表示

<MTEntries>
    The entry "<$MTEntryTitle$>" is tagged:
        <MTEntryTags glue=", "><$MTTagName$></MTEntryTags>
</MTEntries>

エントリーにタグを表示(タグの有無判定あり)

<MTEntries>
    The entry "<$MTEntryTitle$>"
        <MTEntryIfTagged>
            is tagged: <MTEntryTags glue=", "><$MTTagName$></MTEntryTags>
        <MTElse>
            has no entry tags.
        </MTElse>
        </MTEntryIfTagged>
</MTEntries>

タグ検索用リンクを表示

<MTEntryTags glue=", ">
    <a href="<$MTTagSearchLink$>"><$MTTagName$></a></MTEntryTags>

tag 属性で指定したタグの有無で表示を制御

<MTEntries>
    [...MTEntry data...]
    <MTEntryIfTagged tag="important">
        <p><img src="/movabletype/docs/3.2/images/gold_star.gif"
            alt="This is important!" /></p>
    </MTEntryIfTagged>
</MTEntries>

ブログで使用されるすべてのタグを表示

<ul>
    <MTTags>
    <li>
        <a href="<$MTTagSearchLink$>"><$MTTagName$></a>
    </li>
    </MTTags>
</ul>

ブログで使用されるすべてのタグを表示(タグカウントつき)

<ul>
    <MTTags>
    <li>
        <a href="<$MTTagSearchLink$>"><$MTTagName$> (<$MTTagCount$>)</a>
    </li>
    </MTTags>
</ul>

タグクラウド(タグを雲のように表示)

<div class="module-tagcloud module">
    <h2 class="module-header">Tag cloud</h2>
    <div class="module-content">
        <ul class="module-list">
            <MTTags>
                <li class="module-list-item taglevel<$MTTagRank$>">
                    <a href="<$MTTagSearchLink$>"><$MTTagName$></a>
                </li>
            </MTTags>
        </ul>
    </div>
</div>
タグクラウドは下記のCSSが必要です。
.module-tagcloud .module-content {text-align: center; }
.module-tagcloud .module-content .module-list { list-style: none; }
.module-tagcloud .module-content .module-list .module-list-item { display: inline; }
.module-tagcloud .module-content .module-list li.taglevel1 { font-size: 19px; }
.module-tagcloud .module-content .module-list li.taglevel2 { font-size: 17px; }
.module-tagcloud .module-content .module-list li.taglevel3 { font-size: 15px; }
.module-tagcloud .module-content .module-list li.taglevel4 { font-size: 13px; }
.module-tagcloud .module-content .module-list li.taglevel5 { font-size: 11px; }
.module-tagcloud .module-content .module-list li.taglevel6 { font-size: 9px; }

特定のタグが与えられたエントリーのみ表示

<MTEntries tag="TAGNAME">
    [...]
</MTEntries>

特定のタグが与えられたエントリー最新1件をトップに表示

<!-- The "banner" entry -->
<MTEntries tag="Important" lastn="1">
    [...]
</MTEntries>
 
<!-- All other recent entries -->    
<MTEntries>
    [...]
</MTEntries>

注目して欲しいエントリー("notable" というタグを付与)をサイドバーに表示

<div class="module-archives module">
    <h2 class="module-header">Notable entries</h2>
    <div class="module-content">
        <ul class="module-list">
            <MTEntries lastn="5" tag="notable">
                <li class="module-list-item">
                    <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
                </li>
            </MTEntries>
        </ul>
    </div>
</div>

tag 属性にNOTオペレータが付与されたタグを用いてエントリーの公開を抑止する

<MTEntries tag="NOT noindex">
    [...]
</MTEntries>

アーカイブページでのタグクラウドのインクルード

再構築時のパフォーマンスの問題を回避するため、タグクラウドをアーカイブページに含める場合は、PHPによるモジュール化またはSSIを用いてください。

Comments [33] | Trackbacks [13]
2006年3月28日

メール送信ページを作る

March 28,2006 1:01 AM
Tag:[, , ]
Permalink

メール送信ページメールによるご連絡を頂けるよう、プロフィールのページにメールアドレスを掲載していたのですが、メールアドレスを非掲載にしたかったことと、メールがブログから送信されたものであることが分かるようにマークをつけたかった(方法については後述)ので、送信フォームに変更しました。
今回利用させていただいたのは下記のプラグインです。ありがとうございました。

The blog of H.Fujimotoメールフォーム作成用プラグイン

配布元で設定方法が解説されてますが、こちらでも簡単な設定方法を記しておきます。なお技術的な質問につきましては配布元にお問い合わせ頂ければ幸いです。

1.プラグインのダウンロード

メールフォーム作成用プラグイン(その1)の mt-mail-form.zip のリンクをクリックして、アーカイブをダウンロードします。

2.プラグインのアップロード

アーカイブを解凍すると MailForm というディレクトリがありますので、それをそのまま plugins フォルダに丸ごとアップロードします。
アップロードした MailForm フォルダの中に mt-mail-form.cgi がありますので、属性を 755 等に変更します。

3.メールアドレス設定

プラグインの「設定を表示」をクリックするとメールアドレス入力欄が表示されますので送信先のメールアドレスを設定します。

4.テンプレートの設定

設定するのは下記の4テンプレートです。後ろにあるリンクがそれぞれの解説ページで、各設定方法とタグ例が掲載されています。

また下記に当サイトの公開テンプレート用にあわせたテンプレートも用意くださっています。ありがとうございました。

メールフォームのサンプルテンプレート

5.タイトルに情報を付与する

指定のメールアドレスにはスパムメールが大量にくるため、送信メールのタイトル先頭に [小粋空間] という文字がつくようにして見分けられるようにしました。MailForm/lib/MailForm.pm を任意のエディタで開いて下記の部分に追加しています。

  :
else {
    $head{From} = $email;
}
$head{Subject} = "[小粋空間] " . $subject;
 
eval {
    MT::Mail->send(\%head, $body) or die("Mail Error");
};
  :
Comments [12] | Trackbacks [5]
2006年1月18日

404 エラーページを作る

January 18,2006 11:55 PM
Tag:[, , ]
Permalink

404エラーのページスクリーンショットのように、指定したURLが存在しない場合等にしばしば表示されるエラーページですが、「ErrorDocument ディレクティブ」というものを利用することでオリジナルのエラーページを表示することができるようになります。

エラーページに関するご質問を頂きましたので、本エントリーにて設定方法をご紹介致します。とりあえず確認の意味も含めて当サイトもエラーページを作ってみました。

1.エラー表示用のHTMLファイルを作る

任意のエディタで、「404.html」のファイル名でHTMLファイルを作成し、index.html が置かれているディレクトリへアップロードします。

Movable Type の場合
プロフィールのページを作るを利用して作るとブログと同じようなデザインのファイルを簡単に作れます。ダイナミックパブリッシングをご利用であれば、システムテンプレートの「ダイナミックページ・エラー」が該当しますので、これを編集すれば以下の項目は全て不要です。
WordPress の場合
ご利用のテーマに「404 Not Found(404.php)」が含まれていれば、それをテーマエディタで編集するだけで、下記の設定は全て不要です。含まれていない場合は、index.php を 404.php というファイル名でコピーし、あとはテーマエディタでお好きな内容に変更しましょう。

設定後、ブラウザからこのファイルのURLを入力し、正常に表示されることを確認しましょう。

2..htaccess を作る

.htaccess は特殊なファイルで、指定したURLが存在しない場合にエラーページへジャンプさせるための設定を行います。

まず任意のエディタで下記の内容をコピーしてください。そしてこれを「.htaccess」という名前で保存します。Windows の場合、エクスプローラ上でこの特殊な名前に変更することはできませんので、ご注意ください。
また自宅サーバの方は .htaccess ではなく httpd.conf を開いて下記の設定を追加します(追加後、Apache の再起動をお忘れなく)。

ErrorDocument 404 /404.html

ErrorDocument ディレクティブの説明は下記にあります。

Apache HTTP サーバErrorDocument ディレクティブ

行末の /404.html は相対パス(この書き方)または http 指定が可能です。/404.html としているのは .htaccess と同じディレクトリに配置するのでこのような設定にしています。エラー用ファイルを他のディレクトリに配置する場合は、ディレクトリ名をファイルの前に追加します。
なお初めて .htaccess を作る場合はこの1行しかありませんので、行末で必ず改行を入力してください。

3..htaccess をアップロードする

作成した .htaccess を index.html が置かれているディレクトリへアップロードします。
パーミッションによって正常に動作しない場合があるようです。現在利用しているさくらインターネットでは「644」でOKでした。ロリポップは「604」のようです。

アップロードと同時にこの機能が動作しますので、存在しないURLをブラウザで指定して1項で作成したファイルが表示されることを確認してください。また index.html 等の存在するファイルも正常に表示されることを確認してください。
正常に動作しない場合は一旦ファイルを削除しましょう。

4.注意事項

サイト検索でみつけた内容を引用しておきます。
ロリポップ!レンタルサーバー - エラーページの変更では「エラーページで画像を使用する場合には、「 http://から始まるURL 」 で表示を行ってください」と書かれていました。これは「ErrorDocumentは、エラー発生時のページを基点にエラーページ表示を行なう」ためのようです。JavaScript や CSS を参照する場合も同様です。
また「404エラーページに限り?(中略)?ページの容量が1Kバイトを超えるように、ファイルを作ってください」ということです。 このことは先のErrorDocument ディレクティブにも「一般的にはエラーの文書を 512 バイトよりも多きくすると、MSIE は サーバが生成したエラーを隠さずに表示します」とあります。

5.その他のエラーも追加する

上記は404(指定したURLが存在しない)の場合のみの説明でしたが、401(認証エラー)/403(パーミッション異常)/500(CGIエラー等)のエラーも下記のような設定を追加することで表示することができます(当サイトでは404のみ)。

ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 500 /500.html

この場合も行末では必ず改行を入力してください。

2007.02.25 追記
Movable Type ダイナミックパブリッシング・WordPress についての記述を追加しました。

Comments [6] | Trackbacks [3]
2005年12月22日

著作権表示の西暦をリアルタイム化する

Movable Type の著作権表示は、BlogCopyright Plugin を使ったカスタマイズが有名です。このプラグインは登録されている最初のエントリーと最後のエントリーから著作権の西暦を自動生成しますが、再構築した時点の年しか取得できません。つまり年をまたがった場合、再構築が行われるまでは更新されないことになります。

ということで、プラグインを少し修正して、リアルタイムカレンダーのように、リロードを契機に年表示を切り替える方法をご紹介します。日々更新されている方にとっては1年に数分?数時間しか有効にならないという甚だコストパフォーマンスの低い技ですが、年始末にブログを更新できない場合はお勧めです。ある意味、更新頻度が低い方ほど効果大です。

1.著作権表示の意味

カスタマイズの前に、一般的によくみかける

Copyright © 2004 hogehoge All rights reserved. 

を例に、著作権表記の意味を記しておきます。

「Copyright」は著作権があることを意味します。© は「マルシーマーク(英語読みは「サークルシー」)」と読み、同じく著作権があることを意味します。この2つは意味が重複していますが、著作権の扱いが国によって異なるため、より多くの国において保護を受けられるようにという習慣からきているようです。西暦は著作物を公開した最初の年です(ハイフンで現在の年を表示しているのもよくみかけます)。hogehoge は著作権者で、最後の「All rights reserved.」は著作権以外の権利についても保持していることを示すものです。

次に、プラグインの設定方法です。

2.アーカイブのダウンロード

BlogCopyright Pluginより Download BlogCopyright のリンクをクリックしてアーカイブをダウンロードします。

3.プラグインのアップロード

アーカイブを解凍して、中にある BlogCopyright.pl を plugins ディレクトリにアップロードします。アップロード後、メインメニューの「プラグイン」をクリックして、「BlogCopyright.pl」が表示されていればOKです。

4.著作権表示用タグの設定

著作権表示を行いたいテンプレートの編集画面を開き、任意の場所に

<$MTBlogCopyright$>

を記述します。このタグが

Copyright c2004-2005

のような表示に置き換わります。

著作権者を表示する場合、つまり

Copyright c2004-2005 hogehoge

の青色部分を表示するには

<$MTBlogCopyright$> hogehoge

と直接記述する方法もありますが、メインメニューの「プロフィール」→「表示名」に設定していれば、その文字が表示されます。

または

<$MTBlogCopyright owner="hogehoge"$>

と owner 属性を与えます。owner_name に設定した文字が著作権者として表示されます。

「All rights reserved.」はタグまたは著作権者の後ろに直接記述してください。

5.リアルタイム化

4項まででプラグインの通常の動作が行えます。以下はリアルタイムのカスタマイズです。

5.1 プラグインの修正

BlogCopyright.pl を任意のエディタで開き、下記の赤色部分を削除して青色のものに置き換えます。

         :
# Add the years the blog has been up
if($first_year eq $last_year) {
$copyright .=  $first_year . ' ';
$copyright .=  ' <span id="fixyear">' . $first_year . '</span> ';
} else {
$copyright .= $first_year . '-' . $last_year . ' ';
$copyright .= ' <span id="fixyear1">' . $first_year . '</span>-<span id="fixyear2">' .$last_year . '</span> ';
}
         :

5.2 スクリプトの追加

著作権表示用タグを設定しているテンプレートの最後の方(<$MTBlogCopyright$> の後方であればOK)に下記のスクリプトを追加します。

<script type="text/javascript">
<!--
var data = new Date();
var year = data.getYear();
year = (year < 2000) ? year + 1900 : year;
var oldYear;
if(document.getElementById('fixyear')){
    oldYear = document.getElementById('fixyear').innerHTML;
    if(parseInt(oldYear) < parseInt(year)){
        document.getElementById('fixyear').innerHTML = oldYear + "-" + year;
    }
} else if(document.getElementById('fixyear2')) {
    oldYear = document.getElementById('fixyear2').innerHTML;
    if(parseInt(oldYear) < parseInt(year)){
        document.getElementById('fixyear2').innerHTML = year;
    }
}
//-->
</script>

リアルタイム化の仕組みは、5.1項で修正したプラグインで西暦部分に span 要素(id 属性が "fixyear")を付与しています。そして5.2項のスクリプトでその西暦を取得し、サーバから取得した西暦と比較して、サーバの西暦の方が新しければ置き換えるようにしています。またブログに登録されているエントリーが同一年のものしかなく、サーバの西暦が新しい場合は初年と現在年を両方表示します。
JavaScript がOFFの場合は何も処理されません。

6.注意事項

span 要素を他の部分のCSSクラスセレクタとして利用している場合は、表示に影響する可能性があるのでご注意ください。

Comments [14] | Trackbacks [6]
2005年12月11日

プロフィールのページを作る(3.2-ja~3.35-ja用)

「プロフィール」用テンプレートの作成方法です。以前書いたプロフィールのページを作るが3.1xまでしか対応していなかったので、3.2-ja~3.35-ja用に書き直しました。なおここでご紹介するのは公開テンプレート用ですので予めご了承ください(デフォルトテンプレートのものは別途エントリーします)。

同様の手法で「このサイトについて」や「注意事項」のページを色々と作ることができます。プロフィール自体をエントリーとして追加する方法もありますが、ここではインデックステンプレートとして追加し、その中に直接コンテンツを記述する方法を説明します。

1.プロフィール用テンプレートの作成

Movable Type 管理画面左メニューの「テンプレート」をクリックし、右側上に表示されている「テンプレートを新規作成 」をクリックしてください。次に表示された画面で以下の項目を設定します。

  • テンプレートの名前:Profile
  • 出力ファイル名:profile.html(とりあえずこの名称で)
  • 「インデックス・テンプレートを再構築する時に~(中略)~」をチェック
  • このテンプレートにリンクするファイル:何も設定しない
  • テンプレートの中身:下記のリストを丸ごとコピー&ペーストしてください。

リストは3カラム(固定)用の設定になってますので、カラムレイアウトはご自身の設定されているものに合わせて修正してください。

2.テンプレートにコンテンツ記述

タイトルや本文に該当する部分に、プロフィールの内容(コンテンツ)を直接書き込んでください。書き込む場所(=修正する場所)はテンプレートにある下記の青色で示す部分です。

<!-- タイトル開始 -->
<h2 class="date">プロフィール</h2>
<!-- タイトル終了 -->
 
<!-- タイトルの内容1開始 -->
<div class="entry">
 
   <!-- エントリータイトル -->
   <h3 class="entry-header">●名前</h3>
 
   <!-- エントリー -->
   <div class="entry-content">
      <div class="entry-body">
小粋太郎
      </div>
   </div><!-- /entry-content -->
 
</div><!-- /entry -->
<!-- タイトルの内容1終了 -->
 
<!-- タイトルの内容2開始 -->
<div class="entry">
 
   <!-- エントリータイトル -->
   <h3 class="entry-header">●性別</h3>
 
   <!-- エントリー -->
   <div class="entry-content">
      <div class="entry-body">

      </div>
   </div><!-- /entry-content -->
 
</div><!-- /entry -->
<!-- タイトルの内容2終了 -->
 
<!-- タイトルの内容3開始 -->
<div class="entry">
 
   <!-- エントリータイトル -->
   <h3 class="entry-header">●さらに詳しく</h3>
 
   <!-- エントリー -->
   <div class="entry-content">
      <div class="entry-body">
あいうえお
      </div>
   </div><!-- /entry-content -->
 
</div><!-- /entry -->
<!-- タイトルの内容3終了 -->

入力および編集後、テンプレートを保存して再構築し、ブラウザより index.html のURL+出力ファイル名でアクセスして表示を確認してください。

3.サイドバーメニューにプロフィールページのリンク設定

メインページ等のサイドメニューやナビゲーションバーにリンクを追加します。フォーマットは各自のメニューのフォーマットに合わせてください。

<div class="side">
<a href="<$MTLink template="Profile">">プロフィール</a>
</div>

リスト中にある MTLink は、template 属性で指定された Profile(これは1項で設定した「テンプレートの名前」です)に該当するファイルを読み込む機能をもっています。
リンク追加後、保存して再構築します。

4.コンテンツのサブタイトル数について

ここでは3つのサブタイトル(名前・性別・さらに詳しく)を入力できるフォーマットを公開していますが、

<!-- タイトルの内容x開始 -->
<div class="entry">
 
   <!-- エントリータイトル -->
   <h3 class="entry-header">●サブタイトル</h3>
 
   <!-- エントリー -->
   <div class="entry-content">
      <div class="entry-body">
サブタイトルの内容
      </div>
   </div><!-- /entry-content -->
 
</div><!-- /entry -->
<!-- タイトルの内容x終了 -->

がひとつのサブタイトル全体を表示する単位ですので、このタグを丸ごと追加すればサブタイトルをお好きなだけ増やすことができます(減らすこともできます)。

2005.12.21 追記
3項のリンク方法を変更しました。
Comments [56] | Trackbacks [4]
2005年9月 8日

アーカイブページを作る

全エントリーを表示するアーカイブページを追加しました。ナビゲーションバーに「Archives」のリンクを追加しています。

これは Movable Type が用意しているデフォルトの「アーカイブページ」テンプレートのタグを一部変更して使っています。デフォルトの状態では、エントリー表示部分のタグが

<MTArchiveList>
<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a><br />
</MTArchiveList>

となっています。これは全てのエントリーを新着順に並べるだけの状態です。
ということで、ここでは月別のリストに変更し、

<MTArchiveList archive_type="Monthly">
<dl><dt><$MTArchiveTitle$> [<$MTArchiveCount$>]</dt>
<MTEntries><dd><a href="<$MTEntryPermalink valid_html="1"$>"><$MTEntryTitle$></a></dd></MTEntries></dl>
</MTArchiveList>

としています(青色は追加、赤色は変更部分)。1行目を、

<MTArchiveList archive_type="Category">

とすればカテゴリー別のリスト(副カテゴリーを設定していると重複エントリーが発生します)、

<MTArchiveList archive_type="Daily">

とすれば日別のリストになります。archive_type は管理メニューの「ウェブログの設定」の「アーカイブの設定」で「アーカイブの種類」にチェックされている必要があります。

半年ほど前に下記の関連エントリーも書いてますのでご参考まで。

全エントリーリスト・全コメントリスト・全トラックバックリストを表示
Comments [20] | Trackbacks [3]
2005年8月30日

Tag Cloud のページを作る

TagsページTag Cloud(左画像)のページを作るカスタマイズです。

注:3.3 以降はエントリー・タグが標準機能として用意されていますので、本カスタマイズを行わなくても Tag Cloud のページを作ることができます。

当サイトを訪れてくださるカスタマイズ志向の方であれば下記のページ、一度はご覧になったことがあると思います。

Ogawa::Memoranda:Tags

そのページにある説明を引用します。

このページは、そのキーワードをアルファベット順に列挙し、文字の大小でその出現頻度を示したものです。興味があるキーワードがあれば、そのキーワードをクリックしてみてください。そのキーワードが設定されているエントリーの一覧が見られますよ。

「キーワード」とは、エントリーのキーワード欄に設定された文字列(以下タグ)を指しています。ひとつのエントリーに対して複数のタグを設定することもでき、同一のタグが複数のエントリーに設定されているほど「(タグの)出現頻度が高い」とみなされます。

引用文に書かれている通り、Ogawa さんのこのページではタグのリンクをクリックするとタグに関連づけられたエントリーの一覧を表示する仕組みになっており、サイト内の情報分類および閲覧機能として非常に優れたものであると感じています。
仮にそれを差し引いてもこのアートな印象のページに強く惹かれてまして、このサイトでもようやくTagsを設置しました(キーワードがほとんど設定できていませんので正式にリンクさせていません)。

このカスタマイズを行うためには Ogawa::memoranda さんのサイト、都合3つのエントリーを横断する必要がありますが、このエントリーで設定手順をまとめてみました。なお SixApart より「Tags Plugin」というものが少し前にリリースされていますが、こちらはキーワード欄に記述されたタグをカテゴリーとしてひとまとめにしてしまうようです。カテゴリーと独立した分類を行うのであれば Ogawa さんのプラグインをお勧めします。

1.Tagwire Plugin プラグインのダウンロード

下記のページより tagwire.zip をダウンロードします。

Tagwire Plugin

アーカイブを解凍して tagwire.pl を plugin ディレクトリにアップロードしてください。

2.MT-XSearch プラグインのダウンロード

下記のページより mt-plus version 1.01 をダウンロードします(「Download mt-plus」のフォームボタンをクリックします)。ダウンロード前にセレクトボックスで該当のアーカイブ形式(Windows または UNIX/Mac)を選択してください。次のページで「I accept the mt-plus licensing terms.」をチェックして「Continue>>>」をクリックします。

Appnel Internet SolutionsDownload mt-plus

アーカイブを解凍して、下記のファイルをそれぞれ同じ名称のディレクトリにアップロードしてください。mt-xsearch.cgi はCGIPath(mt.cgi があるディレクトリ)にアップロードします。

  • mt-xsearch.cgi
  • plugins/mt-xsearch.pl
  • extlib/MT/XSearch.pm

なおアップロード前に3項を実施してください。

3.パッチの設定

下記のエントリーの2項を参考に、mt-xsearch.cgi と mt-xsearch.pl にパッチ(ソースコードの修正)をあててください。

TagwireとMT-XSearchによる動的タグアーカイブ

「パッチをあてる」の具体的な作業は、上記リスト内の行の一番左に「-」がある行を消して、「+」の行を追加すればOKです(「---」や「+++」の行は関係ありません)。

4.テンプレートモジュールの作成

先ほどのエントリー

TagwireとMT-XSearchによる動的タグアーカイブ

の3項の設定を行います。具体的には管理メニューの「テンプレート」をクリックし、次のページの一番下にある「テンプレート・モジュール」欄の右にある「新しいテンプレート・モジュールを作る」をクリックします。次のページで下記を設定します。

  • テンプレートの名前:XSearch Tagwire
  • このテンプレートにリンクするファイル:空白
  • テンプレートの中身:3項にあるリストを丸ごとコピー&ペースト

設定が終わったら「保存」をクリックします。このテンプレートはタグのリンクをクリックした後に動的に生成され、エントリーの一覧として表示されるページになります。

5.Tags テンプレートの作成

Tags の一覧を表示するページのテンプレートを作ります。
管理メニューの「テンプレート」をクリックし、次のページで「インデックステンプレート」欄の右にある「新しいインデックス・テンプレートを作る」をクリックします。次のページで下記を設定します。

  • テンプレートの名前:Tags(何でもいいです)
  • 出力ファイル名:tags.html
  • このテンプレートにリンクするファイル:空白
  • 再構築オプション:チェックする
  • テンプレートの中身:下記のページにあるリストを丸ごとコピー&ペースト

TagwireでTagCloud

設定が終わったらとりあえず「保存」をクリックしてください(次項で修正を行うので再構築は後で結構です)。

6.テンプレートの修正

前項で設定したテンプレートから4項のテンプレートモジュールを呼び出せるようにするために、テンプレートの一部(アンカー)を下記のように修正します。修正箇所を青色と赤色で示しています。

修正前

<ul id="tags">
<MTTags>
<li title="<$MTTag$>:<$MTTagCount$>:<$MTTagDate format="%Y-%m-%d"$>"><a
 title="Tag: <$MTTag$>" 
 href="<$MTBlogURL$>tag/<$MTTag encode_url="1"$>"><$MTTag$></a></li>
</MTTags>
</ul>

修正後

<ul id="tags">
<MTTags>
<li title="<$MTTag$>:<$MTTagCount$>:<$MTTagDate format="%Y-%m-%d"$>"><a href="<$MTCGIPath$>mt-xsearch.cgi?blog_id=<$MTBlogID$>&search_key=Tagwire&search=<$MTTag encode_url="1"$>"><$MTTag$></a></li>
</MTTags>
</ul>

修正が終わったら「保存」「再構築」を行います。修正部分のソースは下記のページの「使い方」の中にある「タグアーカイブリンク:」のソースの一部を利用しています。
なお本修正を行わずに .htaccess を利用してジャンプする方法もありますので、詳細につきましては

Ogawa::MemorandaTagwireとMT-XSearchによる動的タグアーカイブ

を参照ください。

設定完了後の画面 表示用ページに関する設定は以上です。ここまでの状態で tags.html を表示してみます。画像のようになっていればOKです。

7.エントリー編集画面の変更

エントリーにキーワードを設定できるようにします。デフォルトのエントリー編集画面ではキーワードを入力できないため、編集画面(新規エントリー・任意のエントリーのどちらでもOK)の下にある「この画面の表示をカスタマイズする」をクリックします。表示されたウィンドウで「カスタム」を選択し、表示したい項目をそれぞれチェックします。この時「キーワード」を必ずチェックしてください。設定が終わったら「保存」をクリックします。
余談ですが「ボタンの表示場所」を「ページの上と下」を選択するとフォームボタンが上下に表示されるので結構便利です。

8.「キーワード」の設定

エントリーのキーワード欄にタグを設定して保存します。ここでは「MovableType」と入力してみます(半角空白は含めないでください)。
複数のタグを設定する場合、基本的に空白文字が区切り文字となります。したがって「Movable Type」と入力すると「Movable」と「Type」という2つのタグとして認識されます。ひとつのタグとして認識させたい場合はブラケット([])やシングルクォート、ダブルクォートで括ればOKです(例えば[Movable Type]等)。日本語の設定も可能です。
設定の詳細につきましては、

Ogawa::MemorandaTagwire Plugin

の「タグ形式」の項をご覧ください。

9.動作確認

タグ表示画面エントリー保存後、tags.html を表示してみます。画像のように「MovableType」が表示されていればOKです。表示されない場合、5項の設定で「再構築オプション」がチェックされていない可能性がありますのでご確認ください。
タグ選択画面また、tags.html に表示された「MovableType」のリンクをクリックし、次のページで画像のように表示されれば全て完了です(エントリータイトルは「てすと」で試しています)。

以上です。
CSSにつきましては各自でお好みのスタイルを設定してください。

Comments [41] | Trackbacks [27]
2005年8月 4日

Firefox・Netscapeで連続した半角文字を折り返す

連続した半角文字が折り返さない状態FirefoxやNetscape 等、Geckoエンジンを用いたブラウザでは、連続した半角文字(長いURLや半角空白のないスクリプト等)を途中で折り返せないという既知のバグがあります。当サイトでもMTタグをリストとして掲載している記事をFirefox・Netscape等で表示すると、画像のようにブロックからはみ出して表示されてしまいます。
FirefoxまとめサイトURLっぽい文字列が右端で折り返されずレイアウトが乱れます

FirefoxではURLの折り返しについては url_breaker という拡張が公開されており、これがスタンダードな対処方法になっているようです。

あすかぜ・ねっとurl_breaker

またURL以外のテキストにも適用したい場合、url_breker_plus が公開されています。

outsider reflexFirefoxで長いURIを折り返す
(本文中にダウンロードのリンクがあります)

まず、上記を Firefox拡張として利用する場合は、下記の手順で設定します。GreaseMonkey という拡張を利用する GreaseMonkey 版と、url_breaker を直接拡張として利用するXPI版があります。作業はいずれも Firefox で行います。

GreaseMonkey版

  • GreaseMonkeyのページにある「Install Greasemonkey 0.3.5.」をクリック
  • 「今すぐインストール」をクリック
  • 再起動(これで追加した拡張が有効になります)
  • url_breakerまたはFirefoxで長いURIを折り返すのページにある url_breaker.user.js または url_breaker_plus.user.js(リンク自体は文章です) のリンクを右クリックして「Install User Script...」を選択
  • 開いた画面で「OK」をクリック

XPI版(url_breker のみ)

  • url_breakerのページにある「インストール/ダウンロード」のリンクをクリック
  • 「今すぐインストール」をクリック
  • 再起動(これで追加した拡張が有効になります)

となっています。

次に、url_breaker は本来 Firefox拡張ですが、ブラウザやユーザ設定に依存しない(例えばNetscapeに適用させたい等)方法という意味で、通常のJavaScritpと同様に設定するカスタマイズについても併せてご紹介致します。
#Firefox拡張との競合や機能の認識不足等で問題があるようでしたら本エントリーのカスタマイズは行わない旨を改めて掲載したいと思います。

1.スクリプトのダウンロード
上記の url_breaker または url_breker_plus をダウンロードします。

2.スクリプトのアップロード
どちらもアーカイブ形式ではありませんので、ダウンロードしたスクリプト(url_breaker.user.js または url_breaker_plus.user.js)をそのままローカル・サイト・パス(index.htmlが置かれているところ)にアップロードします。

3.テンプレートの修正
スクリプトを適用したいテンプレートの最後の方に

         :
<script src="<$MTBlogURL$>url_breaker_plus.user.js"  type="text/javascript"></script>
</html>

という風に青色部分を追加します(例は url_breaker_plus.user.js の場合です)。
ページの最後に設定する理由は、このスクリプトがページが表示された後に実行される必要があるためです。逆に <head>~</head> の部分に挿入しても効果はありませんのでご注意ください。

改善後の表示拡張機能またはスクリプトの導入で表示が改善されました(左)。スクリプトの動作は、スクリプト内に記述された特定の半角文字列の後方に <wbr> を挿入するというもので、ウィンドウ幅のリサイズに伴って折り返し位置を変えてくれますので、固定カラムだけでなく可変カラムデザインのサイトにもかなり有効です。

4.スクリプトの修正
IE系ブラウザで本スクリプトを動作させるとJavaScriptエラーが発生しますので、スクリプトに、

(function () {
if(navigator.appName == 'Netscape'){
     :
   (中略)
     :
}
})();

と青色の2行を加え、Mozilla系ブラウザのみで動作するようにしてください。

以上です。

2005.08.05 追記
機能の認識不足で誤解を招く説明になっていたため、本文を一部修正致しました。併せてタイトルも修正しました。

2005.09.27 追記
IEでJavaScriptエラーになるのを避けるため、スクリプトの修正を必須項目に変更しました。

Comments [8] | Trackbacks [10]
2004年12月11日

ShrinkFinfo Plugin 0.04公開

December 11,2004 12:10 PM
Tag:[]
Permalink
ShrinkFinfo Plugin 0.04

ShrinkFInfo Plugin で fileinfo.db サイズを表示するでサイズ表示を付与しましたが Ogawa::Memoranda さんよりファイルサイズ表示を盛り込んだ ShrinkFInfo Plugin 0.04 が公開されました。ファイルサイズ表示以外に、ウェルカム画面にもファイル縮小を促す表示(イメージ下)機能が追加されています。また表示する閾(しきい)値となるファイルサイズも適宜変更できるようになっています。デフォルトは1MBに設定されています。

ということで 0.04 へバージョンアップしました。

Comments [8] | Trackbacks [2]
2004年12月 9日

ShrinkFInfo Plugin で fileinfo.db サイズを表示する

December 9,2004 12:50 PM
Tag:[]
Permalink

2004.12.11 追記
本アイデアが盛り込まれた ShrinkFInfo Plugin 0.04 が公開されましたのでそちらを参照ください。


ShrinkFInfo PluginMovable Type を BerkeleyDB で利用する場合、再構築を繰り返す毎に db/fileinfo.db が肥大化する(その結果、再構築時間に影響が出ます)という問題があり、現在 fileinfo.db のサイズを縮小する ShrinkFInfo Plugin を利用させて頂いてます。
これは管理メニューに表示される "ShrinkFInfo Plugin, v?" のリンクをクリックすればサイズ縮小スクリプトが実行されるという仕組みになっていますが、クリック契機を簡単に知りたいと思い、画像のように fileinfo.db のサイズを表示するようにしてみました。Plugin 作成者のOgawa::Memorandaさんより快諾頂けましたので変更箇所をお知らせ致します。
ShrinkFInfo 配下の plugin.pl に青色部分を追加します。

use strict;
 
my $size;
$main::size = (-s '/path/db/fileinfo.db')/1000;
 
if (MT->can('add_plugin')) {
    require MT::Plugin;
    my $plugin = new MT::Plugin();
    $plugin->name("ShrinkFInfo Plugin, v.0.03");
    $plugin->description("Shrink enlarged db/fileinfo.db. Current size: $main::size Kbyte");
    $plugin->doc_link("http://as-is.net/hacks/2004/11/mt_shrinkfinfo.html");
    $plugin->config_link("mt-shrinkfinfo.cgi");
    MT->add_plugin($plugin);
}

path の部分は db/fileinfo.db までのフルパスを適宜記述してください。
小数点以下を四捨五入して表示しない場合は下記のようにしてください。

$main::size = int(((-s '/path/db/fileinfo.db')/1000) + 0.5);

2004.12.10 追記
スクリプトを byte 表示から Kbyte 表示に修正しました。

2004.12.11 追記
小数点以下を四捨五入して表示しないパターンも追加しました(たびたびすいません…)。

Comments [7] | Trackbacks [2]
2004年12月 8日

Edit リンクを “Edit This” Bookmarklet に変更する

December 8,2004 2:25 PM
Tag:[]
Permalink

以前のカスタマイズで個別エントリーアーカイブの右下に「Edit」リンク、つまりエントリー編集画面へのリンクを設定していた(記事)のですが、

Ogawa::Memoranda“Edit This” Bookmarklet

に乗り換えてみることにしました(これを投稿している時点ではまだ混在しています)。ありがとうございました。

動作的には、(IEの場合)個別アーカイブページやコメントプレビュー画面を表示している状態で、「お気に入り」に追加した"Edit This" を選択(または「リンク」に追加した "Edit This" をクリック)すると編集画面にジャンプすることができます。自力で Bookmarklet を作れない方も上記のリンクに Bookmarklet生成サービスを配してくださってますので面倒な作業は一切ありません。

ちなみにそこで設定する Blog ID はメインメニューのウェブログ名のURLの

http:://?mt.cgi?__mode=menu&blog_id=1

の値を設定します。blog_id は管理メニューのURLの至るところに登場します(他に簡単に調べる方法ありましたらご容赦ください)。

Comments [2] | Trackbacks [1]
2004年7月 2日

プロフィールのページを作る

July 2,2004 11:35 PM
Tag:[, , , ]
Permalink

この記事は Movable Type 3.1x 用ですので、Movable Type 3.2-ja 以降をお使いの方はプロフィールのページを作る(3.2-ja?用)へどうぞ。


サイドバーメニューのタイトル「Introduction」を新たに作成しサブメニューとしてプロフィールを追加しました(中身ありませんが)。ということで「プロフィール」用テンプレートの設定およびメニューへの追加方法を記しておきます。同様の手法で「このサイトについて」や「注意事項」のページを作ることができます。
追加方法のひとつに、「プロフィール」というカテゴリーを作り、そのカテゴリーのエントリーとしてプロフィールのコンテンツを記述、そのカテゴリだけを抽出してプロフィールのページを表示するという手段があるようですが、カテゴリーメニューや最近のエントリーに含まれてしまうので、逆にそれらから除外する設定が必要となるためやや面倒です。
ということで、ここではテンプレートに直接コンテンツを記述する方法で説明します(妥当な手法であるかどうかは定かでありません)。

1.新しいテンプレートの作成

Movable Type 管理画面左メニューより「テンプレート」をクリック。右側上に表示されている「新しいインデックス・テンプレートを作る」をクリック。

2.テンプレート設定

次に表示されたページで次の各項目を設定します。

  • テンプレートの名前:Profile Index(任意の名前)
  • 出力ファイル名:about.html(任意の名前)
  • 「インデックス・テンプレートを?(中略)?再構築する」をチェック
  • このテンプレートにリンクするファイル:何も設定しない
  • テンプレートの中身:ここではCategory Archiveの内容をそのままコピー下記の2004.10.29 追記のリストの内容をコピーしてください。なおサイドバーの内容については適宜必要なものを他のテンプレートからコピーしてください(注意事項がありますので先の追記欄を併せてご確認ください)

3.テンプレートより不要なタグを削除

プロフィールをカテゴリーやエントリーとして登録しないので、上記のテンプレートをコピーしただけでは再構築時にエラーとなります。そのため「テンプレートの中身」欄にコピーしたテンプレートより下記のタグを削除します。終了タグがある場合はそちらも併せて削除。

  • MTArchiveTitle(タイトル)
  • MTEntries(エントリー)
  • MTDateHeader(日付)
  • MTEntryXXX(個別エントリー:XXXは任意の文字列)

2004.10.29 追記
下記に本サイトの「プロフィール」を元にしたサンプルを置いておきます。本サイトで公開中のスタイルシート利用が前提です。サイズ可変の場合は赤色部分を削除してください。
うまく動作しないようでしたらすいませんがご連絡ください。:サイドバーのメニューに、カテゴリー・アーカイブや日別アーカイブにある「The list of ?」のメニューを挿入しないでください(ここには上記のMTArchiveTitleが含まれているので再構築時にエラーとなります)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" />
 
<title><$MTBlogName$>: プロフィール</title>
 
<link rel="stylesheet" href="<$MTBlogURL$>styles-site.css" type="text/css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<$MTBlogURL$>index.rdf" />
 
</head>
 
<body>
 
<div id="box">
 
<div id="banner">
<h1><a href="<$MTBlogURL$>" accesskey="1"><$MTBlogName$></a></h1>
<h2><$MTBlogDescription$></h2>
</div>
 
<!-- 左サイドバーここから -->
 
省略(適宜必要なメニューを挿入してください)
 
<!-- 左サイドバーここまで -->
 
<div id="content">
 
<div class="blog">
 
<h2 class="date">プロフィール</h2>
 
<div class="blogbody">
<h3 class="title">●名前</h3>
yujiro
</div>
 
<div class="blogbody">
<h3 class="title">●性別</h3>
男
</div>
 
<div class="blogbody">
<h3 class="title">●さらに詳しく</h3>
</div>
 
</div>
 
</div>
 
<!-- 右サイドバーここから -->
 
省略(適宜必要なメニューを挿入してください)
 
<!-- 右サイドバーここまで -->
 
<br clear="all" />
 
</div>
 
</body>
</html>

4.テンプレートにコンテンツ記述

修正したテンプレートの本文に該当する部分にプロフィールを直接書き込みます。入力後このテンプレートを保存して再構築します。

5.サイドバーメニューにリンク設定

Main Index等のサイドバーメニューに下記の部分を追加します。フォーマットは各自のメニューのフォーマットに合わせてください。追加後保存して再構築します。

<div class="side">
<a href="<$MTBlogURL$>about.html">プロフィール</a><br />
</div>

2004.11.18 追記
サイドメニューにカテゴリー・アーカイブや日別アーカイブにある「The list of ?」のメニューを挿入しない注意書きを追記。

2004.11.29 追記
作業手順の「Category Archiveの内容をそのままコピー」は適切な表現でないため、提示のリストを使用するよう記述を変更致しました。

2005.03.12 追記
テンプレートの配置が可変3カラム専用でしたので固定3カラムに対応できるよう変更致しました。

2005.12.30 追記
3.2-ja 用記事へのリンクを追加しました。

Comments [49] | Trackbacks [27]
Now loading...
Introduction
List of "その他"
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.02