2007年8月 8日

Movable Type 4 リリース

ブログ業界標準とも言えるMovable Typeがバージョンアップした。
日本語版では初の大型アップデートとなる。
システムが一新され、様々な機能に対応できるようになったようだ。
目指すはブログツールという小さな枠組みではなく、CMSツールとしてあらゆるサイトを手軽に作れるようにするのかもしれない。
その手始めが今回のMT4というわけだ。

MT4で新たに加わった機能で一番嬉しいのは、画像ファイル管理システムだろう。
MT3ではこれがなく、非常に不便であった。アップロードされたファイル一覧が表示され、ワンクリックで挿入ができる。

これに劣らず嬉しい機能も加わった。編集中の記事を自動で保存する機能。
記事作成中に間違えて消してしまっても安心というわけだ。
実は私は、よくボタンを間違えて全消去してしまうことがよくあった。やっと救われる。

次に嬉しいのは、特に初心者にはうれしいWYSIWYGエディター搭載。
WYSIWYGエディターとは、ワープロ感覚で文章レイアウトを書き込める機能である。
いまどきワープロといっても分からない人も多いかな。タグを書く必要がなく、ボタン操作でレイアウトを操作できると思えば良いだろう。
裏で自動的にHTMLへ変換してくれるというものだ。

次に嬉しいのは、プレビューがまともになったこと。
実際に公開した場合のレイアウトがどうなるかが表示されるようになった。
今までは、簡易プレビューであって、表示されるレイアウトは実際と異なっていた。

CMSとしては、どこまでサポートされているかは不明なので省略。
公式サイトの説明ではCMSをアピールしてることから、これから便利になる気がする。
CMS(コンテンツ・マネージメント・システム)とは、簡単に言えばサイト管理機能。
ブログという使い方にこだわらず、あらゆるサイトの構築をサポートする機能である。
すなわち、MTでブログではなく、普通のサイトを作るということである。
今までのMTでもCMSとして使ってる人も多いが、本来の使い方ではないため面倒で、機能も不十分であった。

ということで、バージョンアップを検討中。

Posted by Nori at 19:24

2007年6月 8日

コメントスパム

コメント&トラックバック対策をしてから長らく”放置”した結果、かなり有効と判断。9割以上はカットできている模様。これだけカットできれば、残るたまに来るスパムはたまに消せば良いだけかな。

こういったスパム対策が広まると、今度はスパム対策の対策をしたスパムが来るようになる。ちょっとややこしいかな。そのために、やり方は公言しないようにと言われてきている。スパムの99%以上は海外からと思えば、おのずとやり方は見えてくるだろう。そして今ではMovableTypeの公式サイトからプラグインをダウンロードできるようになっている。
このプラグインは使った事無いが、おそらく私が導入しているのとほぼ同じだろうから、海外からのスパムに困っている人は導入すると良い。

しかしやはり、対策が広まってきたためか、気が付く外人も増えてきている。久しぶりにコメント一覧を見たら、そこそこスパムがきていた。でも対策前に比べれば遥かに少ない量だ。たとえイタチゴッコであっても、目に見えて効果があれば良しだろう。

増えてきたらさらに制限を厳しくしなくてはと思ったが、その前にアーカイブのテンプレートを直さなくては。表示がすざましく壊れている。

Posted by Nori at 14:26

2005年12月 2日

MTをCMSとして使おう

Movable Type (以後MT)とは、ブログツールの一つで、ブログを管理するために作られたソフトだ。
広告無しのブログの大半は、MTでブログを作成していると思っていいだろう。それだけメジャーで人気のあるブログツールである。

このMTは、無料で使えて、もっとも高機能なブログツールである。
有料ライセンスもあるが、個人で使う場合のほとんどは無料で大丈夫なはずだ。
(条件:1サーバーのみ。投稿者一人。個人サイト。他は全機能使用可能)

CMSとは、コンテンツマネージメントシステムの略で、簡単に言えば、サイトを作成管理するツールのことである。
ブログツールは、CMSの中でブログに特化したツールだが、だからといってブログにしか使っちゃいけないことはない。
普通にCMSとして優れた潜在能力がある。

では、MTを使って高機能な普通のサイトを作るヒントを紹介しよう。
対象は、最新のMT3.2以降である。(3.2から仕様が大きく異なっているため)
一気に紹介するから、ちょっと長いよ・・・・・。

MTはCGIで作られているため、CGI対応のサーバーに限られる。
マニュアル通りにインストールしよう。
大抵は、アップロードして、CGIファイルの属性を実行可能にセットするだけだ。

