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

予約変数一覧 for Movable Type 4.1

January 7,2008 12:50 AM
Tag:[, , ]
Permalink

MTIf タグ等でアーカイブ種別を判定するための、Movable Type 4.1 で予め用意された予約変数一覧です。

このエントリーは、MT4.0x 用にエントリーした「予約変数一覧 for Movable Type 4(その1)」を MT4.1 ベータ版の内容に書き換えたものです。赤字は 4.0x から削除された変数、青字は追加された変数です。
archive_listing が新たに追加され、カテゴリーアーカイブとユーザーアーカイブがその対象として追加されています。つまりリスト系のアーカイブがこの変数で判断できます。

これらは lib/MT/WeblogPublisher.pm に記載されているもので、抜粋したものを下記の表にまとめました(使用方法は後述)。
記載に誤りがあったため、マトリクスを修正しました。

修正後(これが正解です)

 YMWDCCAAIP
YMWDYMWD
archive_template
main_template
datebased_archive    
archive_listing  
datebased_only_archive            
category_archive           
author_archive           
entry_archive
feedback_template
              
module_category_archives
module_category-monthly_archives
              
module_author_archives
module_author-monthly_archives
              
datebased_yearly_archive
module_yearly_archives
               
datebased_monthly_archive
module_monthly_archives
               
datebased_weekly_archive               
datebased_daily_archive               
category_yearly_archive               
category_monthly_archive               
category_weekly_archive               
category_daily_archive               
author_yearly_archive               
author_monthly_archive               
author_weekly_archive               
author_daily_archive               
entry_template               
page_archive
page_template
               

修正前(一部誤りがあります)

 YMWDCCAAIP
YMWDYMWD
archive_template
main_template
datebased_archive
archive_listing
  
datebased_only_archive            
category_archive           
author_archive           
entry_archive
feedback_template
              
module_category_archives
module_category-monthly_archives
              
module_author_archives
module_author-monthly_archives
              
datebased_yearly_archive
module_yearly_archives
               
datebased_monthly_archive
module_monthly_archives
               
datebased_weekly_archive               
datebased_daily_archive               
category_yearly_archive               
category_monthly_archive               
category_weekly_archive               
category_daily_archive               
author_yearly_archive               
author_monthly_archive               
author_weekly_archive               
author_daily_archive               
entry_template               
page_archive
page_template
               

一番上にある略号の意味は次の通りです。

  • Y:年別アーカイブ
  • M:月別アーカイブ
  • W:週別アーカイブ
  • D:日別アーカイブ
  • C:カテゴリーアーカイブ
  • A:ユーザーアーカイブ
  • I:ブログ記事アーカイブ
  • P:ウェブページアーカイブ

カテゴリーアーカイブとユーザーアーカイブは、年別・月別・週別・日別との組み合わせもあります。

○印がついているのが、そのアーカイブを表示する時に、変数に "1" が設定されていることを示しています。●はデフォルトテンプレートで、テンプレート上に MTSetVar タグで設定されているものを示しています。

例えば、アーカイブ種別が「年別・月別・週別・日別」であることを判定したい場合は、

<MTIf name="datebased_only_archive">
  :
</MTIf>

とテンプレート(またはテンプレートモジュール)に書きます。

このタグが書かれたテンプレートやテンプレートモジュールが「年別・月別・週別・日別」として実行される場合、MTIf タグのブロック内部が実行されます。

アーカイブ種別が「ブログ記事・ウェブページ」であることを判定したい場合は

<MTIf name="feedback_template">
  :
</MTIf>

と書きます。このタグが書かれたテンプレートやテンプレートモジュールが「ブログ記事・ウェブページ」として実行される場合、MTIf タグのブロック内部が実行されます。

これらを利用すれば、独自の変数を用意する必要はありません。

2008.02.25
認識に誤りがあったため、マトリクスを修正しました。

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年11月20日

予約変数一覧 for Movable Type 4(その2)

November 20,2007 1:27 AM
Tag:[, ]
Permalink

MTIf タグ等でアーカイブ種別を判定するための、Movable Type 4 で予め用意された予約変数一覧です。「予約変数一覧 for Movable Type 4(その1)」でまとめたものは変数に"1"が設定されているものですが、今回は、

archive_class

という変数に設定されている文字列をまとめました。
大体お分かりと思いますが、この変数はアーカイブ種別を判定するためのものです。

前回同様、lib/MT/WeblogPublisher.pm に記載されています(使用方法は後述)。

