TopMovable Typeカスタマイズページ分割 > メインページのページ分割 for Movable Type 4
News
各種ブログテンプレート
2008年4月 1日

エントリー本文

メインページのページ分割 for Movable Type 4

Posted at April 1,2008 2:00 AM
Category:[ページ分割]
Tag:[, ]

Movable Type 4 で、MTPaginate プラグインを用いた、メインページのページ分割方法をご紹介します。

ページ分割

このエントリーは「トップページのページ分割」を MT4 用に書き直したものです。

以前、ご質問を頂いていたものの回答ですが、公開が大変遅くなってしまい、申し訳ございません。

カスタマイズ手順には、PHP化の設定を含んでいます。PHP化の設定を行っていない場合は手順1~手順4を行った後、PHP化したメインページが正常に表示されることを確認してから、手順5以降のページ分割の設定を行ってください。

すでにPHP化が済んでいる場合は、手順5から開始してください。

1.ファイル・ディレクトリのパーミッションを変更

ファイルのパーミッションを変更するために、以下の作業を行ってください。
この作業を行うと、他のアーカイブページのファイルも同じパーミッションになるので、すべてのアーカイブのPHP化(拡張子を.phpにする)が必要です。

まず、mt-config.cgi を FTP ツールでダウンロードし、任意のエディタで開き、行末に以下の内容を追加してください。mt-config.cgi はアプリケーションディレクトリにあります。アプリケーションディレクトリとは、Movable Type をインストールしたディレクトリで、mt.cgi があるところです。

HTMLUmask 0072
DirUmask 0072
HTMLPerms 0777

修正後、mt-config.cgi を保存して、元のディレクトリにアップロードし、メインページを再構築してください。

この設定を行っておけば、出力されるメインページや他のHTMLファイルおよびディレクトリのパーミッションを常に705にします。パーミッションを 775 にする場合は、

HTMLUmask 0022
DirUmask 0022
HTMLPerms 0777

としてください。

2.ファイル名の変更

テンプレートのメインページの編集画面を開き、「出力ファイル名」を index.html から index.php に変更して「保存」をクリックします。
もしファイル名が index.html のままになっていると、カスタマイズ終了後、ページを表示した時に

The MTPaginate tag only works within PHP documents!
Make sure that the document extension is .php and that your server supports PHP documents.

というメッセージが表示されますのでご注意ください。

3.XML宣言の修正

利用しているテンプレートによっては、メインページテンプレート、またはテンプレートモジュールの「ヘッダー」の1行目(またはどこか)に、

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

という XML 宣言が記述されているケースがあります(記述されていなければこの項目はスキップしてください)。

PHP化を行うと、サーバではこのXML宣言の行をPHPスクリプトとして誤認識してしまい、次のようなPHPエラー

Parse error: parse error, unexpected T_STRING in ~(省略)~index.php on line 1

となるか、500エラーが発生するか、真っ白なページが表示される可能性があります。

このような場合、前述のXML宣言を下記の内容に置き換えてください(ご利用になる際、リストに含まれる改行はすべて除去してください。)。
なお、他のアーカイブページ等も PHP 化されていることを前提にしています。

