2004年08月31日 (火)

iblogPatcher 用カスタマイズ済みテンプレート(FileSharingEntryPage.txt)

iblogPatcher を 1.3 にバージョンアップさせてからそのための解説をほとんど書いていませんでした。このため新規に導入をされる方、新たな blog を立ち上げる方、テンプレートの大幅な改造をする方などにはわかりにくい状況になっていました。

私の労力をあまり使わずに少しでも緩和しようと「僕は見ていた」で使用しているテンプレートセット、スタイルシート、ブログ定義ファイルの実例を同梱していますが、これはかなり iBlog オリジナルから離れたカスタマイズをしているので、ブログ定義ファイル以外は参考程度にしかなっていませんでした。

これを解消するために何回かに分けて iblogPatcher 用にカスタマイズされたテンプレート(デザインはオリジナルと同じ)を掲載していきます。最後にこれらのためのブログ定義ファイルも掲載します。このとおりにやればよいようになります。

今日はその第六回目。FileSharingEntryPage.txt です。


ほとんど EntryPage.txt と同じですが、エントリの本文を識別するために付けるコメントの位置に注目してください。
$DocumentRoot$ を囲む [ ] は全角にしてあります。半角に置き換えてください。また a タグの < と a の間にスペースを入れています。このスペースは取り除いてください。強調された黄色い部分が iblogPatcher に依存した部分です。各所の解説は後述しますが EntryPage.txt と同じ箇所については省略します。そちらも合わせてご覧下さい。
<?xml version="1.0" encoding="UTF-8" ?>
<!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" lang="ja-JP" xml:lang="ja-JP">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta name="keywords" content="<$MetaKeywords$>" />
    <meta name="description" content="<$BlogDescription$>" />
    <meta name="author" content="<$MetaAuthor$>" />
    <meta name="copyright" content="<$MetaCopyright$>" />
    <link rel="contents" href="<$BlogBaseURL$>archive.html" />
    <link rel="start" href="<$BlogBaseURL$>index.html" />
    <link rel="alternate" type="application/rss+xml" title="RSS 0.92" href="[$DocumentRoot$]/rss.xml" />
    <link rel="stylesheet" href="<$BlogBaseURL$>styles-site.css" type="text/css" />
    <link rev="made" href="mailto:<$LinkRev$>" />
    <script language="JavaScript1.2" src="<$BlogBaseURL$>CommonLib.js" type="text/javascript"></script>
    <$AuthenticationLink$>
    <title><$EntryTitle$></title>
    <script type="text/javascript" src="<$BlogBaseURL$>entries.js"></script>
    <script type="text/javascript" src="<$BlogBaseURL$>AroundEntries.js" charset="Shift_JIS"></script>
    <script type="text/javascript" src="http://www.haloscan.com/load.php?user=<$HaloScanID$>"></script>
  </head>
  <body>
    <div id="banner">
      <h3><script language="JavaScript1.2" type="text/javascript">getBlogName();</script> &gt; <script language="JavaScript1.2" type="text/javascript">getCategoryName("<$EntryCategoryUUID$>");</script> &gt;</h3>
      <noscript>
        <em>このサイトでは JavaScript を利用しています。コンテンツを意図通りにご覧になるためには JavaScript が使用できるブラウザで JavaScript 機能を有効にしてご覧下さい。</em>
      </noscript>
    </div>
    <table border="0" cellpadding="1" cellspacing="0" summary="Navigation Bar - Main Contents">
      <tr>
        <!-- Main Content -->
        <td valign="top" width="<$ContentAreaWidth$>%">
          <div id="container">
            <div class="blog">
              <div class="blogbody">
                <h3 class="title"><$CategoryImage$> <$EntryTitle$></h3><br />
                <!-- BEGIN EntryAbstract --><!-- END EntryAbstract -->
                <!-- BEGIN EntryBody --><$EntryBody$><br />
                <table width="70%" cellpadding="5" bgcolor="#EEEEEE" border="1" summary="Download file List">
                  <tr bgcolor="#999999">
                    <th width="60%">File Name</th>
                    <th width="20%">File Size</th>
                    <th width="20%">File Link</th>
                  </tr>
                  <ForEachFile>
                  <tr>
                    <td><$FileName$></td>
                    <td><$FileSize$></td>
                    <td>< a href="<$FileLink$>">Download</a></td>
                  </tr>
                  </ForEachFile>
                </table><!-- END EntryBody -->
                <br />
                Posted: <!-- BEGIN EntryPostDate --><$EntryPostDate$><!-- END EntryPostDate --> at <!-- BEGIN EntryTimestamp --><$EntryTimestamp$><!-- END EntryTimestamp -->&nbsp;
                <$EmailFeedback$>&nbsp;
                | < a href="http://www.haloscan.com/comments/<$HaloScanID$>/<$EntryUUID$>" title="Thread <$EntryUUID$>" onclick="HaloScan('<$EntryUUID$>'); return false;" onkeypress="HaloScan('<$EntryUUID$>'); return false;"><script type="text/javascript">postCount('<$EntryUUID$>');</script></a>
                <noscript>
                  < a href="http://www.haloscan.com/comments/<$HaloScanID$>/<$EntryUUID$>" title="Thread <$EntryUUID$>" target="Comment">Comments</a>
                </noscript>&nbsp;
                | < a href="http://haloscan.com/tb/<$HaloScanID$>/<$EntryUUID$>" title="Trackbacks for <$EntryUUID$>" onclick="HaloScanTB('<$EntryUUID$>'); return false;" onkeypress="HaloScanTB('<$EntryUUID$>'); return false;"><script type="text/javascript">postCountTB('<$EntryUUID$>');</script></a>
                <noscript>
                  < a href="http://haloscan.com/tb/<$HaloScanID$>/<$EntryUUID$>" title="Trachback for <$EntryUUID$>" target="Trackback">Trackbacks</a>
                </noscript>&nbsp;
                <!--
                <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                    xmlns:dc="http://purl.org/dc/elements/1.1/"
                    xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
                <rdf:Description
                    rdf:about="[[$DocumentRoot$]/<$EntryCategoryUUID$>/<$EntryUUID$>/index.html"
                    trackback:ping="http://haloscan.com/tb/<$HaloScanID$>/<$EntryUUID$>"
                    dc:title="<$EntryTitle$>"
                    dc:identifier="[$DocumentRoot$]/<$EntryCategoryUUID$>/<$EntryUUID$>/index.html" />
                </rdf:RDF>
                -->
                <script type="text/javascript">
                  NextEntryLinkString = '前のエントリ&lt;&lt;';
                  PrevEntryLinkString = '&gt;&gt;次のエントリ';
                  AroundEntries = GetAroundEntries('<$EntryUUID$>');
                </script>
                <table border="0" width="100%" align="center" summary="Entry Navigation">
                  <tbody>
                    <tr>
                      <td width="50%" align="right">
                        <script type="text/javascript">
                          WriteEntryLink4EntryPage(AroundEntries[3], NextEntryLinkString);
                        </script>
                        <br />
                      </td>
                      <td nowrap="nowrap" align="center">
                        < a href="../index.html" title="カテゴリーページ"><script type="text/javascript">getCategoryName("<$EntryCategoryUUID$>");</script></a>
                      </td>
                      <td width="50%" align="left">
                        <script type="text/javascript">
                          WriteEntryLink4EntryPage(AroundEntries[0], PrevEntryLinkString);
                        </script>
                        <br />
                      </td>
                    </tr>
                    <tr>
                      <td width="50%" align="right">
                        <script type="text/javascript">
                          WriteEntryLink4EntryPage(AroundEntries[2], NextEntryLinkString);
                        </script>
                        <br />
                      </td>
                      <td nowrap="nowrap" align="center">
                        < a href="<$BlogBaseURL$>index.html" title="トップページ"><script type="text/javascript">getBlogName();</script></a>
                      </td>
                      <td width="50%" align="left">
                        <script type="text/javascript">
                          WriteEntryLink4EntryPage(AroundEntries[1], PrevEntryLinkString);
                        </script>
                        <br />
                      </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </div>
          </div>
        </td>
        <!-- Navigation Content -->
        <td valign="top" width="<$NavigationAreaWidth$>%">
          <div id="links">
            <div class="sidetitle">
              Quick Links
            </div>
            <div class="side">
              < a href="../../index.html">Blog - <script language="JavaScript1.2" type="text/javascript">getBlogName();</script></a><br />
              < a href="../index.html">Category - <script language="JavaScript1.2" type="text/javascript">getCategoryName("<$EntryCategoryUUID$>");</script></a>
            </div>
            <$NavigationItems$>
            <div class="sidetitle">
              Statistics
            </div>
            <div class="side">
              Total entries in this blog: <script language="JavaScript1.2" type="text/javascript">getBlogEntriesCount();</script><br />
              Total entries in this category: <script language="JavaScript1.2" type="text/javascript">getCategoryEntriesCount("<$EntryCategoryUUID$>");</script><br />
              Published On: <!-- BEGIN PublishDate --><$PublishDate$><!-- END PublishDate -->
            </div>
            <div class="powered">
              < a href="http://homepage.mac.com/yuji_okamura/iblog/DotMac/Tips/C1592201073/E1898506484/index.html" title="iblogPatcher-1.3.1">iblogPatcher</a><br />
              Powered by<br />
              < a href="http://www.lifli.com/Products/iBlog/main.htm">iBlog</a><br />
            </div>
          </div>
        </td>
      </tr>
    </table>
    <div class="footer">
      <hr noshade size="1" />
      <div align="center">
        &#169; <script language="JavaScript1.2" type="text/javascript">getUsername();</script>
      </div>
    </div>
  </body>
