2004年01月08日 (木)

うにょうにょ Read More ができるプラグイン新発売(無料)

余丁町散人さんのエントリ「Collapsing entries AND COMMENTS はスゴイ! iBlog でも出来ないかな〜」で紹介されている MT のカスタマイズ例を iBlog でも似たようなことできるようになる iblogPatcher の新プラグイン ENTRYPAGE_ACTIOIN.plugin リリース。
(2004/01/09 追記)
この説明はプラグインの導入までです。続きは『それで「うにょうにょ Read More」はどうやるのかというと』を御覧下さい。

例として私のもう一つの blog を見てほしい。この Blog ページとカテゴリページに「続きを表示>>」というリンクがある。これをクリックするとエントリのボディーがうにょっと出てくる。ボディーの下に表示されている「<<続きを隠す」をクリックすると今度はボディーがうにょっと隠れる。名付けて「うにょうにょ Read More」。iBlogger の中で流行らせよう。「あのサイトに付いてるあれなあに?」「あぁあれは うにょうにょ Read More だよ。iblogPatcher というツールとそのプラグインがあればできるようになるんだよ。」「名前がきもーい。」......流行らないか。

【導入情報】
iblogPatcher が既に導入されて運用されているところからスタート。
  1. 必要なファイルをダウンロードする。ダウンロード元は私の iDisk の Public フォルダー下にある iBlog フォルダーに全て揃っている。
    ダウンロード元 ダウンロード先
    plugin/ENTRYPAGE_ACTION.plugin ~/Library/Application Support/iblogPatcher/plugin/
    etc/ToggleEntryBody.js ~/Library/Application Support/iblogPatcher/
    EntryBodyPage.txt ~/Library/Application Support/iBlog/TemplateSets/
    EntryBodyPage.txt はエンコードが UTF-8 になっている。エントリーページの(最終的な)エンコードに合わせて変更してほしい。CHANGE_ENCODE.plugin を使っていて特に変換先のエンコードを変えていない人は、このままで使える。
  2. テンプレートファイル EntryPage.txt の編集を以下の要領で行う。変更後の改行はあってもなくても構わない。
    変更前 変更後
    <$NavigationItems$> <!-- BEGIN NavigationItems -->
    <$NavigationItems$>
    <!-- END NavigationItems -->
    <$EntryAbstract$> <!-- BEGIN EntryAbstract -->
    <$EntryAbstract$>
    <!-- END EntryAbstract -->
    <$EntryBody$> <!-- BEGIN EntryBody -->
    <$EntryBody$>
    <!-- END EntryBody -->
    <$EntryPostDate$> <!-- BEGIN EntryPostDate -->
    <$EntryPostDate$>
    <!-- END EntryPostDate -->
    <$EntryTimestamp$> <!-- BEGIN EntryTimestamp -->
    <$EntryTimestamp$>
    <!-- END EntryTimestamp -->
  3. Blog 定義ファイル(多分 myblog.txt になっていると思う)に次の要領で新プラグインのための記述を追加する。赤字で書かれたところが追加箇所である。
    preview after の file 処理
    'file' => sub {
        VALID_XHTML::File(@_);
        SJIS_BNAME::File(@_);
        ENTRIES_JS::File(@_);
        CHANGE_ENCODE::File(@_);
        ENTRYPAGE_ACTION::File(@_);
    },
    preview after の onFinish 処理
    'onFinish' => sub {
        VALID_XHTML::OnFinish(@_);
        NOLF_FEED::OnFinish(@_);
        SQUOT_CATNAME::OnFinish(@_);
        SJIS_BNAME::OnFinish(@_);
        ENTRIES_JS::OnFinish(@_);
        system("cp -p '$ENV{'HOME'}/Library/Application Support/iblogPatcher/ListEntry.html' '$_[0]/ListEntry.html'; cp -p '$ENV{'HOME'}/Library/Application Support/iblogPatcher/ListEntry.js' '$ENV{'HOME'}/Library/Application Support/iblogPatcher/ValidateListEntry.js' '$_[0]'");
        system('cp', '-p', "$ENV{'HOME'}/Library/Application Support/iblogPatcher/ToggleEntryBody.js", $_[0]);
        CHANGE_ENCODE::OnFinish(@_);
    },
  4. iBlog で [プレビュー状態をリセット後、プレビュー] そして [公開] をする。

【解説】
実はこのプラグインは「うにょうにょ Read More」をするためのプラグインではない。エントリーページの要素を取得して、新たなページを作ったり、エントリーページに変更を加えて書き戻したり、各要素を EntryUUID 毎に集積して、別なプラグインなどで一気に加工したりするためのプラグインなのだ。「うにょうにょ Read More」はそのできることのデモンストレーションに過ぎない。

デフォルトの設定では各エントリーページの内容やそのパス名から次の要素を取り出し、テンプレートファイルの中で REPLACE として使用できる。

これ以外の要素は CommonLib.js で定義されている JavaScript 関数から取得できたり、値が固定していたりするので必要ないと判断した。

これらの要素を内容から取り出すために EntryPage.txtの編集が必要になる。普通にテンプレートが適用されるとこの要素がどこにあるのかを機械的に判断するのが難しくなる。カスタマイズされていれば尚更である。そこで、<!-- BEGIN XXXX --> と <!-- END XXXX --> で挟んで識別できるようにしてあげる必要がある。(この識別の仕方も設定で変更できる。)

そしてデフォルトの設定では、エントリページが置かれるディレクトリと同じディレクトリに EntryBody.html というファイルを作成するようになっている。このファイルは iBlog の他のテンプレートファイルと同じように REPLACE を使用しているテンプレートファイルから生成される。

これらの取り出す要素と何をするかは、プラグインの中に書かれた設定によって定義されている。Perl が読み書きできる人ならばこの設定を変更することによって様々な処理が可能になる。

Posted: 18:36    | Comment | Trackback


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