以下の説明は、実例をお見せできないので、ちょっと分かりにくいかもしれないがご勘弁を。
他の私のサイト(秘密)で使っているテクニックになる。

■ナビゲーション(パンくず)の設置

MT標準のテンプレートでは、各ページの上に

『前のページの名前  メイン 次のページの名前』

というように、ナビゲーションリンクが表示される。
ただのブログではこれで良いのだが、普通のサイトを作りたい場合、これは問題である。

今どのカテゴリを表示しているかの道しるべを表示すると便利だ。
大手サイトでよく見かける。

『メイン > 第一カテゴリ名 > 第二カテゴリ名 > 表示しているカテゴリ名』

これを俗に『パンくず』と言う。
こうすることで、サイト観覧が非常にスムーズになるだろう。
やりかたは、テンプレートの各アーカイブに記述すればよい。

・カテゴリーアーカイブ

<a href="<$MTBlogURL$>" title="&quot;<$MTBlogName$>&quot;メインページへ">メイン</a> >
<MTParentCategories exclude_current="1"><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a> >
</MTParentCategories ><b><$MTArchiveTitle$></b>

・エントリーアーカイブ

<a href="<$MTBlogURL$>" title="&quot;<$MTBlogName$>&quot;メインページへ">メイン</a> >
<MTParentCategory >
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
 > </MTParentCategory>
<a href="<$MTEntryLink archive_type="Category"$>"><$MTEntryCategory$></a> >
<strong><$MTEntryTitle$></strong>

■空の親カテゴリーのページ作成

パンくずを作った時の問題が、階層化したカテゴリの扱い。
エントリーを末端カテゴリにしか登録しな場合、浅い階層のカテゴリにはエントリーが無い状態となる。
そうすると、パンくずの便利さが半減。
『メイン>第一>第二>エントリー』
上記のパンくずで、第一にエントリーが無い場合、第一をクリックしてもページがありません。
よって、メインまで戻らないと他のエントリーが見れない。 とても不便だ。
これを解消する方法を紹介しよう。

まず、カテゴリアーカイブに、子カテゴリ一覧を表示するようテンプレート編集。
エントリーとパンくずの間に表示させればいいだろう。

<MTSubCategories>                                                
<MTSubCatIsFirst><ul></MTSubCatIsFirst>                    
<MTIfNonZero tag="MTCategoryCount">                                
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a>  
<MTElse>                                                                
<li><MTCategoryLabel>                                              
</MTElse>                                                                
</MTIfNonZero>                                                          
<MTSubCatsRecurse>                                                     
</li>                                                                    
<MTSubCatIsLast></ul></MTSubCatIsLast>                     
</MTSubCategories>

次に、題名本文ともに空のエントリーを投稿しよう。
これで、エントリー無しの子カテゴリメニューのみの表示が完成だ。
空エントリーは、そのカテゴリの説明等にしてもいいね。

■エントリーページで、同じカテゴリのエントリー一覧を表示

よく企業のニュース系サイトで見かける、エントリーの最後に関連記事一覧を表示する方法。
もっとも簡単なのは、同じカテゴリの記事一覧だ。
これは標準のMTではサポートしていないので、プラグインを使うことになる。

MTEntryCategoryEntries このプラグインで簡単に実現。
プラグインは、pluginフォルダにコピーするだけで、自動認識するからお手軽。

使い方は、エントリーアーカイブに

<h2><$MTEntryCategory$>に関連する記事</h2>
<ul>
<MTEntryCategoryEntries lastn="10">
  <li><a href="<$MTEntryPermalink$>"><MTEntryTitle></a></li>
</MTEntryCategoryEntries>
</ul>

■ちょっとしたこと

・各アーカイブから、日付や投稿者情報などの表示は削除しよう。
ブログじゃないから、普通は要らないだろう。
コメントは運営方針によるが、あったほうが何かと便利かもしれない。

・ブログもやりたい場合。
通常のアーカイブテンプレートとは別に、ブログ用のアーカイブテンプレートを作成しよう。
複数のアーカイブを生成する機能を利用する。
カテゴリリストからブログのカテゴリを除外し、別にブログカテゴリのリンクを設置しよう。

■エントリータイトルをパーマリンクしよう
たとえばメインテンプレートの場合。

<h3 class="entry-header"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>

このように、タイトルをパーマリンクへのリンクに変更することは、非常に有益だ。
カテゴリアーカイブも同じように変更しておくと良い。