</html>
<!-- BEGIN EntryAbstract --><!-- END EntryAbstract -->
「うにょうにょ Read More」が実現できる ENTRY_ACTION.plugin がエントリの要旨を読み取るために <$EntryAbstract$> の前後に付けます。「うにょうにょ Read More」には使用されませんが、ENTRY_ACTION.plugin が収集するデータを利用する別なプラグインがあれば活用されます。
しかし FileSharingEntryPage.txt には <$EntryAbstract$> がありません。ですからわざわざ付けなくともよいのですが、一応書いておきました。<$EntryAbstract$> が将来付くとしたらこのあたりに付きます。
<!-- BEGIN EntryBody -->, <!-- END EntryBody -->
「うにょうにょ Read More」が実現できる ENTRY_ACTION.plugin がエントリの本文を読み取るためにエントリの本文の前後に付けます。
ここでいうエントリの本文とは、BlogPage などから Read More を辿って EntryPage に来たときに新たに表示されるエントリの内容です。したがって元々の意図 -- <$EntryBody$> を囲む -- とは異なります。このような位置にすることにより、iBlog の設定で BlogPage や CategoryPage に本文も表示するようにしてもファイルのテーブルが表示されないという仕様上の不整合を「うにょうにょ Read More」で回避できます。現在私が知る限りでは、iblogPatcher を用いた「うにょうにょ Read More」が、FileSharingPage を用いたエントリのファイルのテーブルを BlogPage や CategoryPage でも表示する唯一の手段です。
# MusicEntryPage からの推測で言っています。
この問題については「ファイル配布と音楽のエントリページは未だ発展途上」に詳しく書きました。

Posted: 02:52    | Comment | Trackback


以下、類似エントリです。