Movable Type の PHP モジュール化の仕組みについて(その3:変更方法)
PHPモジュール化をする場合の具体的な変更方法です。
1.モジュールを引き込む元となるテンプレートの変更
これはメイン・ページや各アーカイブテンプレートが対象になり、以下の作業を行います。
1.1 インデックステンプレート(メインページ等)の場合
- 管理メニューの「テンプレート」をクリック
- インデックス・テンプレート欄より該当のテンプレートをクリックし、テンプレート内部のモジュール化したい部分を切り取ってメモ帳などにペースト(切り取った位置を忘れないようにコメントでマークしておくか、先に3を実施)
- テンプレートから切り出した部分を
に置き換え(filenameについては2、3項を参照)<?php readfile("filename"); ?>
- XML宣言の修正
- 出力ファイル名の拡張子を .php に変更
- 保存・再構築
- .htaccess対処(必要に応じて)
- 拡張子が .html で配置されている旧ファイルを削除(必要に応じて)
4.は、テンプレートの1行目にXML宣言
<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
がある場合、5.で拡張子を index.php にして表示すると、ページが真っ白になるか
Parse error: parse error, unexpected T_STRING in [...] on line 1
というようなエラーが表示されます。これはXML宣言がPHPとして誤解釈されてしまうための事象です。
これを回避するには、XML宣言を削除するか、
<? echo('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>') ?>
とPHPが解釈可能なフォーマットに変更してください。
5.は、例えばメインインデックスの場合
- index.html → index.php
に変更します。これを行わないと 3.でテンプレート内に記述したPHPスクリプトが動作しません。
6?8は2項の部品化が完了してから行ってください。6.は5.でファイル名を変更することによって検索エンジンからのアクセスや PageRank 等に影響を及ぼすため、必要に応じて .htaccess によるリダイレクト(?.html でアクセスされたら ?.php を表示すること)を行います。エントリーがある程度たまっている方は .htaccess を使われることをお勧めします。詳細については別の機会に記述します。
8.は、7.の対処が不要な場合、例えばファイル名が index.html かつURLにファイル名が指定されていない場合等に行います。index.html を削除する理由は、拡張子によってファイルアクセスの優先順位が異なるためです。
例えば、新しく index.php を生成しても同じディレクトリに index.html が残っていると、サーバは index.html に先にアクセスします。つまり一般的には .html や .htm が .php より優先される訳です(厳密にはサーバの設定に依存しますが一般的にはこのようになっています)。
なお index.html を削除する前に URLで http://~/index.php まで指定してファイルの正常性を確認されることをお勧めします。生成に失敗した状態で index.html ファイルを削除するとアクセスが全て index.php に流れてしまうためです。
1.2 カテゴリー・アーカイブ/日付アーカイブ/個別エントリーアーカイブの場合
下記の手順で変更します。
- 管理メニューの「ウェブログの設定」をクリック
- 次のページ右上の「アーカイブの設定」をクリック
- 「アーカイブ」欄にある「アーカイブ・ファイルのテンプレート」に青色部分
- 個別:<$MTArchiveDate format="%Y/%m/%d-%H%M%S"$>.php
- 日別:<$MTArchiveDate format="%Y/%m/%d/"$>index.php
- 月別:<$MTArchiveDate format="%Y/%m/"$>index.php
- カテゴリー:cat_<$MTCategoryID$>.php
- 変更後、保存・再構築します。
2.モジュールの作成
次に部品となる方のテンプレートを作成します。
- 管理メニューの「テンプレート」をクリック
- インデックス・テンプレートの右上にある「新しいインデックス・テンプレートを作る」をクリック
- 下記の項目を設定
- テンプレートの名前:任意
- 出力ファイル名:任意
- テンプレートの内容:アーカイブテンプレート等から切り出したメニューリスト等のMTタグをペースト
- 再構築オプション:チェック
以下は「最近のエントリー」をモジュール化する場合の例です。
- テンプレートの名前:最近のコメント
- 出力ファイル名:recentEntries.html
- テンプレートの内容:
<div class="sidetitle" id="entryname">
Recent Entries
</div>
<div class="side"id="entrylist">
<MTEntries lastn="10">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br />
</MTEntries>
</div>
「テンプレートの名前」は管理メニュー上で表示するだけのものですので日本語でもOKです。「出力ファイル名」はこのテンプレートが再構築された時、ローカル・サイト・パスに出力されるファイル名です。一応拡張子として「.html」を付与していますが、このファイルに直接URL指定してアクセスする必要がなければ「.txt」でも大丈夫です。なおこのファイル名が1項の元テンプレートに埋め込む filename になります。
「再構築オプション」はモジュール化で重要なキーとなる部分です。ここでは「チェック」にしていますが、具体的な内容は次回詳しく説明したいと思います。
3.パスについて
1項の filename の補足ですが、ファイル名にはパスが必要です。パスは絶対パス(ルートとなるディレクトリからファイルが配置されているディレクトリまで)または相対パス(参照元のファイルがある位置からファイルが配置されているディレクトリまで)で記述します。テンプレートと同じ位置にあればパス名は不要ですが、モジュールは各アーカイブから利用されるのが一般的ですので、一律絶対パスを用いるのが良いでしょう。
4.コメント・プレビュー/コメント・エラーでのインクルードについて
この項目は我楽さんより頂いたご質問の反映ということで急遽追加致しました。これらのテンプレートは実体が存在しない(CGIプログラムによるHTTPレスポンス)ため、設定方法が異なります。また現状ではPHPスクリプトが評価できる方法が不明であるため(環境設定に依存?)、このファイルからインクルードする場合は
<$MTInclude file="filename"$>
を用います。
5.PHPスクリプトをインクルードする場合
上記のサンプルではMTタグが記述され(て実体に展開され)ただけのファイルをインクルードしていますが、PHPスクリプトが記述されたファイルをインクルードする場合もあると思います。
例えば、いくつかのモジュールのインクルードをまとめた
<?php readfile("recentEntries.html"); ?>
<?php readfile("recentComments.html"); ?>
<?php readfile("recentTrackbacks.html"); ?>
という内容の中間的なモジュール hogehoge.php を想定します。この hogehoge.php をさらにメインインデックス等からインクルードする場合には、
<?php include("hogehoge.php"); ?>
と記述します。readfile はファイルを読み込むだけの関数ですが、include はファイルを読み込み、さらにそれをプログラムとして評価するための関数です。拡張子は実験したところ任意の名称で問題ないようですが、単体でPHPスクリプトの動作を確認する場合等を考慮して .php にする方が良いでしょう。
逆に言うと、PHPスクリプトが記述されていないファイルをインクルードする場合は
<?php readfile("?.html"); ?>
で大丈夫ということです。インクルードが何段にもなる場合は、インクルード元に近い方から include 関数を用いて、一番末端だけ readfile 関数または include 関数を使用、という構造になります。
以上です。
当初、「PHPスクリプトでないファイルの拡張子は .html でOKです」というオチにするだけの予定だったのですが、最初のサンプルで、
<?php include("http://?.html"); ?>
としていたところ、その1の Ogawa::Memoranda さんから頂いたコメントにある通り「PHPプログラムを含まないのであれば includeで読み込むのは得策ではありません」「サーバーサイドにあるファイルはURL指定する必要はありません」とのことで、記述を変更致しました。勉強不足、失礼致しました。あわせてご指摘感謝致します。
なお他のサーバにあるファイルを読み込む場合は上記のようなURL指定を行います。
ということでミイラ取りがミイラになりました。(つづく)
2006.03.17
XML宣言の修正について追記しました。
- Movable Type 4 の PHP モジュール化
- MTInclude タグによる SSI(サーバサイドインクルード)不要なインデックステンプレートのモジュール化
- .htaccess によるリダイレクト
- Movable Type の PHP モジュール化の仕組みについて(その4:再構築オプション利用方法)
- Movable Type の PHP モジュール化の仕組みについて(その2:具体的動作とMTIncludeとの違い)
- Movable Type の PHP モジュール化の仕組みについて(その1:概要)
- テンプレート・モジュールの利用
≫ PHPモジュール化 from blogっぱぐ。
PHPモジュール化してみました。 前々から興味はあったんですが、卒業も決まって暇... [続きを読む]
≫ PHPモジュール化のすすめ from Luna's*PaPa
前回のエントリーアーカイブのページ分割が・・・では見事に失敗してしまいましたが、今回はテンプレートのモジュール化についてです。 モジュール化に当たり、参考にさせ... [続きを読む]
≫ サイトまるまるMT化メモ 3.モジュール化 from KillerPierce
テンプレートを書いていると、同じパーツがいくつも出てきます。たとえば一番上のタイ... [続きを読む]
≫ MTテンプレートをPHPモジュール化 from Over 40
MTテンプレートのPHP化をしました。 運用中に平然と変更をやってのけるところが... [続きを読む]
≫ モジュール化 手順(最終回) from 通信販売記事∇blogブログ
ファイルのPHP化が済んだら、いよいよ本題の 『モジュール化』です。 ■■■ 参... [続きを読む]
≫ モジュール化とPHP化のトレードオフ from TENERE
Movable Typeの使い勝手を改良中です。 表示されるパーツをモジュール化... [続きを読む]
≫ リンク一覧のモジュール化 from Mistgrass Weblog
テンプレートのPHP化もやったことだし、モジュール化というのにチャレンジしてみ... [続きを読む]
≫ モジュール化 from 畳部屋哀歌
PHP化に続いて、モジュール化を実行します。モジュール化という言葉の意味と仕組み... [続きを読む]
≫ PHP化をさくらのサーバーで from HAPPY Manager Blog
PHPをCGIとして動かすサーバーなので パーミッションが644とかだとインター... [続きを読む]
≫ Movable TypeのPHP化。 from ケセラセラBrand-new!
テストブログで作ってみたら、エラー地獄に陥ってたのが嘘のように、あっさりPHP化... [続きを読む]
≫ phpモジュール化やってみました。(第2回:変更の仕方) from ネタを探して2万マイル!?
さて、第1回でphpモジュール化の意義とイメージができたと思います・・・多分。... [続きを読む]
≫ PHPモジュール化とページ分割 from I c e c r e a m - n e t . c o m
Icecream-net.comではヘッダー部分やサイドバーなど 各ページに共通... [続きを読む]
≫ MovableType構築メモ no.002 from rvLog.net
リンク部分のみphpモジュール化することに成功しました。 といってもまだメインペ... [続きを読む]
≫ MovableType構築メモ no.002 from rvLog.net
リンク部分のみphpモジュール化することに成功しました。 といってもまだメインペ... [続きを読む]
≫ MovableTypeをPHPモジュール化 from ツール・ド・もんち - Tour De MonChi -
今回、テンプレートを一新するのと同時に、MovableTypeをPHPモジュール... [続きを読む]
≫ 画像ポップアップでInternal Server Error from ツール・ド・もんち - Tour De MonChi -
今日、久しぶりに画像と記事をエントリーしたら想定外なことが発生。 この記事中のサ... [続きを読む]
≫ MovableType3.2のPHP化 from Balderdash#blog
再構築時の重みは、まだ大したことないんですが、 PHPにしないと使えないプラグインが多々あるので踏み切っ [続きを読む]
≫ テンプレートをPHPモジュール化?MovableType 3.2? from 白梟 's
以前書いたように、MovableTypeをPHP化はしていたのですが、テンプレー... [続きを読む]
≫ MTでのxml宣言文の記述方式 from webサイト構築 ナレッジ
MTでのxml宣言文の記述方式は通常通りに記述すると、 PHPのスクリプトと勘違... [続きを読む]
≫ MovableTypeのJavaScriptによるテンプレートのモジュール化を実験してみる from 双数姉妹HPリリースノート
Fenrir's BLog: テンプレート共通化とJavaScriptによる軽量... [続きを読む]
こんばんわー。^^
えっと、4番の方法でやってて、インクルードするファイルにPHPスクリプトが書いてあるんですよー。でエラーが出てしまうんですよね。
つまり、コメントプレビューテンプレートで、MTInclude を使用してモジュールを読み込ませているので表示はされるのですが、そのモジュール内に書かれているPHPスクリプト部分が動作しないのでそのままスクリプト文字が表示されてしまうというエラーになってしまうんですぅ。
>Border.さん
こんばんは。
ちょうどその事を書いてましたがエントリー出遅れました。
では次のコメントで?。
またまたお世話になります。
モジュール化自体は結構簡単にできました。今回 yujiro さんのエントリーで非常に役に立ったのは、特別なテンプレート(コメント・プレビューやコメント・エラー)でモジュール化する方法だったりします ^^;
普通にphpインクルードで呼び出しても、ダメだったのでモジュール化を諦めていたのですが、MTインクルードで呼び出す事により、無事に問題解決となりました。
他にも、検索用テンプレートもこの方法でモジュール化できます。
>Takeさん
こちらこそお世話になります。
記事参照ありがとうございました。
なるほど、検索テンプレートは気がつきませんでした。
情報ありがとうございます!
こんにちは。
コメントプレビュー等のテンプレートをPHP化するスクリプトを作りました。
PHPからmt-comment.cgi等を呼び出して、その出力をPHPで処理するという仕組みです。
http://www.h-fj.com/blog/archives/2005/09/16-161205.php
>壱さん
こんばんは。
情報ありがとうございます。
他のテンプレートと同様にPHPが使えるようになるというのはいいですね!
いつもお世話になっております。お手数おかけしますがサポートお願いします。yujiro様のエントリーの分割をしたいのもありまして、なんとか個別アーカイブのPHP化とPHPモジュール化をしたいのですが素人でもなんとかできるような解説等はして頂けないでしょうか?宜しくお願いします。
>panserさん
こんばんは。
お世話になります。
ご質問の件ですが、モジュール化についてはここの記事およひ関連記事でかなりかみくだいて書いているつもりです。
個別エントリーアーカイブのPHP化は、本記事の1.2項の3番目の「個別」の部分を設定すれば完了します(要するに個別エントリーアーカイブの拡張子を .html から .php に変更するだけです)が、もう少し具体的な不明点(どこまで理解されて、どの部分でつまづいているのか)におっしゃっていただけると助かります。
以上です。
それではよろしくお願い致します。
いつもお世話になっております。個別アーカイブをPHP化して「.htaccess」で自動転送しようと思い下記のように書込み設定したいのですがどうしてもHTMLからPHPへ自動転送してくれません。
(サーバーにHTMLが残ってると自動転送しないとの話しを見た事あるのでHTMLは削除して試してもだめでした)
「.htaccess」書込み内容
Redirect permanent /www/archives/.html /archives/.html
サポートお願いします。
昨日からPHP化した後の自動転送してますが相変わらず自動転送してくれません 多分「.htacess」の書込み内容が間違ってるのだと思うのであっちこっちで検索してみては試みますがいっこうにうまく転送してくれません。それと、また、不具合が発生しています。新規エントリーの投稿もできなくなってしました。全てが多分自動転送の設定がうまくできていないところからきてると思います。こちらに「.htacess」の内容を書込みたかったのですがタグは書込みできないみたいですね
ほんと、MTのカスタマイズは素人にはなかなか大変ですね。それに検索しても十分な説明の書かれたBlogもなかなかないしね 結構途中の説明が省かれていいるサイトが多いですね。
またまた、お手数おかけしますがサポートの程宜しくお願いします。
>panserさん
こんにちは。
ご質問の件ですが、コメントで書ける内容ではないので改めてエントリーします。
なお、PHP化によるリダイレクトについては多くの方が、我楽:PHP化とページ分割。を参考にされています。
以上です。
それではよろしくお願い致します。
こんばんは。
こちらの記事を参考にさせていただいて、php化がんばってます。
ここ2週間くらいずっとやってるのですが、試行錯誤の末、トップページ、個別、日別はphpでアクセスしてみたところ、きちんと表示されるようなので、大丈夫そうです。
ただ、月別、カテゴリーが、phpでアクセスしてみると、500エラーになってしまうのです。
色々調べてやってみたのですが、(出力フォーマットを変えてみたり・・・。)どうしてもうまくいきません。
404not foundのエラーではないし、FTPでサーバーの中を見てみると、確かにファイルは存在しているようです。
パーミッションも他のきちんと表示されるphpファイルと同じ属性になっています。
漠然とした説明で申し訳ないのですが、もし、お分かりになるようでしたら、ご教授願えないでしょうか?
よろしくお願いします。
トップ
http://keserasera.com/brandnew/index.php
個別
http://keserasera.com/brandnew/2005/11/28/165036.php
カテゴリー
http://keserasera.com/brandnew/blogpet/cat33/index.php
月別
http://keserasera.com/brandnew/2005/11/index.php
日別
http://keserasera.com/brandnew/2005/11/28/index.php
※個別、月別、カテゴリー別、日別のURLについては、参考に1つのものを取り上げていますが、全部同じ状態です。
>ゆっこさん
こんばんは。
ご利用ありがとうございます。
ご質問の件ですが、ネットで検索した限りではやはりどなたもパーミッションが原因のようで、それ以外では見つかりませんでした。
なお NG になるディレクトリにあった html ファイルのソースを拝借して、拡張子を php に変更してこちらのサイトで開いてみたところ、正常に表示されました。
あとは一旦ファイルを全て削除して再度再構築されてみてはいかがでしょうか(回復する根拠はありませんが…)。
サーバのログ(エラーログ)が参照できれば、エラーの原因が分かると思うのですが。
以上です。
それではよろしくお願い致します。
yujiroさん、こんばんは。
回答ありがとうございました。
色々色々やってみては再構築を繰り返した結果、なにやら、おかしいことになり、うまくいっていた固定リンクもエラーが出るようになってしまい、記事が読めない状態になってしまいました。
記事が読めないのは問題なので、phpの実験用にもうひとつブログを作って、そちらで、試してみることにしました。
そのために、そのブログ用にまたテンプレをお借りしました。
テスト用なので、記事はアップしないかもしれませんし、うまくいったらブログを消すかもしれませんので、BlogPeopleのユーザーリストには入れていただかない方がよいかもしれません・・・。
でも、一応、URL貼り付けておきます。
http://keserasera.com/test/
こんばんは。
何度もコメントすみません・・・。
上にコメントしましたが、テストブログを作成して、PHP化してみたところ、今までのエラーが嘘だったようにすんなりできました。
なので・・・うまくいかなかったブログを削除して、テスト用に作ったブログのパスを元のブログと同じものに変更して、そのまま使ってしまうことにしました。
とりあえず、うまくいったことのご報告でした・・・。
>ゆっこさん
こんにちは。
返事が遅くなってすいません。
とりあえずうまくできたようで良かったです!
どうも初めまして。Fear ウルフと申します。
こちらのテンプレートやカスタマイズを利用させて頂いて、いつも助かっています。
今回はちょっとご質問がありまして、コメントさせて頂きました。
この記事をがんばって理解して、ようやくphp化にはこぎづけました。
で質問なんですが、phpで読み込むモジュールファイルの参照ですが、相対パスは利用できないでしょうか?
例えばテンプレートの日別アーカイブですが、私の場合下記のようになっています。
php用モジュールファイル/archives/年/月/日/index.php
日別アーカイブからphp用モジュールを相対パスで考えると、「../../../../php用モジュールファイル」になると思います。
(同様の考え方でカテゴリーアーカイブはうまく行きました。)
ところが、テンプレート日別アーカイブからは月別も生成されているようで、月別アーカイブを開くと参照先が無くなってしまいます。
(月別の場合は一階層上がるので、「../../../」となると思います。そのため「../../../../」では都合が悪いのでしょう。)
なんとか月別アーカイブからも相対パスで動かすような方法はありませんでしょうか?
現状では参照先を「http:サイト/php用モジュールファイル」としています。同一サイト内で処理した方が負荷が少ないかなと思いまして。
非常にややこしい話なのですが、何か良い対処法があればお願い致します。
>Fear ウルフさん
こんにちは。
テンプレート&カスタマイズご利用ありがとうございます。
ご質問の件ですが、月別用と日別用のアーカイブを分割されるのが良いと思います。詳細はアーカイブテンプレート作成方法を参照ください。
あと勝手ながらBlogPeopleに登録させて頂きました。
それではどうぞよろしくお願い致します。
☆yujiroさん
>ご質問の件ですが、月別用と日別用のアーカイブを分割されるのが良いと思います。詳細はアーカイブテンプレート作成方法を参照ください。
なるほど、予め分けてしまうわけですね。
それならば相対パスでうまく行きそうです。
ご紹介にあずかった記事を見て試行錯誤に挑戦します!
>あと勝手ながらBlogPeopleに登録させて頂きました。
どうもありがとうございます。
どのタイミングでご連絡するか迷っていたので。(^^
お返事どうもありがとうございました。m(_ _)m
>Fear ウルフさん
こんにちは。
ご連絡ありがとうございます。
ご不明な点がございましたらご連絡ください。
ではでは。
yujiroさん こんばんは^^ はじめましてm(_ _)m
先日 初めてMT(3.2-ja-2)を使用しようと テンプレートをお借りし カスタマイズに挑戦しているのですが・・
どこから手をつけて良いか悩み 取りあえず・・・
サイドの折り畳み →PHP化と来ているのですが 何とかPHP化は出来ているかと思いますが カレンダーからのリンクとMonthly Archivesからのリンクがちゃんと出来ません...
スタイルシートが反映されないのです(TДT)
また 続きをよむをクリックした後のページでは 右サイドが下に落ちてしまっています...
色々試行錯誤しましたが お手上げです(´;ω;`)
何かアドバイス頂けたらと思いますm(_ _)m
>ぷちメルさん
はじめまして。
テンプレートご利用ありがとうございます。
ご質問の件ですが、こちらから拝見したところスタイルシートは反映されている(=トップページと同じスタイル)ようです。ブラウザのキャッシュファイルをクリアされてはいかがでしょうか。
また右サイドが落ちる件はテンプレートの
</div><!-- /entry -->
に対応する div タグがないようです。
あと勝手ながらBlogPeopleに登録させて頂きました。
それではどうぞよろしくお願い致します。
yujiroさんへ・・
おはよーございます^^
お返事ありがとうございますm(_ _)m
あれから 色々見てみたのですが 良くわからなくなってしまったので も一度最初からインストールして一からやり直した所・・ ちゃんと出来ました!!^^
これからも 小粋空間様で勉強しながら色々カスタマイズしていきますので どうぞ宜しくお願いしますm(_ _)m
>ぷちメルさん
こんにちは。
とりあえず解決されたようで良かったです。
また何かございましたらご連絡ください。
ではでは!
以前PHP化でも質問したものです。
その節は大変助かりました。
さて、早速includeタグを使おうと思ったのですがメインページなどは、includeタグできちんとサイドメニューやバナーが埋め込めるのですが、アーカイブページ(テンプレート→アーカイブ→エントリー・アーカイブ)にincludeタグを書いても反映されません。
●includeタグを使わなければそのまま表示される
●リフレッシュして一からやり直しても同じ結果
●メインページにも同じincludeタグを使っているが、メインページは正しく表示されている。
以上の理由から、タグ内容が間違っているとは考えにくいです。
アーカイブページにはincludeタグは使用できないのでしょうか?
>PHP太郎さん
こんばんは。
ご無沙汰してます。
ご質問の件ですが、具体的な設定内容をご連絡頂けますでしょうか(「includeタグ」は php の include または MTInclude(属性指定も含め)かによって回答内容が異なります)。URLもご連絡頂ければさらに適切に回答できるかもしれません。
アーカイブページで表示されないということですので、php の include 指定時のパスの問題ではないかと推測しています。
なおアーカイブページで設定できないということはありません。
以上です。
それではよろしくお願い致します。
以前ナビバー関係(だったかな?)でコメントしましたpokelaboです。お久しぶりです。
今回phpモジュール化に挑戦したのですが、
1行目のxml宣言が?で囲まれていてスクリプトと勘違いされエラー、?を消してみてもソースは出るがブラウザでは見えない・・・・という状況です。
よろしければどこか間違っているのかご教授願います。よろしくお願いします。
申し訳ありません、トラックバックされているサイト様を見回っていましたら
php echoを使えばよいとなっていましたので修正したら表示されました。ご迷惑をおかけしました
>pokelaboさん
こんばんは。
無事に解消されて良かったです。
この問題についてテンプレートのページやいくつかのエントリーに書いているのですがエントリーとして独立していなかったのでまた改めて記したいと思います。
ではでは。
yujiroさん、こんにちは。
このエントリーに直接関係するかは分かりませんが教えて頂ければ幸いです。
当該エントリー等を参考にphp化は成功したのですが、画像のポップアップ表示のエラー発生で困ってます。
たぶん、php化したのが原因だと思うのですが、MT管理画面から投稿・ファイルのアップロードでポップアップ表示を選択した場合、画像ポップアップのフレーム(枠)が*.phpで生成されてしまい(今までは*.htmlでした)、結果、サムネイル画像をクリックしたらInternal Sever Errorが発生してしまいます。
今までのように、ポップアップ画像のフレーム(枠)が*.htmlで生成される、又は、*.phpでも表示がされるような方法があればご教示頂きたくお願い申し上げます。
google等で検索をしているのですが、解決策が探しきれず悩んでいます(泣)
>もんちさん
こんばんは。
ご質問の件ですが、拡張子の変更を「設定」→「公開」→「アーカイブの拡張子」で行われている場合、上記の問題が発生するようです。
mt-config.cgi でファイルのパーミッションを変更されてエラーになっているようでしたら、インデックスページの拡張子は各インデックステンプレートの出力ファイル名、アーカイブページについては、「設定」→「公開」→「アーカイブマッピング」で拡張子を個別に変更された方が良いかもしれません。
以上です。
それではよろしくお願い致します。
yujiroさん、こんにちわ。
画像ポップアップの(フレームの)拡張子の件ですが、アドバイスどおりにやってみたら無事解決できました。
このエントリーにある、"1.2 カテゴリー・アーカイブ/日付アーカイブ/個別エントリーアーカイブの場合"のアーカイブマッピングだけを変更し、設定>公開>アーカイブの拡張子は変更しない(htmlのまま)と言うのが今回の問題解決につながったポイントでした。
yujiroさん、本当に有難うございました。今後とも宜しくお願いします。
ps.併せて"Lightbox JS で画像を表示する"も利用させて頂きました。
>もんちさん
こんにちは。
ご連絡ありがとうございました。
無事に解決されたようでよかったです。
ではでは!
こんにちわ。
この記事を参考にさせていただき、<?php readfile("?.html"); ?>でファイルを読み込ませることに挑戦しました。。。が、動かないので困っています。
具体的には
・http://whiteowl.ddo.jp/A.htmlを読み込ませたい
・ドキュメントルート直下のindex.htmlで読み込ませる事は成功
・カテゴリーや日付といったドキュメントルートにないページでは不可(表示されない)
といった感じです。
<?php readfile("hoge"); ?>のhogeの部分に、相対パスやhttp://?でURLを書いてもダメでした。またA.htmlのアクセス権を試しに777にしてみても無理でした・・。
もし解決方法をご存知でしたら教えていただけないでしょうか。
よろしくねがいします。
こんばんわ。
先日、コメントにて質問させていただいた件ですが、あれこれとやっているうちに無事解決できました!原因は相対パスの記述ミスでした。。../が一段多かったようです。まさに凡ミス。。
お騒がせして申し訳ないです・・
>白梟さん
こんばんは。
ご連絡ありがとうございました。
無事に解決されたようで良かったです。
原因も記入くださりありがとうございます。
ではでは!
始めましていつもこちらのサイトを利用させていただいておりますもっち?と申します。
今回はPHP化についてお聞きしたいのですが過去の質問や他のサイト、書籍などを見てもうまくいかなかったので質問させていただきます。
テンプレートのメインページの出力ファイル名をindex.phpに変更
ftpでindex.phpのパーミッションを755に変更
<? echo('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>') ?>に変更
それでhttp://ikimono.sakuraweb.com/cgi-bin/blog/index.phpに接続しようとしても
「500 Internal Server Error」
と表示されてうまくいきません
上記に書かれている原因はパーミッションのようですしよく原因がわからなかったので質問させていただきました
MovableTypeのバージョンは3.3-jaで
サーバーはさくらのスタンダードですのでPHPのりようは問題ないはずです
現在はブログが表示されないと困るのでhtmlに戻しています
ご多忙だとは思いますが何卒宜しくお願いします
>もっち?さん
こんばんは。
お世話になります。
ご質問の件ですが、まずはシンプルなPHPファイルが実行できるかどうかご確認ください。
確認方法は「PHP5のインストール」の7項にあります。
これが実行できれば index.php の問題で、実行できなければPHP環境になんらかの不具合があるという切り分けができます(後者はないと思っています)。
それではどうぞよろしくお願い致します。
早い回答ありがとうございます
上記のリンク先のHelloWorldと7.のテストを試してみましたが、やはり質問の時とおなじように500エラーが出てしまいます。
ということはPHP環境になんらかの問題があるということでしょうか?
宜しくお願いします
>もっち?さん
こんにちは。
ご質問の件ですが、フォルダのパーミッションは755または705になっておりますでしょうか(さくらインターネットのオンラインマニュアルにそのように記載されています)。
なおこれ以上のことは分かりかねますので、申し訳ありませんがさくらインターネットにお問い合わせください。
それではよろしくお願い致します。
こんにちは、いつもお世話になっております。
さて、この度、MT4へのアップグレードに挑戦しているのですが、『テンプレート「個別エントリーアーカイブ」の再構築中にエラーが発生しました: テンプレートタグMTArchiveDateでエラーが発生しました: MTArchiveDateを日付コンテキストの外部で利用しようとしました。』というエラーが出てしまいました。
私のBlogは、以前このエントリーを参考にPHPモジュール化しておりまして、おそらく「個別エントリーアーカイブ」にMTArchiveDateタグを使っているからだろうということまでは分かったのですが、どうすればいいのやら分かりません。
タグリファレンスでは、MTArchiveDateはMTArchiveList タグの中か、日付アーカイブの MTEntries タグの外側で利用できますとありますが、どうすればよいのでしょう?
アドバイスいただければ幸いです。
>kazuさん
こんばんは。
お世話になります。
ご質問の件ですが、とりあえず被疑箇所と思われる、MTArchiveDateを使っているタグがありましたら、それをテンプレートからはずして再構築を実行してみて頂けますでしょうか。
まずは問題となる部分を切り分けてみましょう。
それではよろしくお願い致します。
yuriroさん、こんばんは。
早速ありがとうございます。
そうですね。切り分けを先にやらないといけませんでしたね。
で、早速やってみたのですが、やはり個別エントリーアーカイブの中のMTArchiveDateの部分を削除すると問題なく再構築は実行できましたので、やはりここにこのタグを使用していることだけが問題のようです。
>kazuさん
こんにちは。
MTArchiveDateの代わりにMTEntryDateを使ってみてはいかがでしょうか。
それではよろしくお願い致します。
yujiroさん、こんばんは。
MTEntryDateであっさり解決してしまいました。
お恥ずかしい限りです。
ありがとうございました。
>kazuさん
こんにちは。
ご連絡ありがとうございました。
無事に直ったようでよかったです。
ではでは!
yujiroさん、こんにちは。
いつも勉強させていただいてます。
とっても初歩的な確認で申し訳ないのですが、MTブログの設定→全般→モジュール設定で「サーバーサイドインクルード 」にて「PHPのインクルード」を選択しなければならない、というわけではないですよね?
そういう設定にする、とは記事内では書かれていないのですが、そこでいう「PHPのインクルード」とこちらでいってる「PHPをモジュール化してインクルード」って全然別物なのですよね?
初歩的な質問&見当違いの質問で申し訳ありません。
>まちもとさん
こんにちは。
ご質問の件ですが、おっしゃるとおり、このエントリーはMT管理画面の「PHPのインクルード」を選択する話とはまったく別物です。参考までに、この記事は2005年に投稿したもので、その時点のMTバージョンは3でしたので、管理画面に「PHPのインクルード」という項目もありませんでした。
記事を参照される際には、エントリーの投稿年月をちょっと気にしてもらえるといいかもしれません。MTの各機能がいつの時点で追加されたのかについては、MTのバージョン別カテゴリや当ブログ内の検索でヒットすると思いますので、その記事の投稿年月と参照されている記事の年月を比較していただけるとありがたいです。
それではよろしくお願い致します。
yujiroさん、こんにちは。
返信ありがとうございます。
もしかしたら、あまりに基本的なことだから書いてないのかも・・・と思いながら、古い記事とわかりつつ質問させていただきました。すみません。
でもお陰様でスッキリしました、ありがとうございます。