メインページのページ分割 for Movable Type 4
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 のままになっていると、カスタマイズ終了後、ページを表示した時に
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$>"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">></a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
<MTPaginateContent max_sections="5">
<MTEntries>
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
</MTPaginate>
:
としてください。ページの上下にページリンクを付与することも可能です。
注意点としては、必ず MTPaginate タグと MTPaginateContent タグの間に設定してください。誤って MTPaginate の上に設定すると再構築エラーになり、MTPaginateContent の下に貼り付けると再構築はできますが、何も表示されなくなりますのでご注意ください。
2008.04.25
カスタマイズ手順に PHP 化の手順を追加し、手順の順番を見直しました。
- Movable Type 7のコンテンツデータ(コンテンツタイプアーカイブ)をページ分割する方法
- Movable Typeでブログ記事やウェブページをページ分割する方法
- Movable Typeの「最近のブログ記事」をページ分割する
- PageButeプラグインでページ分割がないときにナビゲーションや(X)HTMLマークアップを表示しない方法
- Movable Typeのダイナミックパブリッシングでのページ分割ナビゲーションの不具合を解消する
- Movable Type 5のダイナミックパブリッシングでのページ分割について
- Movable Type のページ分割でページ番号を title 要素に表示する
- Movable Type のページ分割によるナビゲーションの前後ページ表示を絞り込む(改)
- ダイナミックパブリッシングによるページ分割
- コメントのページ分割 for Movable Type 4
- PageBute プラグインによるページ分割
- Movable Type のページ分割によるナビゲーションの前後ページ表示を絞り込む
- アーカイブページのページ分割 for Movable Type 4.1
- ページ分割の Ajax 化
- 検索結果のページ分割(3.3x 版)
≫ メインページのページ分割 for Movable Type 4 from 自転車少年になろう。
▽参考サイト小粋空間:メインページのページ分割 for Movable Type... [続きを読む]
≫ blogのページ分割 from icecraft blog -旅と音楽とインテリア-
blogのphp化をするなら是非実施したいページ分割。 カテゴリーアーカイブにて... [続きを読む]
≫ MTPaginateプラグインでページャー設置 from Shibuya Works | シブヤワークス
Six Apart - Movable Type プラグインディレクトリ: MT... [続きを読む]
≫ メインページの次ページ化を施しました from ゆんたく沖縄:hiroのちゃんぷるーブログ
小粋空間さんのメインページのページ分割 for Movable Type 4の記... [続きを読む]
≫ ページ分割 from チュートハンパな世界
それほど記事が多い訳ではないのですが、1ページに表示できる記事がげんていされてし... [続きを読む]
≫ MTPaginate ページ送り from CHOCOLATE OFFICER
MTの標準テンプレートにインデックスのページ送りがないなんて、、、インデックスから過去のブログ記事をさかのぼって見れないのは不便なので、ページ送りの設定方... [続きを読む]
こんにちわ!はじめまして。
MT初心者のものです、どうぞよろしくお願いします。
以前から、現在作成中のブログに掲示板を埋め込みたいと考えてまして、日記のコメントを掲示板代わりにするという方法でやろうとしています。
MTPaginateのプラグインは使えるよ、って話もいろいろなサイトから情報を得たのですが、MT4 用の設定についてはあまり見つけることが出来ませんでした。
それで今日、このサイトにたどり着いたのですが、わかりやすくてとても助かっています。ありがとうございます。
ただ初心者なもので、それでもつまづいてしまい。。。。
アドバイスをいただけたらと思います!よろしくお願いします。
【症状】
上記の7項までの設定を行った後で、ページにアクセスすると「Internal Server Error」となる。
テンプレートの編集画面で「不明なタグ」として次のものが挙げられています。
<MTPaginateIfNextPage_>
<MTPaginateIfPreviousPage_>
【環境】
サーバサービス:さくらインターネット
PHPバージョン:PHP 4.4.8
MTバージョン:Movable Type version 4.1
よろしくお願いします。
>まっつんさん
こんにちは。
ご質問の件ですが、ファイルのパーミッションを変更するという大事な手順がひとつもれてました。すいません。
ファイルのパーミッションを変更するには、以下の作業を行ってください。
mt-config.cgi を FTP ツールでダウンロードし、任意のエディタで開き、行末に以下の内容を追加してください。
HTMLUmask 0072
DirUmask 0072
HTMLPerms 0777
修正後、mt-config.cgi を保存して、元のディレクトリにアップロードし、メインページを再構築してください。
この設定を行っておけば、出力されるメインページや他のHTMLファイルおよびディレクトリのパーミッションを常に705にします。ただし、他のアーカイブページファイルも同じパーミッションになるので、すべてのアーカイブのPHP化(拡張子を.phpにする)が必要です。
それではよろしくお願い致します。
yujiro様
度々の質問すみません。
私もまっつんさんと同様のエラーが起きます。環境も同様のさくらインターネットです。ためしに別サーバーで試したところ今度は下記のエラーがでてきました。
Parse error: parse error, unexpected T_STRING in /usr/home0/eaglehaslanded/virtual_html/test/index.php on line 1
T_STRING エラーの原因となりそうな、文字コードの変更、ソースの文法エラーなど試してみましたが解決できませんでした。
おいそがしい中恐縮ですが、「さくら」での解決方法などご教授いただけますと助かります。
ちなみに、「さくらインターネットの特性で、一旦フォルダやファイルを全部削除してから再構築する必要がある」との記述もあり、これも試してみましたが失敗に終わっています。
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.
依然としてこのようなエラーがでてしまいます。
ちなみに、使っているテンプレートは小粋空間のものです。
もしも、解決方法をご存知でしたらお教えくださいませ。
>eaglehaslandedさん
こんばんは。
ご質問の件ですが、当サイトのテンプレートをご利用であれば、XML宣言は削除されましたでしょうか。
設定状況が分からない場合はFTPツールでindex.phpをローカルPCにダウンロードして、任意のエディタで開き、1行目を確認してください。
確認状況をご連絡頂ければ幸いです。
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
※<>は省略
に置き換えれば良い、という理解でよろしいでしょうか?
よろしくお願いいたします。
【追記】
『「さくらのレンタルサーバ」では、.htaccess に PHP_Flag や PHP_Value を指定せず、php.ini に設定してください。 .htaccess に記述した場合、Internal Server Error になります。 』
などとの注意書きがありますが、エラーとなんらかの因果関係はありそうでしょうか?
>eaglehaslandedさん
こんにちは。
[6]の通り(3項の通り)にしてください。またはXML宣言を削除してもかまいません。
[7]の内容は今回の問題と因果関係はありません。
それではよろしくお願い致します。
yujiro様
おかげさまで実装ができました。
ただし、さくらインターネットの場合、再構築するとInternal Server Errorとなってしまうため、新規ブログを構築する前にすべての作業を行い、新規構築しないとだめなようです(どなたかが同じようなことを書かれていましたがいつのまにかトラックバックがなくなっておりました)。
本当にありがとうございました。
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>
もしかしたら、さくらインターネット固有の問題かもしれないのですが・・・・?
本当に度々恐縮ですが、解決方法などご存知でしたらお知らせください。
【追記】
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>
>eaglehaslandedさん
こんばんは。
すいません。下の設定をmt-config.cgi に追加して、再度すべてを再構築してください。
UploadUmask 0072
UploadPerms 0777
これでうまくいかない場合、felicaXepop2.phpのパーミッションをFTPツールで確認してご連絡ください。
internal server errorが発生するのは、PHP実行時のパーミッション誤りが原因と思われます。
それではよろしくお願い致します。
yujiro様
レスありがとうございます。
早速試しましたところエラーは解消いたしました。重ね重ねありがとうございます。
ちなみに、felicaXepop2.phpのパーミッションは705となっています。
>eaglehaslandedさん
こんばんは。
ご連絡ありがとうございました。
無事に直ったようで良かったです。
ではでは!