TopMovable Typeカスタマイズフォルダ > 2008年9月
2008年9月16日

フォルダアーカイブとフォルダアーカイブ一覧を作る

September 16,2008 1:23 AM
Tag:[, , , ]
Permalink

Movable Type 4.2 でフォルダアーカイブとフォルダアーカイブ一覧を作るカスタマイズを紹介します。

Movable Type 4.2 標準の機能ではフォルダアーカイブを作成することができません。将来的に機能追加されるかもしれませんが、ここではプラグインを利用して Movable Type 4.2 でフォルダアーカイブページを作成する方法を紹介します。

次のようなフォルダとウェブページの構成を想定します。

フォルダ1
 ├ ウェブページ1-1
 ├ ウェブページ1-2
 └ ウェブページ1-3
フォルダ2
 ├ ウェブページ2-1
 ├ ウェブページ2-2
 └ ウェブページ2-3

この構成であれば、フォルダアーカイブには、次のようにフォルダに属するウェブページの一覧を表示することができます。

フォルダ1のフォルダアーカイブページ
フォルダ一1のウェブページ一覧

フォルダ2のフォルダアーカイブページ
フォルダ一2のウェブページ一覧

サブフォルダがある場合も、独立したアーカイブページとして作成可能です。

フォルダアーカイブの作成に伴い、フォルダアーカイブページへのリンク(フォルダ一覧)の作成方法もあわせて説明します。

フォルダ一覧

1.フォルダアーカイブの作成

フォルダアーカイブの作成は、The blog of H.Fujimoto の藤本壱さんが作成された WriteToFile プラグインを利用します。

1.1 WriteToFile プラグインのダウンロード

下記のページより、WriteToFile プラグインをダウンロードしてください。

The blog of H.Fujimoto - テンプレートの再構築結果を部分的にファイルに出力するプラグイン

ダウンロードしたプラグインアーカイブを展開し、plusins ディレクトリにアップロードします。
プラグインの一覧で「WriteToFile」が表示されれば OK です。

プラグイン一覧

1.1 フォルダアーカイブ用テンプレートの作成

フォルダアーカイブ用テンプレートはインデックステンプレートで作成します。

ブログ管理画面の「デザイン」→「テンプレート」で「インデックステンプレートを作成する」をクリック。

テンプレート一覧

表示されたテンプレート作成画面で、次の内容を設定。

テンプレートの名前
フォルダアーカイブ(何でも構いません)
テンプレートの内容
ご利用のメインページの内容をそのままコピー&ペースト。
ファイル名
dummy.dat(このファイルはダミーなので使いません)
その他
変更せずそのまま

1.2 フォルダアーカイブ用テンプレートの修正1

フォルダアーカイブ用テンプレートの先頭と末尾に、テンプレートタグ(青色部分)を追加します。

<MTTopLevelFolders>
<MTSetVarBlock name="fname"><MTFolderPath>/index.html</MTSetVarBlock>
<MTWriteToFile file="$fname">
[1.1項でペーストしたメインページの内容]
</MTWriteToFile>
<MTSubFolderRecurse>
</MTTopLevelFolders>

1.3 フォルダアーカイブ用テンプレートの修正2

テンプレート内にある MTEntries タグを MTPages タグに変更します。

配布テンプレート

変更前(赤色を削除)

...前略...
<div id="content">
<div class="blog">
 
<mt:entries>
   <mt:entryTrackbackData />
   <mt:include module="ブログ記事の概要" />
</mt:entries>
 
</div>
</div>
...後略...

変更後(青色を追加)

...前略...
<div id="content">
<div class="blog">
 
<mt:Pages>
  <mt:PagesHeader>
  <h2 class="date"><$MTFolderLabel$>のウェブページ一覧</h2>
  <div class="entry">
    <ul>
  </mt:PagesHeader>
      <li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li>
  <mt:PagesFooter>
    </ul>
  </div>
  </mt:PagesFooter>
</mt:Pages>
 
