2007年9月アーカイブ
phpのmbstring.detect_order は、左から順番に判定をしていくようだ。
私の設定は、
mbstring.detect_order = eucJP-win,UTF-8,SJIS-win,jis
としていて、経験上、これが一番誤判定がでない。(と思う)。
以前は、
mbstring.detect_order = UTF-8,SJIS-win,jis,eucJP-win
とやっていて、eucのはずなのにSJISと判定されたり、UTFと判定されたりした。
(参考)
/halt/Snapshot - mb_detect_orderのautoがぬるい件
【環境メモ】
-----------------------------------------------------------
OS:Windows XP SP2
sever:Apache 1.3.37
php:php 5.2.4
pear 1.6.1:Mail 1.1.14,Mail_Mime 1.5.2,DB 1.7.13,XML_RPC 1.5.1
------------------------------------------------------------
php5.2.4からfatalエラーの時にhttp 500エラーを返すようになった。
Changed error handler to send HTTP 500 instead of blank page on PHP errors.だそうで。
なるほど仕様としてはアリなんだろうけど、デバック時には、普通にエラーの表示をして欲しい。
画面で出すのは研究中。誰か教えて欲しい。
とりあえず、php.iniにてエラーログを出す設定にしておく
log_errors = On
error_log = c:\php5\log\errorlog.txt
【環境メモ】
-----------------------------------------------------------
OS:Windows XP SP2
sever:Apache 1.3.37
php:php 5.2.4
pear 1.6.1:Mail 1.1.14,Mail_Mime 1.5.2,DB 1.7.13,XML_RPC 1.5.1
------------------------------------------------------------
Pear でのMailの送り方は、内部関数mail使用,sendemail(orラッパー)使用,smtp使用と3種類ある(参考:phpでメール送信[Pear::Mail])わけだが、sendmailで、こちらのPEAR::Mailを使ってメールを送信してみようの例でやってみたら下記症状がでた。
----------------------------------------------------
fromのアドレスにメールアドレス以外の文字(例えば名前)をいれるとき、Validation failed というエラーが出た。
---------------------------------------------------
なんじゃらほい。
Validation とは英和辞書によると「~の正当性を立証する」だと?
Pearのソースを眺める。あった。RFC822.phpに、_validatePhrase関数なるものが。
ああ、ここでRFC822に正当に対応(準拠)しているかどうか、というのを調べるのね。
Mailクラスには、function prepareHeadersという関数があるようだ。この関数は、配列に収まっているヘッダー情報をテキストの形に整形する関数。この関数は、fromヘッダを特別扱いしている。ユーザー指定のfromヘッダから、senderを抜き出して、 sendmail (他コマンド) -f(formアドレス)とやるよう。
さらに_validatePhraseにてfromヘッダのデータ(mailbox)をに対するRFC822準拠性チェックを行うのだが、ここで、当該ラインには、英数文字(atom)しか流さないように、チェックが行われており、当然にひらがなはひっかっかってエラーとなる。
つまりは、<メールアドレス>やダブルクオーテーションで囲まれた部分以外は、アルファベットでないとエラーを流す仕組み。
参考:http://www.mew.org/Newsletters/2.html
ああ、ダブルクオーテーション。。
アルファベットなら、ダブルクオーテーションなしで、通る。
日本語なら、ダブルクオーテーションがないとエラー。
つまり、先にmimeエンコード(&base64)しとけってことだ。
というわけで
$header['From'] = "ほげほげ<hoge@hoge.com>";
を
$header['From'] = "\"ほげほげ\"<hoge@hoge.com>";
と直して一件落着。。。ではない。
インターネットのお約束ではダブルクオーテーションの中といえども7bitで流さなくてはならない。これはsendmailラッパーが好意でmimeエンコードしてくれているだけで、こちらとしてはお行儀がよくない。
最初からRFCにきちんと準拠するには、sendmailに渡す前に、mimeエンコードしておかなくてはならない。
というわけで
$a="ほげほげ";
$def_encoding=mb_internal_encoding();
mb_internal_encoding(mb_detect_encoding($a));
$header['From'] = mb_encode_mimeheader($a)."<hoge@hoge.com>";
mb_internal_encoding($def_encoding);
本当は、1行が76文字以下でなければならないだが、mb_encode_mimeheaderがそれも処理してくれる模様。
あ、でも、fromだけでいいのか?ああ、fromは必須ヘッダだからか?
いや他のヘッダも本当は同様にしなくてはいけない。
他のヘッダーもちゃんとmimeエンコードしておかないとホントはまずい。。てことか。
今はマルチバイトコードのまま、sendmaneに渡しちゃっているんだ。。。
つまりRFC822に準拠していないメールも、親切なメーラーさんのおかげて読めるわけだ。
しかし、人の親切に頼ってばかりはいけないので、ちゃんとエンコードしましょうね。
自宅でのテスト用にwindowsにてサーバーを立ち上げて、sendmane(sendまね~る)という便利なソフトを使わせていただいてる。
通常のmail関数やmb_sendmailはこれで使えるのだけれど、PearのMailを使おうとするとどうしてもエラーがでていた。
apacheのsendmail_pathもちゃんとsendmane用に設定しているので、おそらくPearの方で、独自にsendemailをつついていると考えた。
で、ソースをよくみてみると、pear/Mail/sendemail.php の中にこんな記述が。
var $sendmail_path = '/usr/sbin/sendmail';
ありました、ありました。
これを
var $sendmail_path = 'c:\sendmane\sendmane.exe';に変更して一件落着。(パスはsendmaneのインストールディレクトリによって変わる)
と思って、もう少しソースをたどると
if (isset($params['sendmail_path'])) {
$this->sendmail_path = $params['sendmail_path'];
}
の記述が!
うっソースの修正なんぞしなくても、オプションで設定できたか。
なので、ソースをもとに戻す。そして、呼び出すほうにオプションを設定。
$mail = Mail::factory("sendmail");
だったのを
$mail = Mail::factory("sendmail",array('sendmail_path'=>'c:\sendmane\sendmane.exe'));
に修正。
これでこそ一件落着。
ちなみに、Mailを使ってメールする方法はこちらが丁寧。
http://www.s-memo.net/blog/2007/03/pearmail_1.php
(実はこちらに、オプションの説明があった。。。。)
【環境メモ】
-----------------------------------------------------------
OS:Windows XP SP2
sever:Apache 1.3.37
php:php 5.2.4
pear 1.6.1:Mail 1.1.14,Mail_Mime 1.5.2,DB 1.7.13,XML_RPC 1.5.1
------------------------------------------------------------
合格体験記集のカテゴリはアーカイブが他と違って特別仕様となっている。体験記以下にカテゴリを追加した場合は、以下のテンプレートを修正のこと。
【ブログ記事リスト】
<MTIfCategory name="合格体験記">
<MTSetVar name="spok_taikenki" value="1">
</MTIfCategory>
<MTIfCategory name="2006年度版">
<MTSetVar name="spok_taikenki" value="1">
</MTIfCategory>
<MTIfCategory name="2005年度版">
<MTSetVar name="spok_taikenki" value="1">
</MTIfCategory>
まことに個人的な覚書。
ブログでサイトを作ろうと思ったとき、迷ったのがディレクトリ構成である。
どのディレクトリ(フォルダ)にどんな内容の記事をいれるか、作った後からいくらでもやり直しが効くのがブログのいいところだけれども、あまりパーマリンクを変えるのもどうだか。というわけで、考えた末、以下のようにした。
root/index.php
root/archives.php
root/mt-contents/(各カテゴリフォルダ)/カテゴリアーカイブ
root/mt-contents/(各カテゴリフォルダ)/個別記事
root/mt-contents/pages/(各WEBページ)
(サイトトップ)
サイトトップはindex.phpとし、昔のトップページはindex2.htmlとした。
(カテゴリアーカイブ)
ブログにおいては日付をファクターとして分類することが多いが、cpa-labではあまり日付に意味はなく、カテゴリ別が一番の意味を持っているので、日付-カテゴリのアーカイブは作らないことにした。そのほうが再構築も速くすむし。
今回のリニューアルにあたり、昔のコンテンツをどうするかについて考えた。
外から各ページへダイレクトリンクをしていただいている場合もあるので、全部のコンテンツ移行が終わっても、原則としてそのまま残すこととした。でも、掲示板についてはスパムがひどく、そこは消去することにした。
各ページを新コンテンツにリダイレクトする、という手もあるが、ルートにかなりのコンテンツをおいていることもあり、.htaccsessの記述が多くなりすぎるということもあり、、、、、。
で、昔のindex.htmlはindex2.htmlに変更、あとは基本的にそのままのURLで残す。
以前のCPA-LABは、いきあたりばったりのディレクトリ構成で、たいへん汚いので、いつも整理したくなるのだけれども。。。
で、検索エンジンなどで直接、旧サイトに訪れた人のために、すべてのページに「このコンテンツは旧CPA-LABのものです。新しいサイトは、・・・・」という記述を入れることにした。
そのときに大活躍したのが、TextSSというフリーソフト。作者さんのサイトは閉鎖されたようで残念だけれども、<body>タグのすぐあとに、上記のコメントをすべてのhtmlファイルに挿入する、なんていう作業をあっというまにしてくれました。
携帯ページのアクセス解析はいろいろ難しい点がある。
javascriptに対応していない端末が多いせいであるけれども。。。
で、MT4iについては、「MT4i」での携帯ページのアクセスを解析する方法が大変参考になります。
が、私はちょっと違うアプローチにて試してみた。
使ったログ解析は、Research Artisan - リサーチアルチザン。
Mt4iのソースで</html>タグを探す。と、2カ所あった。どうも、後半はエラーメッセージ用のよう。
ということは前半が、フッターになるわけですな。
$data .= "</center></p></body></html>";
そこに解析ソースをぶち込んでみましょう。
my $spok_kaiseki="<img src=¥"http://www.research-artisan.com/userjs/noscript.php?h=2&user_id=XXXXXXXXXXXX¥" alt=¥"¥">";
$data .= "</center></p>$spok_kaiseki</body></html>";
ポイントは
- 変数の前にmy宣言を忘れずに
- ダブルクオーテーション(")を¥でエスケープするのを忘れずに(上記では全角表示だが実際は半角で)
- 変数名は何でもいいけど、他とダブらないように
このアクセス解析も、モバイルサイトについては、ページ毎の解析ができないので、他に何かいいのがないか物色中。
MT4iについては以下の本家本元にて。
前にDescriptionとExcerptの違いがあることを書いたわけだが、今回はLabelとTitle,nameの違いである。
例えば「タグの名前」と言った時に、TaglaLabelとTagNameは、どっちやねん、という疑念がわいてきたりする。(この2つについては、マニュアルに同一であることが書いてある。)命名の規則さえわかっていれば、マニュアルをみなくてもタグを打っていけるのですが、現実には、、、、、。
Movabletype4のタグの中で、Labelがついているのは、、、
MTTagLabel・・・特定のタグの名前
MTArchiveLabel・・・アーカイブの種類
MTAssetLabel・・・アイテムをアップロードした際のラベル(←説明になってない)
MTCategoryLabel・・・カテゴリ名
MTFolderLabel・・・フォルダの名前
ということらしい。どうもLabel=nameという感じのようですが、どうなんでしょう。
一方で、nameは、、、、
MTCategoryBasename・・・カテゴリのファイル名
MTPageAuthorDisplayName・・・ウェブページを作成したユーザーの表示名
MTTagName・・・特定のタグの名前(=MTTagLabel)
MTFolderBasename・・・フォルダのパスで設定した実際の名前
MTBlogName・・・ブログの名前
MTPingBlogName・・・トラックバックを送ってきたブログの名前
MTAuthorName・・・ユーザーのプロフィール設定で入力した『ユーザー名』
MTIndexName・・・インデックステンプレートの名前
MTProductName・・・システムの製品名
MTIndexBasename・・・各アーカイブの為に作られるディレクトリのインデックページのファイル名
MTAuthorDisplayName・・・ユーザーのプロフィール設定で入力した『表示する名前』
MTCommenterNameThunk・・・各ブログ記事のブログの名前
MTAssetFileName・・・アイテムのファイル名
MTCommenterName・・・コメント投稿者名
MTEntryBasename・・・ブログ記事のファイル名
MTEntryAuthorUsername・・・ブログ記事を作成したユーザー名
MTPageBasename・・・ウェブページのファイル名
MTEntryAuthorNickname・・・MTEntryAuthorDisplayNameと同じ
MTCommentName・・・コメント投稿時に入力された名前
なんとなく、nameはその名の通り、「名」という感じでしょうか。。。
で、titleとの違いは?
MTPageTitle・・・ウェブページのタイトル
MTFeedTitle・・・RSS Feed を持つウェブサイトへの名前
MTPingTitle・・・トラックバックのタイトル
MTFeedEntryTitle・・・ RSS Feed にある個別ページのタイトル
MTArchiveTitle・・・ブログ記事一覧アーカイブのタイトル
MTEntryTitle・・・ブログ記事のタイトル
わかったようで、わからんような。
まあ、titleとあるのは、さらに詳しい本文がついているようなnameをtitleと称しているという感じでしょうか。
朝にDNSを切り替えた、ら、今になって私の環境からは浸透してきたようにみえる。
なので、これまでサブドメインで構築していたサイトを独自ドメインでの再構築に切り替えた、ら、今後はgoogleアドセンスがおかしくなった。
アドセンスはヘッダーにてPHPを利用してコードを読み込んでいるのだが、そのURLがcpa-lab.comの絶対URLで記述されるようになっている。まだDNSが浸透しきっていないので、サイトを自宅から読み込むときにはいいのだが、レンタルサーバーからインクルードファイルをとりにいく場合には、まだ浸透していなようだ。
どうする、どうする。エラーでまくり。ワーニングでまくり。広告切るか。そこだけコード書き換えるか。
あ、旧サイトの同じディレクトに同じファイルをおいておけばいいんじゃない(読み込まれるファイルを)。
と、いうことで、そうしてみた、ら、解決、解決。
DNSが全世界に浸透すれば問題ないのだろうけど。過渡期の問題ですな。
Movabletype4では、新たにWEBページの概念が加わった。従来のエントリー(記事)ではなく、普通のウェブサイトのように、固定的なページをムーバブルタイプでいっしょに管理してしまおうというものだ。
この機能があったからこそ、ブログでサイトを作ろうという気になったわけだが。。。
しかしそこはブログソフト。ウェブページ機能といっても、「特殊なカテゴリ」として考えるのがしっくりくるようだ。
なぜならば。。。。。
MTPagesというブロックタグがある。これで、囲めば、すべてのウェブページ情報を引っ張り出せるというわけで、当然、グローバルナビゲーションとして、いつも、サイドバーに出しておきたいと考えた。
<!--page menu-->
<ul class="widget-list">
<MTPages tag="コーナートップページ" sort_order="ascend">
<li class="menu_page">
<a href="<$MTPagePermalink$>" class="spok_navi_link">
<img src="<$MTStaticWebPath$>images/spinner-right.gif" />
<$MTPageTitle$>
</a></li>
</MTPages>
</ul>
が、トップページと個別記事ではちゃんと表示されるが、アーカイブ(ブログ記事リスト)では、無視されてしまう。これでは、アーカイブページをみているときに、WEBページ情報が出せないではないか。
WEBページなのだから、別にアーカイブも何も関係ないだろうと思っていたが、どうしても無視される。
やっとこさサポートに問い合わせると・・・・
アーカイブページで、他の種類のアーカイブを表示されるには、MTArchiveList タグを使いなさいと。
ああ、WEBページというのも、アーカイブの一種として考えるのね、
というわけで、
<MTArchiveList archive_type="Page">
を使って、WEBページのグローバルナビゲーションは、なんとかなった、という次第。
まだ、続きが・・・・。
間にはさむのは、MTPagePermalinkではなく、MTArchiveLinkの方を推奨された。
ようはWEBページというカテゴリのアーカイブとして扱え、ということか。
これで何時間費やしたことか・・・・。
マニュアルに用例を充実されることを強く希望する次第。
------------
てなわけで、、、、
<!--page menu-->
<ul class="widget-list">
<MTArchiveList archive_type="Page">
<MTPages tag="コーナートップページ" sort_order="ascend">
<li class="menu_page">
<a href="<$MTArchiveLink$>" class="spok_navi_link">
<img src="<$MTStaticWebPath$>images/spinner-right.gif" />
<$MTArchiveTitle$>
</a></li>
</MTPages>
</MTArchiveList>
</ul>
なんぞ、をサイドバーに改めて組み込んだ、ら、、、、
トップページと個別エントリーに、WEBページ情報が重複して大量に!大量に!大変だ!大変だ!火事だ!火事だ!
という感じ。
ソースを見直して、ああ、すいません。まだMTPagesが入っていました。これは抜かな、いかんのね。ダブルトゥループみたいな。
一応、カテゴリアーカイブでも表示されるかどうかをみてみよう。ん、、、表示されていない。なんでやねん。ああ、MTPagesを抜いてなかったから、無視されたのね。
で、-------------
<!--page menu-->
<MTArchiveList archive_type="Page" tag="コーナートップページ" sort_order="ascend">
<ul class="widget-list">
<li class="menu_page">
<a href="<$MTArchiveLink$>" class="spok_navi_link">
<img src="<$MTStaticWebPath$>images/spinner-right.gif" />
<$MTArchiveTitle$></a>
</a></li>
</ul>
</MTArchiveList>
-----
ああ、トップページも落ち着いた、カテゴリアーカイブでも表示された、、、、
しかし、まだ何か変だ。項目が多い気がする。
ああ、グローバルナビゲーションには表示させたくないWEBページタイトルまで表示しちゃっているよ、、、、
tag="コーナートップページ"
が、効いてないのね。MTPagesでは使える tag="" は、MTArchiveList では使えないんだと。どうせいっちゅうねん。
------------
というけで
<MTPageIfTagged>
を使うことに。
<!--page menu-->
<ul class="widget-list">
<MTArchiveList archive_type="Page" sort_order="ascend">
<MTPageIfTagged tag="コーナートップページ">
<li class="menu_page">
<a href="<$MTArchiveLink$>" class="spok_navi_link">
<img src="<$MTStaticWebPath$>images/spinner-right.gif" />
<$MTArchiveTitle$>
</a></li>
</MTPageIfTagged>
</MTArchiveList>
</ul>
-------------
ふううう。ようやくなんとかなった感じ?
いや、まだだ。
なんか並び順がおかしい。sort_order="ascend" がページタイトル順になっているいよかん。アルファベットと異なり、日本語では、文字順は意味がない。
sort_by="created_on"
を加えました。これは私のミスでございます。
ん、、、、ん、、、、、
だめだよ。sort_order="ascend" sort_by="created_on"も効かねえよ。
文字順のままだよ。お~い。誰か助けてくれ~。
カテゴリの並び替えは、カテゴリーとフォルダを並べ替えるプラグイン(MT4専用)を利用させていただいております。が。
ページの並び替えプラグインって、、、、。
今後のための覚書
ロリポップ→さくらインターネット→さくらインターネットの別契約サーバーとサーバーを移転した。
MySQLでなくて 、SQLiteだからデータベースの移行が簡単!
ムーバブルタイプ4から新しくバックアップ機能がついたけど、手動バックアップで十分対応できる。
なんせ、ファイル1個をローカルにバックアップしておくだけ。
私はmt実行ディレクトリとmt-staticディレクトリをわけているので、そこは注意。
移転後は、mt-config.cgiの変更を忘れずに。
- /home/・・・・/cpa-lab/cgi-bin/mt 以下をコピー
- パーミッション変更(.cgi)
- /home/・・・・/cpa-lab/mt-static 以下をコピー
- /home・・/db/mt.db をコピー
- mt-config.cgiの中のパスを変更
- mt-check.cgiでチェック
- mt.cgi で起動後、ブログの設定→公開設定のパスを変更
- 再構築
(たまに、テンプレートが崩れるときがあるので注意する)
------携帯サイト Mt4i
*.cgiのパーミッション変更。
http://・・・・/cgi-bin/mt4i/mt4imgr.cgiにアクセスして、パスを変更
--------掲示板
*.cgiのパーミッション変更。
http://www.cj-c.com/cgi_s/cbbs.htm[public_html]┐
├ [cbbs] ┐(ロック/過去ログ/バックアップ/ログ自動生成機能を使う場合 [777 or 755])
│ ├ cbbs.cgi [755](このファイルにリンクします)
│ ├ cbbs.dat [666]
│ ├ set.cgi [755]
│ ├ srch.cgi [755]
│ ├ jcode.pl [755] (このファイルは他のCGIと共有できます)
│ ├ ccount.dat [666] (このファイルはカウンタ機能を使う時必要)
│ ├ rank.dat [666] (このファイルは発言ランクを使うとき必要)
│ ├ klog.log [666] (このファイルは過去ログ機能を使う時必要)
│ ├ [file] ┐(パーミッション[777]/ファイルをアップするディレクトリ/機能を使う場合)
│ │ ├ *.gif / *.gif... (各ファイル形式の画像)
│ │ ├ all.gif/hed.gif/new.gif/uph.gif(初期設定のまま画像でヘッダを指定する時)
│ │ └ index.html (空でも良いのでなるべく入れて下さい)
│ └ [icon] ┐(アイコン機能を使う場合)
│ ├ *.gif / *.gif... (各アイコンの画像)
│ └ index.html (空でも良いのでなるべく入れて下さい)
│
└ index.html
必要に応じてset.cgi変更
テンプレート保存すると、以下のようなエラーがでることがある。
---------------------------------------------------------------
テンプレートの変更を保存しました。 テンプレートでエラーが見つかりました。
<MTIfArchiveType>に対応する</MTIfArchiveType>がありません(11行目)。
---------------------------------------------------------------
ちゃんと対応してますよ(怒)。とどなってもしょうがないけれども、さっきと同じソースをエディタからコピペしたのに、なんでエラーがでるねん。10回に1回ぐらいはこのエラー。怖くてmovabletype上での編集はできず、すべて秀丸エディタで編集してから、全文をペーストするようにした。それでも、このエラーがでる。
たぶん私だけではないと思うのだけれども。。。。
編集画面のWIZWIGなんていらないから、正しく早く動くようにしてくれ~。
movabletypeでサイトを作ろうと思ったのは、実はこのMT4iの存在を知ったからでした。
なんせ、movabletypeは、UTF-8だし、そもそも携帯で閲覧するようにできていないので、他の携帯対応ブログシステムを探していたのです。しかし偶然、MT4iを知り、試しにインストールしてみると・・・・すばらしいソフトです。
CPA-LABでは合格体験記を掲載しているが、なんせみるのは受験生、時間がないから、電車の中で読んだりしたいだろうな、と思っていました。自分のサイトでPC用と携帯用とで、作り分けるなんて気の遠い作業をしなくてすみます。
MT4iのいいところは、すべて動的生成というところ。余分なファイルは一切作りません。
だから設置も簡単、3分でできました。
感謝、感謝。
ただし、PCのURLに携帯でアクセスしてもリダイレクトするような機能はないので、こちらで用意しなければなりません。そのうち時間をみつけてやりましょう。
movabletypeには、カテゴリやフォルダの「説明」であったり「概要」であったり、つまり、そのモノを説明するためのメタ情報をつけられるようになっていて、それをテンプレート内にタグを記述することで呼び出すことができます。
で、そのタグが。。。
ブログの概要は、<$MTBlogDescription$>
カテゴリの概要は、<$MTCategoryDescription$>
フォルダの概要は、<$MTFolderDescription$>
WEBページの概要は、<$MTPageExcerpt$>
記事(エントリー)の概要は、<$MTEntryExcerpt$>
トラックバックの概要は、<$MTPingExcerpt$>
ExcerptとDescriptionの2種類があるわけで、たいへんややこしい。
Description・・・記述、説明
Excerpt・・・抜き出し、概要
とのことで、一応使い分けがされている。。。
よ~くみると、なるほど、記事やWEBページは、「たくさんの情報→抜き出し」であって、カテゴリやフォルダは「なんの説明もないモノ←たくさんの言葉で説明する」という性質的な違いがあるよう。
だから、Excerptは、おおもとの情報から自動的に作ることができるけれども、Descriptionは、人間が改めて追加説明しないと絶対に作れない、ということなのだろう(推測)。
しかし、コーディングしていると、どっちも似たようなものであり、えっとDescriptionだっけ、Excerptだっけ、というのは、私の頭が悪いからだろうか。
movabletypeでタグというと、テンプレートに埋め込むタグのことを示すことが多い。movabletype タグ で検索すると、ほとんどがそうだ。でもしかし、記事を書き込むエントリーフィールドにあるタグはなんじゃらほい。とおもっら、さすが、小粋空間さんさんの解説はすごい。
大量に保存したクリップボード履歴を絞り込み検索して素早く貼り付け「eClip」
もうこれなしでは生きられない。というほど便利。とにかくコピーしておいて、あとから簡単に選んでペースト。
私は、ctr+pgdn のショートカットにしています。
movabletypeでは、日付順のディレクトリが作成されるが、個別エントリーのファイル名は、いささか変。
で、ファイル名を日付と時間に紐つけるようにし、ついでにディレクトリ構造も変えた。
個別記事もカテゴリごとのフォルダに保存するようにした。
参考になったサイト
Movable Type を始める前に設定しておきたい 10 の項目
Movable Type: アーカイブ・マッピングの変更方法
デフォルトの個別エントリーアーカイブから URI を変更する場合の注意点
(追記)
この変更をすると、MTEntryPermalinkタグがうまく働かないことが判明。
テンプレート「ブログ記事のメタデータ」「ブログ記事の概要」のMTEntryPermalink(何カ所かある)に、「 archive_type="Individual"」のオプションを付加してあげないといけない。その他にも同じタグがあれば、同様の処理に。
別に無理矢理拡張子を.phpにしなくても、.htmlのままで.htaccsessの設定で、phpを動作させることはできるけれども、さくらインターネットでは若干、テクニカルな考慮をしなければならないので、リニューアルにあたり、いっそのことすべての拡張子をphp化することとした。
- ブログの設定画面で、拡張子をPHPに設定
- テンプレートのindex.htmlとarchives.htmlの拡張子を.phpに変更
参考になったサイト