■カテゴリやエントリーの順番
順番は、標準ではアルファベット順となる。
順序は変えられるが、どのみちソートなので普通に固定順序化は難しい。
エントリーの表示順序は投稿日時なので、この日時を操作して順番を制御するしかない。
ただしこの場合、更新履歴が使えなくなるので注意。(日付がめちゃくちゃになるからね)
カテゴリの場合、カテゴリ名を1.2.3.といった数字を先頭に書いて操作するのが簡単な方法だ。
この場合、CSSでリストの先頭の「・」を削除しておくように。
順番を気にしないならば、何も特に何もしなくて良いだろう。

■メインテンプレートを編集しよう。
標準ばブログ用なので、最新のエントリーが全て表示されてしまう。
なので、普通のサイトっぽくするため、エントリーの表示を消して、普通のサイトっぽく作ろう。

■トップページを普通のサイトっぽくする方法のヒント phpとの併用

標準のテンプレートをちょっといじるだけだと、とてもさびしいトップになりがち。
普通のカテゴリリスト表示しか思い浮かばない?それ以外に何をしようか?
phpが使えれば色々なことができるよ。
phpがまったくわからない人はごめんなさい。

カテゴリ名(もしくはエントリー名)の先頭に、アイコンをつけよう。
これもMTタグとphpの併用で簡単に可能だ。
MTタグでphpにカテゴリ名を渡し、phpでアイコンを埋め込めば良い。
JavaScriptでもできるが、なるべくphpの方が確実でよいだろう。
これで、複数カテゴリの記事一覧を表示した場合、どの記事がどのカテゴリなのかも一目でわかりやすい。
たとえば、こういうときに便利。

記事は、第二カテゴリに登録している。
第一カテゴリで記事一覧を表示。
この時、複数の第二カテゴリの記事がごっちゃに表示される。
記事タイトル名の先頭にカテゴリアイコンがあれば、どの第二カテゴリに属しているのかわかりやすい。
記事のカテゴリは<$MTEntryCategory$>なので、これをphpの変数に渡せばいいだろう。
たとえば

<img src="<?=$icon[<$MTEntryCategory$>]?>">

この場合、$iconの定義はテンプレートで別に定義して、includeして使うと管理が簡単だ。

phpを使えば、アイディア次第でMTの機能を大幅にアップグレードできる。
高機能なHPを簡単に管理するのにもってこいだ。

他には、大きな画像などを使ってスペースを埋めて大きく見せるのもいいだろう。

■テンプレートモジュール
以外と使われないこの機能。
テンプレートメニューにある、モジュール。
これは、CMSに欠かせない機能とも言える。(私は使っていないが・・・)
XoopsなどのCMS系ツールでは必ずあるもので、MTはちょっと低機能だが、使えないことは無い。
これは、ページ内容をブロックで分け、ページに埋め込むというもの。
MTの標準のメインテンプレートは、ずらずら全部書いてある。
もしテンプレートの内容が膨大になっていて、修正する時、この中から修正したい部分をさがすのは一苦労だろう。
通常のサイトの場合、php等で埋め込むのが一般的だが、phpが使えなくてもMTのモジュール機能で同じ事が可能というわけだ。
もしテンプレートの内容が膨大になる場合、使ってみるのも良いだろう。
また、複数のテンプレートに同じ内容を書く場合も、モジュールを利用すると管理が簡単になる。

■スタイルシートテンプレート
標準の設定では、再構築しないと反映されないスタイルシート。
中身を見ると、MTタグは使われていない。すわち再構築するのは無駄な行為となる。
『このテンプレートにリンクするファイル』のところに、『出力ファイル名』と同じファイル名を書いて、『再構築オプション』のチェックを外そう。
これで、保存するだけで適用され、再構築は要らなくなる。

このように、MTタグを使わないテンプレートは全て同じように設定しよう。

再構築の必要が無いので、ローカルで編集してアップロードした場合も、再構築無しに適用となる。

■他、便利な技

大きなサイトは普通、phpなりssiなりのスクリプトでファイルを埋め込む。
1ページを複数のファイルに分けて表示させるのが常識である。
MTでは、モジュール機能を使ってもいいだろう。
全ページ共通である、サイト上位の部分(サイトタイトル部分)と、最下部(コピーライト部分)の部分を別ファイルにするのだ。
こうすることで、1つのファイルを編集するだけで、全ページ適用となる。
ただし、モジュール以外の方法で埋め込んだ場合はMTタグが使えないので注意。
モジュールの場合は再構築が必要で、phpで埋め込む場合は不必要という違いも覚えておこう。

あと、MTの標準ではトップページのみにメニューがあるが、メニューを切り離してメニューテンプレート(もしくはモジュール)を作り、それを各アーカイブに埋め込むのもいいだろう。

 

