image

02-07-10

PHPモジュール化

MT5では各モジュール、ウィジェットごとにサイバーサイドインクルードとして処理する設定を選択できるので
それを使って構築していたのだけど、ページの分割、ページ送りの関係で
メインページがhtmlでなくてはならなくなってしまったみたいなので対応することに。
いろいろやり方はあるんだろうけどMT3の頃からやっているやり方が慣れているのでそれでやってみる。
インデックステンプレートを新たに作成してside.phpとし、サイドバーモジュールの中身をまるまるコピーする。
で、それぞれのアーカイブテンプレートで
<$mt:Include module=”サイドバー”$>となっているところを
<?php
include(“../../side.php”);
?>
に変えてやる。
これで多分いけるはず。
追記
大丈夫じゃなかった。
カテゴリページも月別ページも最初のページは大丈夫なのだけど、
2ページ目以降サイドバーが表示されない。
mt-search.cgiなのだから普通にシステムモジュールに沿って、インクルードされるのかと思ったら
そうではないみたい。
仕方ないので
<?php
include(“../../side.php”);
?>
<mt:If name=”search_results”>
<mt:Include module=”サイドバー”$>
</mt:If name=”search_results”>
と併記させることに。ちょっと余計なタグがソースに残るけど
動作は問題ないのでまぁよいでしょ。

02-07-10

Movabletypeのページ送り機能4

カテゴリーアーカイブページと月別アーカイブページも同様に処理。
最初アーカイブテンプレートのカテゴリ別ブログ記事リストだけをphpからhtmlに変えてやってみたら
ブログのファイル拡張子はaspやphpにはできません
と、前回と同じエラーが出てしまってあせったが、
設定→アーカイブの設定でファイルの拡張子をhtmlに戻してやる(phpにしてあった)ことで無事動いた。
ひょっとしてと思い、もう一度カテゴリ別ブログ記事リストをhtmlからphpにしてみたところ、
それでも問題なく動いてくれた。
そこでこの状態でindex.htmlもphpに戻してみたが、そっちはうまくいかなかった。
まとめてみるとMTのページ送り機能は
・設定→アーカイブの設定→ファイルの拡張子はhtml
・メインページはhtml
・全てスタティック
という感じであれば動いてくれるみたいだ。これはよいかも。
メインページは必ず更新されるのでサイドバーの更新反映に関しては考えなくてよい。
それ以外はphpファイルでも問題ないことがわかったので、モジュールをphpでインクルードすればよい。
ということになる。
メインページとそれ以外のウィジェット、モジュールを用意するなり、
インデックステンプレートとして用意するなり、で対応は可能だろう。
とりあえず分割、ページ送りに関してはこんな感じで終了。
プラグインをあれこれ準備するよりもスマートだし、よいな。

02-07-10

Movabletypeのページ送り機能3

ためしにメインページの拡張子をhtmlにしてみたところ、
分割、ページ送り等ちゃんと動きました。
ただ、まぁ、各ウィジェットやらモジュールをphpインクルードで読み込む形にしてたので、
サイドバーが表示されなくなりましたが。
結局のところMT5自体のページ送り機能はスタティックで且つhtmlファイルでないと機能しない、
ということでよいのかな?
あっちを立てればこっちが立たず。
なんか混乱してきた。
ウィジェットもphpインクルードとして処理する、しないでちょっと動きが違ったり。
最近のブログ記事ウィジェットはサイバーサイドインクルードで処理すると
カテゴリアーカイブページでも全エントリーの最近の何件かを表示するけど、
サイバーサイドインクルードで処理しなければ、そのカテゴリ内の最近の記事何件かを表示する、とか。
普通に考えてみれば、あるカテゴリの記事を投稿したときに更新されるのは
インデックステンプレートと、そのカテゴリのアーカイブページなわけで、
あー、もう。混乱してきた。
ちょっと落ち着いてまとめてみると。
ページ送りが必要になってくるのは
・メインページ
・カテゴリアーカイブページ
・月別アーカイブページ
の三種類。
で、ウィジェットでなんでサイバーサイドインクルード処理を必要とするかといえば、
記事を投稿したときに再構築されないテンプレートにまで、その投稿による更新状況を反映させるため。
個別エントリーアーカイブは分割の必要が無いと思われるので、phpファイルのままでも大丈夫。
うーん・・・
インデックステンプレートを新たに作るなり何なりで対応できるかもしれないけど、
なんかこんがらがってきた。

02-07-10

Movabletypeのページ送り機能2

ためしにカテゴリーアーカイブページを分割してみたけど
ブログのファイル拡張子はaspやphpにはできません
とのこと。
えー。ファイルがphpだとだめなん?
現在設定→モジュールの設定でサイバーサイドインクルードをPHPインクルードにしてるのだけど…
あー。めんどくせー。

02-07-10

Movabletypeのページ送り機能

こちらを参考に。
ページ送りの機能がMT4.3ではついたそうな。
で、MT5でもできそうなのでやってみた。
結果は駄目。
ナビゲーションは表示されて、動いているかのようにも思えるのだけど、
Nextリンク、やページ数のリンクを押すと
エラーが発生しました。
aspやphpの出力ファイルにはできません

とのこと。最初サーバーサイドインクルードあたりの問題かと思ってそれを無効にしてみたけど、
結果は変わらなかった。
この方法は
1ページ目は静的に再構築し、2ページ目以降はアクセスがあった時点で動的に再構築する方法です。
また、ページ送りは検索(mt-search.cgi)の機能を流用して作られています。