<MTUnless name="system_template">
<? php echo('
</MTUnless>
<?xml version="1.0" encoding="utf-8"?>
<MTUnless name="system_template">
'); ? >
</MTUnless>

よく分からない場合や、ページが表示されない場合は、このカスタマイズを行う代わりに、XML宣言自体を削除してください。

4.index.html の削除

トップページを index.html という出力ファイル名で再構築したことがある場合、index.html がサーバ上に残ります。このファイルが残っていると、

http://~/

という、最後が "/" で終了するURLの場合、html ファイルを優先に検索します。html ファイルが表示されるとページ分割は正常に動作しません。レンタルサーバの場合は任意のFTPソフトを使って index.html を直接削除してください

インデックステンプレートにはファイル名変更後に元ファイルを削除する機能はありません。

5.プラグインのダウンロード

MT Extensions より MTPaginate をダウンロード(ページ上の方にある「Download」をクリック)。ファイルは任意のフォルダ(デスクトップ等)に保存します。

6.プラグインのインストール

注:この情報はバージョン1.28のものです。
ダウンロードしたファイルを解凍し、その中の MTPaginate ディレクトリを下記のディレクトリ構成になるように plugins ディレクトリに丸ごとアップロードします。

plugins/MTPaginate/lib/MTPaginate.pm
plugins/MTPaginate/MTPaginate.pl

ブログ管理画面の「システム」→「プラグイン」で MTPaginate が表示されれば、プラグインのインストールは完了です。

プラグイン一覧

7.ページ分割の設定

ブログ管理画面より、「デザイン」→「テンプレート」→「メインページ」を選択し、ページ分割用タグを設定します。

テンプレート編集画面のテキストエリアに、リストのように青色部分を追加します。一見複雑にみえますが <MTEntries> の直前と </MTEntries> の前後に加えるだけですので MTEntries という文字列を検索して編集すると良いでしょう。

デフォルトテンプレート/配布テンプレート共通

    :
<MTPaginate>
<MTPaginateContent max_sections="5">
<MTEntries>
    <$MTEntryTrackbackData$>
    <$MTInclude module="ブログ記事の概要"$>
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">></a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>
    :

7.1 表示ブログ記事数の設定

リスト中の、

<MTPaginateContent max_sections="5">
<MTEntries>

にある

max_sections="5"

は、1ページに表示する最大ブログ記事数を設定します。ここでは5つのブログ記事表示する設定にしています。

また全ページ合計の表示ブログ記事数は、「設定」→「ブログの設定」→「ブログ記事」→「ブログ記事の表示数」で設定します。

「ブログ記事の表示数」を30にした場合、max_sections が1ページに5ブログ記事ずつ表示する設定になっているので、トップページは計6ページに分割して表示することになります。「ブログ記事の表示数」の値が max_sections より小さい場合はページ分割が行われません。

7.2 スタイルの設定

赤色の div 要素はスタイルを設定するために付与しています。必要に応じて下記のようなCSSをスタイルシートに追加してください。

.paginate {
    text-align: center;
    font-size: 9px;
}

設定が完了したら保存し、再構築します。 注:7項の作業を終えるまでページは確認しないでください。

8.ページリンクの設定

ページリンクは冒頭のスクリーンショットのように表示され、各ページへのリンクと現在のページから前後のページへジャンプするのリンク、および全ページを一括表示するリンクがあります。

各ページのリンクの現在のページはテキスト表示になります。また一番最初のページは「<」を表示せず、最後のページは「>」を表示しません。

サンプルリストではページリンクをページの一番下に表示するように配置していますが、ページの上に表示したい場合は、

     :
<MTPaginate>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>">&#65308;</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">&#65310;</a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
<MTPaginateContent max_sections="5">
<MTEntries>
   <$MTEntryTrackbackData$>
   <$MTInclude module="ブログ記事の概要"$>
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
</MTPaginate>
     :

としてください。ページの上下にページリンクを付与することも可能です。

注意点としては、必ず MTPaginate タグと MTPaginateContent タグの間に設定してください。誤って MTPaginate の上に設定すると再構築エラーになり、MTPaginateContent の下に貼り付けると再構築はできますが、何も表示されなくなりますのでご注意ください。

2008.04.25
カスタマイズ手順に PHP 化の手順を追加し、手順の順番を見直しました。

Posted by yujiro ReTweet This!
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


トラックバック

メインページのページ分割 for Movable Type 4 from 自転車少年になろう。
▽参考サイト小粋空間:メインページのページ分割 for Movable Type... [続きを読む]

Tracked on April 2, 2008 7:33 AM

blogのページ分割 from icecraft blog -旅と音楽とインテリア-
blogのphp化をするなら是非実施したいページ分割。 カテゴリーアーカイブにて... [続きを読む]

Tracked on June 23, 2008 10:28 PM

MTPaginateプラグインでページャー設置 from Shibuya Works | シブヤワークス
Six Apart - Movable Type プラグインディレクトリ: MT... [続きを読む]

Tracked on May 9, 2009 8:30 PM

メインページの次ページ化を施しました from ゆんたく沖縄:hiroのちゃんぷるーブログ
小粋空間さんのメインページのページ分割 for Movable Type 4の記... [続きを読む]

Tracked on July 6, 2009 3:46 PM
コメント

こんにちわ!はじめまして。

MT初心者のものです、どうぞよろしくお願いします。


以前から、現在作成中のブログに掲示板を埋め込みたいと考えてまして、日記のコメントを掲示板代わりにするという方法でやろうとしています。

MTPaginateのプラグインは使えるよ、って話もいろいろなサイトから情報を得たのですが、MT4 用の設定についてはあまり見つけることが出来ませんでした。

それで今日、このサイトにたどり着いたのですが、わかりやすくてとても助かっています。ありがとうございます。

ただ初心者なもので、それでもつまづいてしまい。。。。
アドバイスをいただけたらと思います!よろしくお願いします。

【症状】
上記の7項までの設定を行った後で、ページにアクセスすると「Internal Server Error」となる。

テンプレートの編集画面で「不明なタグ」として次のものが挙げられています。
<MTPaginateIfNextPage_>
<MTPaginateIfPreviousPage_>


【環境】
サーバサービス:さくらインターネット
PHPバージョン:PHP 4.4.8
MTバージョン:Movable Type version 4.1


よろしくお願いします。

[1] Posted by まっつん : April 22, 2008 12:09 AM

>まっつんさん
こんにちは。
ご質問の件ですが、ファイルのパーミッションを変更するという大事な手順がひとつもれてました。すいません。
ファイルのパーミッションを変更するには、以下の作業を行ってください。

mt-config.cgi を FTP ツールでダウンロードし、任意のエディタで開き、行末に以下の内容を追加してください。

HTMLUmask 0072
DirUmask 0072
HTMLPerms 0777

修正後、mt-config.cgi を保存して、元のディレクトリにアップロードし、メインページを再構築してください。
この設定を行っておけば、出力されるメインページや他のHTMLファイルおよびディレクトリのパーミッションを常に705にします。ただし、他のアーカイブページファイルも同じパーミッションになるので、すべてのアーカイブのPHP化(拡張子を.phpにする)が必要です。

それではよろしくお願い致します。

[2] Posted by yujiro : April 25, 2008 1:30 PM

yujiro様

度々の質問すみません。
私もまっつんさんと同様のエラーが起きます。環境も同様のさくらインターネットです。ためしに別サーバーで試したところ今度は下記のエラーがでてきました。

Parse error: parse error, unexpected T_STRING in /usr/home0/eaglehaslanded/virtual_html/test/index.php on line 1

T_STRING エラーの原因となりそうな、文字コードの変更、ソースの文法エラーなど試してみましたが解決できませんでした。

おいそがしい中恐縮ですが、「さくら」での解決方法などご教授いただけますと助かります。

ちなみに、「さくらインターネットの特性で、一旦フォルダやファイルを全部削除してから再構築する必要がある」との記述もあり、これも試してみましたが失敗に終わっています。

[3] Posted by eaglehaslanded : April 25, 2008 4:22 PM

yujiro様

まっつんさんへの返答と入れ違いになってしまったようですみません。

さくらインターネットの環境で、mt-config.cgiの修正手順を加えた流れで再度試みましたが、
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, support@sakura.ad.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.
依然としてこのようなエラーがでてしまいます。

ちなみに、使っているテンプレートは小粋空間のものです。
もしも、解決方法をご存知でしたらお教えくださいませ。

[4] Posted by eaglehaslanded : April 25, 2008 6:53 PM

>eaglehaslandedさん
こんばんは。
ご質問の件ですが、当サイトのテンプレートをご利用であれば、XML宣言は削除されましたでしょうか。
設定状況が分からない場合はFTPツールでindex.phpをローカルPCにダウンロードして、任意のエディタで開き、1行目を確認してください。
確認状況をご連絡頂ければ幸いです。

[5] Posted by yujiro : April 25, 2008 8:32 PM

yujiroさん

早速のレスありがとうございます。

テンプレートは小粋空間「template_4_0_utf8_1_8」を使わせてもらっています。

生成されたindex.phpを確認しましたら、
?xml version="1.0" encoding="UTF-8" ?
との宣言が書き出されておりました。

MT管理画面の「メインページ(index.html)」の記述には宣言文がなかったのでそのままにしておいたのですが、テンプレートモジュール>ヘッダーの一行目が
?xml version="1.0" encoding="<$MTPublishCharset$>" ?
となっていますので、
MTUnless name="system_template"
? php echo('
/MTUnless
?xml version="1.0" encoding="utf-8"?
MTUnless name="system_template"
'); ?
/MTUnless
※<>は省略
に置き換えれば良い、という理解でよろしいでしょうか?

よろしくお願いいたします。

[6] Posted by eaglehaslanded : April 26, 2008 9:27 AM

【追記】
『「さくらのレンタルサーバ」では、.htaccess に PHP_Flag や PHP_Value を指定せず、php.ini に設定してください。 .htaccess に記述した場合、Internal Server Error になります。 』
などとの注意書きがありますが、エラーとなんらかの因果関係はありそうでしょうか?

[7] Posted by eaglehaslanded : April 26, 2008 10:41 AM

>eaglehaslandedさん
こんにちは。
[6]の通り(3項の通り)にしてください。またはXML宣言を削除してもかまいません。
[7]の内容は今回の問題と因果関係はありません。
それではよろしくお願い致します。

[8] Posted by yujiro : April 26, 2008 1:43 PM

yujiro様

おかげさまで実装ができました。

ただし、さくらインターネットの場合、再構築するとInternal Server Errorとなってしまうため、新規ブログを構築する前にすべての作業を行い、新規構築しないとだめなようです(どなたかが同じようなことを書かれていましたがいつのまにかトラックバックがなくなっておりました)。

本当にありがとうございました。

[9] Posted by eaglehaslanded : April 27, 2008 7:19 AM

yujiro様

また、ひとつ問題がでてきてしまいました。
今まで機能していた、ブログ記事作成ページの画像挿入なのですが、ページ分割の全ページphp化以降、挿入自体は問題ないのですが、ポップアップ機能が動作しなくなりました。→internal server error

ちなみに書き出されているソースは、たとえば、下記です。

<p><a onclick="window.open('http://test001.sakura.ne.jp/test/data/2008/felicaXepop2.php','popup','width=715,height=536,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="test001.sakura.ne.jp/test/data/2008/felicaXepop2.php"><img class="mt-image-none" height="187" alt="felicaXepop.jpg" src="test001.sakura.ne.jp/test/data/2008/felicaXepop-thumb-250x187.jpg" width="250" /></a></p>

もしかしたら、さくらインターネット固有の問題かもしれないのですが・・・・?
本当に度々恐縮ですが、解決方法などご存知でしたらお知らせください。

[10] Posted by eaglehaslanded : April 27, 2008 4:45 PM

【追記】
MT4.1によって作成されたpopup用のphpファイルのソースは下記です。
felicaXepop2.php

<!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" id="sixapart-standard">
<body id="uploaded-image-popup" class="popup" style="margin: 0;padding: 0;">
<div id="popup-container">
<div id="popup-container">
<img src="http://test001.sakura.ne.jp/test/data/2008/felicaXepop.jpg" width="715" height="536" style="margin: 0;padding: 0;border: 0;" />
</div>
</div>
</body>
</html>

[11] Posted by eaglehaslanded : April 27, 2008 4:58 PM

>eaglehaslandedさん
こんばんは。
すいません。下の設定をmt-config.cgi に追加して、再度すべてを再構築してください。

UploadUmask 0072
UploadPerms 0777

これでうまくいかない場合、felicaXepop2.phpのパーミッションをFTPツールで確認してご連絡ください。
internal server errorが発生するのは、PHP実行時のパーミッション誤りが原因と思われます。
それではよろしくお願い致します。

[12] Posted by yujiro : April 28, 2008 3:04 AM

yujiro様

レスありがとうございます。
早速試しましたところエラーは解消いたしました。重ね重ねありがとうございます。

ちなみに、felicaXepop2.phpのパーミッションは705となっています。

[13] Posted by eaglehaslanded : April 28, 2008 11:44 AM

>eaglehaslandedさん
こんばんは。
ご連絡ありがとうございました。
無事に直ったようで良かったです。
ではでは!

[14] Posted by yujiro : May 1, 2008 2:09 AM
コメントする
greeting

*必須



ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Introduction
Entry Trackbacks
メインページのページ分割 for Movable Type 4
 [自転車少年になろう。] 04/02 07:33
blogのページ分割
 [icecraft blog -旅と音楽とインテリア-] 06/23 22:28
MTPaginateプラグインでページャー設置
 [Shibuya Works | シブヤワークス] 05/09 20:30
メインページの次ページ化を施しました
 [ゆんたく沖縄:hiroのちゃんぷるーブログ] 07/06 15:46
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

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

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.02