以上、非常に長いエントリーとなってしまったが、MTでサイト作成ヒントの紹介終わり。

Posted by Nori at 17:04

2004年12月 5日

Movable Typeを複数設置

このブログをバージョンアップせず、新たなコンテンツを最新MTで管理する事にした。
そこで問題になるのが、MySQL使用時のテーブル名衝突。
MTが使うテーブル名は、新旧ともにmt_からはじまる名前なので、これを変えてやらねばならない。

やり方はいたって簡単。
全ファイルのmt_を別の文字に置換すれば良い。(大文字小文字を区別するよう注意)
手作業でやっていたら何時間もかかってしまうので、適当なツールで行おう。
私はEmEditorでこれを行った。

次に、そのまま普通にインストール作業となる。
インストールが完了し、管理画面に入れるようになったら、まだやることがある。
このままではデーターベースは何故か壊れている状態なので、最初期を行う。

『ウェブログの設定』を開き、そのまま保存を選び、再構築。
これで全てが機能するはずだ。

なお、この改造は自己の責任に置いてやること。

Posted by Nori at 01:40

2004年12月 3日

日付にリンク

ブログ内容からしてカレンダーはどうみて不要ってことで外した。~ しかし、日単位のページを残しておきたいので、エントリーの日付部分をリンクに変更。~ やりかたは簡単で、日付のリンクURLを <$MTEntryLink archive_type="Daily"$> とするだけだ。~ 少しでも多く検索にひっかかるようにする処置として捕らえていただきたい。
Posted by Nori at 06:05

2004年11月 8日

トラックバックとは

