movabletype4: 2007年9月アーカイブ
ブログでサイトを作ろうと思ったとき、迷ったのがディレクトリ構成である。
どのディレクトリ(フォルダ)にどんな内容の記事をいれるか、作った後からいくらでもやり直しが効くのがブログのいいところだけれども、あまりパーマリンクを変えるのもどうだか。というわけで、考えた末、以下のようにした。
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と称しているという感じでしょうか。
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専用)を利用させていただいております。が。
ページの並び替えプラグインって、、、、。
テンプレート保存すると、以下のようなエラーがでることがある。
---------------------------------------------------------------
テンプレートの変更を保存しました。 テンプレートでエラーが見つかりました。
<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 タグ で検索すると、ほとんどがそうだ。でもしかし、記事を書き込むエントリーフィールドにあるタグはなんじゃらほい。とおもっら、さすが、小粋空間さんさんの解説はすごい。
movabletypeでは、日付順のディレクトリが作成されるが、個別エントリーのファイル名は、いささか変。
で、ファイル名を日付と時間に紐つけるようにし、ついでにディレクトリ構造も変えた。
個別記事もカテゴリごとのフォルダに保存するようにした。
参考になったサイト
Movable Type を始める前に設定しておきたい 10 の項目
Movable Type: アーカイブ・マッピングの変更方法
デフォルトの個別エントリーアーカイブから URI を変更する場合の注意点
(追記)
この変更をすると、MTEntryPermalinkタグがうまく働かないことが判明。
テンプレート「ブログ記事のメタデータ」「ブログ記事の概要」のMTEntryPermalink(何カ所かある)に、「 archive_type="Individual"」のオプションを付加してあげないといけない。その他にも同じタグがあれば、同様の処理に。
別に無理矢理拡張子を.phpにしなくても、.htmlのままで.htaccsessの設定で、phpを動作させることはできるけれども、さくらインターネットでは若干、テクニカルな考慮をしなければならないので、リニューアルにあたり、いっそのことすべての拡張子をphp化することとした。
- ブログの設定画面で、拡張子をPHPに設定
- テンプレートのindex.htmlとarchives.htmlの拡張子を.phpに変更
参考になったサイト