アーカイブ種別変数名
年別datebased-yearly-archive
月別datebased-monthly-archive
週別datebased-weekly-archive
日別datebased-daily-archive
ブログ記事entry-archive
ウェブページpage-archive
カテゴリcategory-archive
年別カテゴリcategory-yearly-archive
月別カテゴリcategory-monthly-archive
週別カテゴリcategory-weekly-archive
日別カテゴリcategory-daily-archiv
ユーザーauthor-archive
年別ユーザーauthor-yearly-archive
月別ユーザーauthor-monthly-archive
週別ユーザーauthor-weekly-archive
日別ユーザーauthor-daily-archive

例えば、アーカイブ種別が「月別カテゴリ」であることを判定したい場合は、

<MTIf name="archive_class" eq="category-monthly-archive">
  :
</MTIf>

とテンプレート(またはテンプレートモジュール)に書きます。

このタグが書かれたテンプレートやテンプレートモジュールが「月別カテゴリ」として実行される場合、MTIf タグのブロック内部が実行されます。

アーカイブ種別が「ブログ記事」であることを判定したい場合は

<MTIf name="archive_class" eq="entry-archive">
  :
</MTIf>

と書きます。このタグが書かれたテンプレートやテンプレートモジュールが「ブログ記事」として実行される場合、MTIf タグのブロック内部が実行されます。

これらを利用すれば、独自の変数を用意する必要はありません。

MTArchiveType との違い

Movable Type では MTArchiveType タグが用意されているので、これを使って判定することも可能ですが、実装がやや面倒です。
例えば、アーカイブ種別が「ブログ記事」であることを判定したい場合は、

<MTSetVarBlock name="archive_type"><$MTArchiveType$></MTSetVarBlock>
<MTIf name="archive_type" eq="Individual">
  :
</MTIf>

となります。MTSetVarBlock タグで値を任意の変数 archive_type に設定する分が余分に必要です。

変則的な判定方法

like 属性を用いて、各アーカイブ(日付・カテゴリ・ユーザー)の月別アーカイブだけを取得するには次のように記述します。

<MTIf name="archive_class" like="monthly">
  :
</MTIf>
Comments [3] | Trackbacks [0]
2007年11月19日

予約変数一覧 for Movable Type 4(その1)

November 19,2007 2:30 AM
Tag:[, ]
Permalink

MTIf タグ等でアーカイブ種別を判定するための、Movable Type 4 で予め用意された予約変数一覧です。

これらは lib/MT/WeblogPublisher.pm に記載されているもので、抜粋したものを下記の表にまとめました(使用方法は後述)。

 YMWDCCAAIP
YMWDYMWD
archive_template
main_template
datebased_archive    
datebased_only_archive            
category_archive           
author_archive           
entry_archive
feedback_template
              
module_category_archives
module_category-monthly_archives
              
module_author_archives
module_author-monthly_archives
              
datebased_yearly_archive
module_yearly_archives
               
datebased_monthly_archive
module_monthly_archives
               
datebased_weekly_archive               
datebased_daily_archive               
category_yearly_archive               
category_monthly_archive               
category_weekly_archive               
category_daily_archive               
author_yearly_archive               
author_monthly_archive               
author_weekly_archive               
author_daily_archive               
entry_template               
page_archive
page_template
               

一番上にある略号の意味は次の通りです。

  • Y:年別アーカイブ
  • M:月別アーカイブ
  • W:週別アーカイブ
  • D:日別アーカイブ
  • C:カテゴリーアーカイブ
  • A:ユーザーアーカイブ
  • I:ブログ記事アーカイブ
  • P:ウェブページアーカイブ

カテゴリーアーカイブとユーザーアーカイブは、年別・月別・週別・日別との組み合わせもあります。

○印がついているのが、そのアーカイブを表示する時に、変数に "1" が設定されていることを示しています。●はデフォルトテンプレートで、テンプレート上に MTSetVar タグで設定されているものを示しています。

例えば、アーカイブ種別が「年別・月別・週別・日別」であることを判定したい場合は、

<MTIf name="datebased_only_archive">
  :
</MTIf>

とテンプレート(またはテンプレートモジュール)に書きます。

このタグが書かれたテンプレートやテンプレートモジュールが「年別・月別・週別・日別」として実行される場合、MTIf タグのブロック内部が実行されます。

アーカイブ種別が「ブログ記事・ウェブページ」であることを判定したい場合は

<MTIf name="entry_archive">
  :
</MTIf>

または

<MTIf name="feedback_template">
  :
</MTIf>

と書きます。このタグが書かれたテンプレートやテンプレートモジュールが「ブログ記事・ウェブページ」として実行される場合、MTIf タグのブロック内部が実行されます。

これらを利用すれば、独自の変数を用意する必要はありません。

Comments [3] | 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 [2] | Trackbacks [1]
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 [27] | Trackbacks [12]
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 [4] | Trackbacks [2]