ブログは初めてまもないうちは、トラックバックとは何かが今一分からない人もいるだろう。~ そこで、トラックバックについて分かり易く説明されている記事を発見したので、見てみることをお勧めする。~ これは、すでにトラックバックを使い慣れている人にもお勧めだ。~ ・ [[3分でわかるトラックバック>http://kotonoha.main.jp/weblog/000255_trackback.html]]~ トラックバックの仕組みを3分間のフラッシュで分かり易く説明されている。~ トラックバックとは何かを知りたい人はこれを見よう。~ ・[[トラックバックの有効な使い方を考える>http://kotonoha.main.jp/2003/12/09trackback.html]]~ トラックバックのマナーについて書かれている。~ 非常によくまとめられているので、ブログユーザー全ての人に見ていただきたい。~ 当ブログはトッラックバック大歓迎なので、どんどん行ってくれると嬉しい。~ もちろん見に行きますし、場合によってはコメントやトラックバック返しもいたします。~ トラックバックで一番問題となるのはやはりSPAMだろうか。~ 関連記事へ一斉にトラックバックするツールが存在するが、これは使い方によってはSPAMとなってしまう。~ 「私の記事も是非見てください」という使い方(オリジナリティーがある記事)なら良いかもしれないが、内容の無い記事(他のどこにでも載ってる内容のみ)で一斉トラックバック(非リンク稼ぎ?)はSMAPとみなされるだろう。~ ブログのジャンルによってはローカルルールも存在し、便利なだけに取り扱い注意といったところだろうか。~ 「京に行ったら京に従え」精神で扱うよう心がけよう。~
Posted by Nori at 14:13

2004年5月14日

Movable Type 3.0登場!

いよいよ最新日本語版が19日に[[シックスアパート>http://www.sixapart.jp/000017.html]]からリリースされる。~ メジャーバージョンアップってことで、あらゆる面が一新されるもよう。
Posted by Nori at 22:02

2004年4月 8日

エントリータイトル一覧

カテゴリや月ごとのページを表示したとき、左の links 最上部に一覧をつけてみた。 これで便利かな?~
Posted by Nori at 21:05

エントリー一覧に上に戻るリンク

トップページなど、ページが縦長になると最上部に戻るのが大変だ。~ そこで、上に一発で戻るボタンをつけてみた。 ここで注意すべきは、どこに設置するか。~ エントリーごとだと、すこしうざったい感じがする。~ てことで、日ごとに最上部へ戻るリンクを設置することにした。 これを可能にするのが これ使って、エントリー要素内の最後に記入。 となった。 そして CSS で位置を調整するだけだ。

日毎にまとめて表示

カレンダーをクリックすると、エントリーごとの表示になる。~ これだと不便なので、一日ぶんまとめて扱えるようにする。 内容は、カレンダーをクリックするとその日のエントリータイトル一覧を表示。~ そしてタイトルをクリックすると、エントリー内容表示をやってみた。~ 「新しいアーカイブ・テンプレートを作る」で新たに Date-Based List Archive を作成。~ Date-Based Archive の内容をコピーし、
<$MTArchiveTitle$>
と、書き換えた。 次にBLOGの設定 > アーカイブの設定 で Daily をチェックし、テンプレートに Date-Based List Archive を指定。 リビルドして終わり。 さらに少しいじり、タイトル一覧でカテゴリも表示するようにした。
  • <$MTEntryTitle$>
  • <$MTEntryTitle$> [ <$MTCategoryLabel$> ]
  • に変更
    Posted by Nori at 20:46

    他サイトのPHPを埋め込む

    これはPHPの話題だが、MyBlogList等のサービスでこれを使うので書き留めておく。 サイトがhtmlならJavaScriptを使わなければならないのだが、phpにしていれば、php埋め込みが可能である。~
    ( ! ) Warning: include_once(URL) [function.include-once]: failed to open stream: No such file or directory in /home/webmeister/public_html/blog.webmeister-jp.com/movabletype/index.php on line 0
    Call Stack
    #TimeMemoryFunctionLocation
    10.0162112808{main}( )../index.php:0

    ( ! ) Warning: include_once() [function.include]: Failed opening 'URL' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /home/webmeister/public_html/blog.webmeister-jp.com/movabletype/index.php on line 0
    Call Stack
    #TimeMemoryFunctionLocation
    10.0162112808{main}( )../index.php:0
    これで他サイトのphpを値付きで実行できる。~ 同じURLを1ページで複数回呼び出す場合は、include('URL'); にすればよい。
    Posted by Nori at 03:55

    CSSファイルを直編集にする

    CSSファイルにMTの変数等を使うことは、普通は無い。~ なので、CSSをテンプレートにすることは無意味である。~ 余計な手間が発生するので、テンプレートを使わないようにした。~ テンプレート編集画面にて、リンクするファイルを styles-site.css にする。~ これでセーブ時に直接cssファイルを書き換える。~ リビルドが不要となったので、自動的に再構築する をオフにした。~
    Posted by Nori at 03:46

    ページを分割管理

    一つのページを複数のパーツにわけて管理する。 これにより、テンプレートが見やすくなり、リビルド時の負荷も軽減される。 まず、ページを html から php へ変更する。~ php が使えないサーバーなら、shtml を使うと良い。~ 管理画面でテンプレート編集にあるの出力ファイル名を、htmlとなっている物全てをphpにするだけだ。~ 次に、どのようにわけるか考えてみた。~ -bannerが収まる Header部。 -linksが収まる左メニュー部。 -links-leftとした右メニュー部。 -footerを新たに加えたページ最下部。 これら4つと、Main IndexであるContent類。~ これで、全ページを同じレイアウトにできる。~ Main Indexから該当部分を切り取り、新たに作った各テンプレートへコピーする。~ そして、切り取った部分には、対応する出力ファイル名を入れるだけだ。 たとえば、 となる。~ これを、各アーカイブテンプレートにも適応させた。~ ついでに、リビルド時の負荷軽減のため、エントリー時に更新する必要のないものは、自動的に再構築するをオフにする。~ このサイトでは、header部、links-right部、footer部がそれにあたる。~ まぁ、実際の負荷の割合は、やってもやらなくても同じだろうが、気持ちとして。~
    Posted by Nori at 03:43

    3列レイアウト

    標準の2列表示を、3列に変更した。 標準だと、div要素が content , links となってる。~ これを、 links , content , links-left としてみた。~ あとは、3つともCSSで float:left; を指定するだけだ。~ これだけだと、各要素の横幅が定まらないので widthを適当に記入した。~ ただし、最後の links-left のwidthは未記入。 記入しちゃうと色々不都合なので。~ 計算するのが大変だし、どれか一つの横幅を調節したら全て再調整になる。~ それに、ブラウザによって横幅の解釈が違うのだ。~ ウェブマイスター本館やスタイルシート倶楽部では全て指定してしまっている。~ そのため、PHPスクリプトでIEとNNとでスタイルシートを変えて対応している。~ ちなみにそのスクリプトは NNだったら、その変更点のみを収めたCSSを追加適応させるスクリプトだ。~ ヘッダにでも入れておくと良い。
    Posted by Nori at 03:26

    横幅を固定し、中央に寄せる

    まず、私が最初にやったことがこれ。 ■横幅を固定 全体を 新しいdiv要素に収める。~ たとえば、
    を の直下に置く。 の直前に
    を置くのも忘れずに。 横幅は width: ****px;で指定。 たとえば width: 900px; となる。 ■中央に寄せる margin-right: auto; margin-left: auto;
    Posted by Nori at 03:16