TopMovable Typeカスタマイズページ分割 > 2006年6月
2006年6月 1日

画像でエントリー・アーカイブをページ分割する

Movable Type でページ分割用プラグイン MTPaginate を用い、エントリーアーカイブを画像(およびテキスト)で分割するカスタマイズです。

下記のように img 要素だけを記述したエントリーで、パラグラフ(p)要素でページ分割をする場合、MTPaginate をそのまま利用すると分割されず、全て同じページに表示されます(空行部分、つまり img 要素の前後には Movable Type の機能で自動的に p 要素が付与されます)。

<img src="http://yourhost/path/hoge1.jpg" alt="hoge1" />
 
<img src="http://yourhost/path/hoge2.jpg" alt="hoge2" />
 
<img src="http://yourhost/path/hoge3.jpg" alt="hoge3" />

これは、ページ分割のセクションサイズ等の計算をHTMLタグを除いたテキストだけで行うためです。

ということで、プラグインソースを改変し、img 要素等のHTMLタグでページ分割する方法を紹介します。
下記に改変内容を記します。なおエントリーアーカイブのページ分割の基本的な設定が完了していることが前提です。設定方法については、エントリーアーカイブのページ分割を参照ください。

また、ここではパラグラフ要素をセパレータとした動作のみ確認しています(下記の設定)。

section_start_tag="p"

これ以外の要素や、他のオプションによる分割については動作を確認しておりませんので予めご容赦ください。

1.プラグインの修正

MTPaginate.pl に下記のパッチを適用します。プラグインファイルのTAB文字は半角空白4文字に予め置き換えてください。

--- MTPaginate.pl.bak   Fri May 19 13:14:15 2006
+++ MTPaginate.pl       Fri May 19 13:20:44 2006
@@ -146,7 +146,7 @@
                     } elsif($pg->{max_bytes}) {
                         $sectionSize = length($stripped_section);
                     } else {
-                        my @words = split /[\s]+/, remove_html($stripped_section);
+                        my @words = split /[\s]+/, $stripped_section;
                         $sectionSize = scalar(@words);
                     }
 
@@ -156,12 +156,12 @@
                             my $sz = length($p);
                             my @words = split /[\s]+/, remove_html($p);
                             my $words = scalar(@words);
-                            $pageCount++;
                             $debugContent .= "<div style=\"background: yellow; margin-left: -10px; margin-right: -10px; padding: 5px 10px 5px 10px\"><b>Page $pageCount</b>, $pageSectionCount sections
, $words words, $sz bytes</div>" . $debugPage;
                             $debugPage = '';
                             $pageSectionCount = 0;
                         }
-                        push @pages, $page;
+                        push @pages, $page if $pageCount;
+                        $pageCount++;
                         $count = 0;
                         $page = [];
                     }

パッチのあてかたが分からない方は、下記のリストを参照して、赤色を削除し、青色を追加してください。*1

       :
} elsif($pg->{max_bytes}) {
    $sectionSize = length($stripped_section);
} else {
    my @words = split /[\s]+/, remove_html($stripped_section);
    my @words = split /[\s]+/, $stripped_section;
    $sectionSize = scalar(@words);
}
       :
      (中略)
       :
        my $sz = length($p);
        my @words = split /[\s]+/, remove_html($p);
        my $words = scalar(@words);
        $pageCount++;
        $debugContent .= "<div style=\"background: yellow; margin-left: -10px; margin-right: -10px; padding: 5px 10px 5px 10px\"><b>Page $pageCount</b>, $pageSectionCount sections
ytes</div>" . $debugPage;
        $debugPage = '';
        $pageSectionCount = 0;
    }
    push @pages, $page;
    push @pages, $page if $pageCount;
    $pageCount++;
    $count = 0;
    $page = [];
}
       :

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

修正した MTPaginate.pl を元のディレクトリにアップロードします。

以上です。


*1:色覚障害等で色が識別できない場合は、サイト右上の「Styles」メニューにある Gray Scale をクリックしてください。IEではグレースケール表示され、青色部分が下線表示、赤色部分が二重下線で表示されます。Firefox/Opera ではカラー表示のままですが下線表示に切り替わります。なお設定の都合上、リンクとテキスト表示が判断できなくなりますので予めご容赦ください。

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