とのこと。うまく動けば非常に理想的。
PerlDynamicとDivPagesを使うよりもスマートだと思うのだけど・・・
普通に検索してみたらサイドバーも含め全部表示されるのになんでエラーになるんだろう?
こちらのぺーじをみるとやはりメインページはうまく動かないような…
とりあえずアーカイブページを試してみるか。

02-07-10

DivPages – ページを分割

以前も使っていたプラグインですが、
現在のバージョン1.11はMT4用となっていてMT5には対応していません。
しかし、165行目の
$res = $ctx->_hdlr_entries($args, $cond);を
$res = $ctx->invoke_handler(‘entries’, $args, $cond);と書き換え、
433行目の
return ‘http://’ . $ctx->_hdlr_blog_host($args) . $uri;を
return ‘http://’ . $ctx->invoke_handler(‘bloghost’, $args) . $uri;と書き換えれば5.0では動くそうなので
やってみました。
結果、何も動かず。
タグの書き換え等全て確認したんだけど、まったくもって動いてくれませんでした。
エラーが出るわけではなく、まったく分割されないの。
MTDivPagesIfMultiタグで囲ったところがまったく表示されないし。
原因不明。そもそもPerlDynamicがちゃんと動いているかどうかが怪しくなってきた。
必要とされるファイルはちゃんと生成されているので動いているように思えるけど…
この状態で、
設定→投稿で表示される記事数を0にしてみたらなぜか全てのエントリーが表示され、
lastnで記事数を設定しても全然反映されない状態に。
ためしにデザイン→テンプレートでメインページのテンプレートをスタティックに戻してみたら、
なぜかMTDivPagesIfMultiタグで囲ったところが表示された。
しかし分割されているわけではない、というか、標準の表示のさせ方だと
リンク先がブログのページではなく、その上のウェブサイトのアドレスになっている。
ここまできてなんとなくサブドメイン関係でうまく言ってないような気がしてきたんだけど、どうだろ?
この原因を突き止めていこうとするとなんか大変そうなので、
他のやり方を試してみることに。
スタティックで分割するプラグインはいくつかあるけど、
それってまったくもって意味が無いように思えるし、どうにかダイナミックで分割、かつ、プラグインが使える
っていう状態にもっていきたいなー。
3.33のときはこの二つのプラグインで問題なくできたのに…

02-06-10

PerlDynamic-Perl版ダイナミック・パブリッシング

普通のレンタルブログなどではトップページに最新の記事が載っていて下のほうのリンクで
過去の記事にさかのぼっていくことができる。しかし、Movabletypeではできない。
ここら辺はとても問題に思えるのだけど。
そこでインデックスページ等を分割する、という必要が出てくるわけなのだけど、
唯単に分割してしまうと、記事を書くたびに分割されたインデックスページを全部再構築、
という、とてもやってられない事態になってしまうので、
あらかじめインデックスページ(メインとカテゴリぐらい)はダイナミックにしておかなければいけない。
MT自体にもダイナミックパブリッシングの機能がついているのだけど、
これを使うと使えなくなるプラグインが結構出てくる。
まったくもってどうかしてると思う。
それを避けるために以前のページから使わせていただいているこのプラグイン。
MT5にも対応していたのでしっかりと対処しておくことに。
説明はこちらこちら
初期化の際に「.htaccessファイルの書き換えに失敗しました。」というエラーが出たけど
FTPでみてみたらちゃんと.htaccessは書き換えられているみたいだった。なんなんだろ?
一応動いているみたいではあるけど…

02-06-10

サブカテゴリを折りたたむ

小粋空間さんから。
以前もやっていたのだけど、5でも特別問題なく。
カテゴリーアーカイブウィジェットを弄るかたちで。

02-06-10

SuperSort-カテゴリ/フォルダ/ブログ記事/ウェブページを並べ替える

以前もカテゴリの並び替えに使わせていただいていたプラグインがやたら機能アップしていました。
こちらから
以前のSortCategoriesだと並び替えの順序を本体のファイルに記入していたのだけれど、
管理画面で直接いじれるようになり、カテゴリだけでなくフォルダ、ブログ記事、ウェブページ、全部の
並び順を変える事ができます。
プラグインをインストールし、
ブログ記事→カテゴリとブログ記事で並び順を変えて
カテゴリーアーカイブウィジェットに
mt:TopLevelCategories sort_method=”SortCatFld::Sort”のようにモディファイアを付加して表示させる。
カテゴリ、フォルダの移動、削除時などMT標準の機能ではなく
このプラグイン側で操作する等、注意事項もいろいろあるみたいなので
サポートページをよくみること。

01-31-10

テーマとスタイル3

テーマの一覧をみるとデフォルトで
・クラシックブログ
・pico
・コミュニティブログ
・コミュニティ掲示板
・プロフェッショナルブログ
が並んでるわけなのだけど、クラシックブログとpico以外は適用できない、というか
themesフォルダをみても見当たらないわけなのだけど、これはなんだ?
バグ?
ためしにFTPでpicoフォルダを削除してみたら一覧からもpicoはきえたのだけど、
クラシックブログを除く3つに関してはフォルダの中にそれぞれのフォルダが無いので削除しようがないのだけど。
不愉快。
mtインストールフォルダ/themesに各テーマのフォルダが入っていて、
mtインストールフォルダ/mt-static/themesにスタイルが入っているというはずだと思うのだけど。