</div>
</div>
...後略...

完成例

フォルダ一覧

既定のブログ

変更前(赤色を削除)

...前略...
<div id="alpha">
  <div id="alpha-inner">
<mt:Entries>
  <mt:Ignore><!-- Use the Entry Summary module for each entry published on this page --></mt:Ignore>
  <$mt:Include module="ブログ記事の概要"$>
</mt:Entries>
    <div class="content-nav">
      <a href="<$mt:Link template="archive_index"$>">アーカイブ</a>
    </div>
  </div>
</div>
...後略...

変更後(青色を追加)

...前略...
<div id="alpha">
  <div id="alpha-inner">
<mt:Pages>
  <mt:PagesHeader>
  <h2 class="archive-title"><$MTFolderLabel$>フォルダの一覧</h2>
  <ul>
  </mt:PagesHeader>
    <li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li>
  <mt:PagesFooter>
  </ul>
  </mt:PagesFooter>
</mt:Pages>
    <div class="content-nav">
      <a href="<$mt:Link template="archive_index"$>">アーカイブ</a>
    </div>
  </div>
</div>
...後略...

完成例

フォルダ一覧

設定が完了したら再構築してください。
再構築でエラーが発生した場合、4項に該当していないか確認してください。

2.フォルダアーカイブ一覧の作成

下記のサブテンプレートをウィジェットで作成します。ただしフォルダアーカイブに表示させる場合はインデックステンプレートで作成して、モジュール化を行ってください(理由は3項参照)。

配布テンプレートの場合

<mt:ifArchiveTypeEnabled archive_type="Page">
  <mt:if tag="blogPageCount">
<dt class="sidetitle">フォルダ一覧</dt>
<dd class="side">
    <mt:topLevelFolders>
      <mt:folderHeader>
  <ul>
      </mt:folderHeader>
    <li><a href="<mt:blogURL /><mt:folderPath />/index.html"><mt:folderLabel /></a> [<mt:folderCount />]
      <mt:subFolderRecurse />
    </li>
      <mt:folderFooter>
  </ul>
      </mt:folderFooter>
    </mt:topLevelFolders>
</dd>
  </mt:if>
</mt:ifArchiveTypeEnabled>

完成例

フォルダ一覧

既定のブログの場合

<mt:IfArchiveTypeEnabled archive_type="Page">
<div class="widget-pages widget">
  <h3 class="widget-header">フォルダ一覧</h3>
  <div class="widget-content">
  <mt:TopLevelFolders>
    <mt:folderHeader>
    <ul>
    </mt:folderHeader>
      <li class="folder folder-<$mt:FolderID$>"><a href="<mt:blogURL /><mt:folderPath />/index.html"><mt:folderLabel /></a> [<mt:folderCount />]
    <$mt:SubFolderRecurse$>
      </li>
    <mt:folderFooter>
    </ul>
    </mt:folderFooter>
  </mt:TopLevelFolders>
  </div>
</div>
</mt:IfArchiveTypeEnabled>

完成例

フォルダ一覧

3.注意事項1

MTWriteToFile タグの中にカテゴリーリストやフォルダリストのサブテンプレートがあると、そこにある MTSubCatsRecurse や MTSubFolderRecurse タグが干渉して、サブフォルダのアーカイブが作成されないようです。

フォルダリストにカテゴリーリストやフォルダリストを含める場合はカテゴリーリストやフォルダリストをインデックステンプレートでモジュール化してください。

インデックステンプレートで作成したフォルダリストの出力ファイル名を folder.html とした場合、例えば次の方法で表示できます。PHP化する必要はありません。

<mt:BlogSitePath cat="folder.html" setvar="folder" />
<mt:include file="$folder" />

4.注意事項2

ウェブページのないフォルダがあると、フォルダアーカイブの再構築で次のようなエラーが発生します。

再構築エラー

Comments [6] | Trackbacks [1]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

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

AMN
Categories
Monthly Archives
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3