Archive for 3月, 2004

トラックバック:完結編?

土曜日, 3月 6th, 2004

 先ほど,リーセントトラックバックを表示する修正を行った.これだけではなく,さらに各エントリーの個別表示画面にもトラックバックを表示させるように修正を行うことにする.
 参考にしたのはトラックバック表示(BLOG質問箱)である.これはとても簡単で,Individual Entry Archiveに以下のソースを追加するだけでOKであった.

<!-- トラックバック表示 -->
<MTEntryIfAllowPings>
<div class="comments-head">Trackback</div>
<MTPings>
<div class="trackback-body">
<span class="trackback-post">
<b>Title:</b> <a href="<$MTPingURL$>" target="new"><$MTPingTitle$></a><br />
<b>Excerpt:</b> <$MTPingExcerpt$><br />
<b>From:</b> <$MTPingBlogName$><br />
<b>Date:</b> <$MTPingDate format="%Y.%m.%d"$>
</span>
</div>
</MTPings>
</MTEntryIfAllowPings>
<!-- トラックバック表示終わり -->

 さて,実はここで問題が発生する.先のBLOG質問箱には,こう書いてあった.

トラックバック表示がPermalinkに反映されるタイミングは、トラックバックを受けた後でそのエントリーにコメントを受けるなどしてリビルドされたときになります。

そのため,今度はこれを何とかしないといけない.これに関する情報はいくつかあったが,今回参考にしたのは,トラックバック着信で自動リビルド(HuntingGirledCollective)と,MTいじり(numalog)の二つであった.ソース記述の部分が微妙に異なっていたこともあり,今回は前者を特に参考にした.
 これも実は非常に簡単で,/lib/MT/App/Trackback.pmのソース部分(200行ちょっと越えたあたりかな)に以下のような記述を追加するだけである.なお,追加分は赤字で設定してある.

require MT::Blog;
my $blog = MT::Blog->load($blog_id);
$app->rebuild_indexes( Blog => $blog )
or return $app->_response(Error =>
$app->translate("Rebuild failed: [_1]", $app->errstr));

$app->rebuild_entry( Entry => $entry )
or return $app->_response(Error =>
$app->translate("Rebuild failed: [_1]", $app->errstr));

 これでトラックバック関係はほぼ大丈夫だろう.あとはトラックバックがたくさん来るのを待つだけ,か.

リーセントトラックバックを表示させる

土曜日, 3月 6th, 2004

 このサイトは弱小サイトなので,まだまだどこからもトラックバックがない.なので全然必要なさそうな機能ではあるが,もしだれかからトラックバックがあったときに困るため,リーセントトラックバックを表示させる機能を付けてみよう.
 知らない間にこのサイトも,PHP化してサイドメニューのテンプレートも別に作成し,includeで表示させている.そのため,サイドメニューのテンプレートを修正すればいいようだ.ちなみに参考にしたのはカスタマイズ vol.22(G@MANIA)である.このエントリーには,トラックバックとは何か?みたいなことからいろいろと,他のサイトも紹介しながら書かれているので,一読をおすすめする(ていうか自分で書くのはめんどくさい).
 さて,実際のカスタマイズ作業に入ろう.リーセントトラックバックを表示させることはどうやら簡単にできるらしいのだが,そのトラックバックがどのエントリーにつけられたものなのか,を表示させることができないようだ.そのため,専用のプラグインがあるので,早速利用させてもらう.MTの「最近のTrackback」にエントリーのTitleとPermalinkを!(一色政彦 WEB SITE)に,「MTPingedEntry」プラグインがあるので,それをダウンロードする.
 解凍後,MTをインストールしたディレクトリの「plugin」ディレクトリにアップするのだが,実はいままでpluginディレクトリには何も入っていなかったことを知らなかったよ・・・まあどうでもいいけど.
 その後は,テンプレートの修正.プラグインのくわしい仕様などは一色さんのサイトを見てほしいが,ちなさいとでは以下のようにしてみた.

<div class="sidetitle">
Recent TrackBacks
</div>
<div class="side">
<MTPings lastn="4">
<MTPingedEntry>
・<a href="<$MTPingedEntryLink$>"><$MTPingedEntryTitle$></a>
</MTPingedEntry><br />
├ <$MTPingBlogName$><br />
├ <a href="<$MTPingURL$>" target="_blank"><$MTPingTitle$></a><br />
└ <$MTPingDate format="%Y.%m.%d - %X "$><br />
</MTPings>
</div>

 いまのところはこれで十分だろう.自分で自分にトラックバックを送って,ちょっとさみしい感じのテストを繰り返してみたから,大丈夫だと思うし.

PukiWikiで改行

水曜日, 3月 3rd, 2004

 現在はRakuWikiを使っているのだが,少し不満がないわけでもない.たとえば,&now;で時刻を取得できるのだが,なぜか曜日が取得されなかったりしている.あと実はRakuWikiの特徴の一つであるフレームもそれほど魅力的ではない.その都度リロードしなければならない点を考えると,むしろめんどくさいとも思える.
 そこでもう一度PukiWikiに戻れないかと考えている.PukiWikiに戻るための大きな条件は,「改行が編集画面のまま反映されること」である.
 もちろん,wikiエンジンの作法として,改行を捉える必要はあるだろう.詳しくは分からないが,wikiでは「文章構造要素」を大切にしているためだ.そのため,改行は段落やブロックと明確に区別されるし,専用の記述タグも用意されている.
 でもここは日本.日本語に特化した形での入出力方法があっても良いと思う.日本の場合,いわゆるbrタグで改行をすることが多いし,一部ではHTMLではpタグを使用しないという流れもあるくらい.そもそも「段落」の概念が欧米のパラグラフとはまったく異なっている.そのためちなは,べつにbrタグを使えば良いんじゃないかな,と(多少楽観的に)考えている.悪貨は良貨を駆逐するという懸念もないわけではないが,しかしここは,日本語の文章により適応したスタイルを,日本から発信していく必要があるのではないか,と考えて,長文ではあるが自分の考えを述べてみた.
 さて,PHPを改造しなきゃイカンのか,などと気が滅入っていたのだが,実は改行に限れば,すでに対応されているとのこと.PukiWikiの開発日記(12月3日)に,それに関する情報が掲載されていた.

質問箱/344 入力時の改行の扱いについて再び
質問箱/280 改行がそのまま反映されないのか?
その他 処理の見直し
cvs:convert_html.php(v1.4:r1.58)
$line_break追加 改行を反映する(改行を<br />に置換する)とき1
cvs:pukiwiki.ini.php(v1.4:r1.52)

 なんかよく分からなかったけど,アップデートしたファイルが二つあるらしい.それぞれにリンクが張られていたので,そこへ飛び,一番新しいファイル(pukiwiki.ini.phpはv1.53,convert_html.phpはv1.61)をダウンロードし,ローカルでちょこっと編集した後アップしてみた.ただし編集したのはpukiwiki.ini.phpだけで,convert_html.phpには何も手を加えていない.
 するとどうだろう.見事に改行が反映されているではないか!なんかすごいというか,やっと当たり前に一歩近づいた,って感じがする.
 ところで今回,それ以上に驚いたのは,PukiWikiの開発者はかなりがんばっている,ということ.もしかしたらwikiページだから,誰かがやってくれているのかもしれないけど,それでもこうやって短いスパンでアップデート(バグフィックス)が出ているっていうことに驚いた.こうした点もPukiWikiの人気の秘密なんだろうなと思う.

Movable Typeでソースを表示

水曜日, 3月 3rd, 2004

 Movable Typeで,ページのソースを表示させることが多くなった.まあそれは,MTを設置している今だけかもしれないけど,いちおう引用(ちなさいとではblockquoteタグを利用)とは区別したいと考えている.
 それで,現在はpreタグを利用して表示させている.スタイルシートでpreタグの属性(?)をある程度指定しているので,エントリーにはタグを書くだけで良く,お手軽である.現在の設定は以下の通りである.なんか無駄に設定しているような気がするのはご愛敬.

pre {
FONT-WEIGHT:         normal;
FONT-SIZE:           80%;
COLOR:               #000000;
margin-bottom:       5px;
margin-top:          5px;
margin-right:        5px;
margin-left:         5px;
background:          #DDDDDD;
PADDING-RIGHT:       5px;
PADDING-LEFT:        5px;
PADDING-BOTTOM:      5px;
PADDING-TOP:         5px;
border-style:        solid;
border-color:        #BBBBBB;
border-top-width:    1px;
border-right-width:  1px;
border-bottom-width: 1px;
border-left-width:   1px;
}

 preタグで囲まれた部分は整形済みテキストと認識され,改行やスペース,タブなどもそのまま等幅フォントで表示されるため,ソースの表示などには非常に有効だ.ところが,MTでエントリー内にpreタグを記述すると,少なくともちなさいとではおかしなことが起こる.もちろん,なんか表示するときに白抜けしたりすると言うこともあるのだが,それ以外にもいくつかおかしなことが起こる.たとえば,以下のようなソースを表示させてみる.

<pre>
text_1
text_2
</pre>

<表示>


text_1
text_2


と,このようになぜか一行あきで表示されてしまうのだ.よくわからないので,仕方なくエントリーに記述するときに,

<pre>text_1<br />text_2</pre>

と無理矢理1行で記述するしかなさそう(しばらくこれでやっている).
 これ以外に,一行が長くなると表示側も大変なことになるという点.まあこれはpreタグの宿命みたいなモノだからはっきり言って仕方ないのだが,なんとか回避策はないものだろうか.これでは不便だと思い,今度はスタイルシートでcodeというスタイルを設定し,pタグと一緒に設置してみた(<p class="code">)が,スペースやタブがうまく表示されず,階層化して表示させたい場合に不都合である.次に,codeタグを使ってみたが,codeタグは基本的に「ここがソースですよ」と宣言するだけのものなので,結局問題の解決にはなっていない.いろいろなblogサイトを見てみたが,みんな結構適当にblockquoteタグを使ったり,気にせずpreタグを使ったりしていた.さて,どんな方法がいいのやら.
 ここで,1行空いてしまう点について,ソースをコピーしてペーストしてみると,どうも1行空いているわけではないようだ.テキストエディタにペーストするときちんと1行空かないで表示されている.ということは,純粋に表示の問題だけ,と言うことか.ということで現在のところは,スタイルシートでline-height:100%;をpreタグに指定して,何とかごまかしている.
 さらに調査をしていくうちに,こんなものを見つけた.

ウィンドウの端まで行くような英単語は改行されませんが、印刷する際に問題が生じます。そこで単語途中でも改行することが出来ます。
 単語途中での改行の設定をするには、「word-wrap」プロパティにより行います。

おぉ,これを使えばうまくいきそう.ただし,IEにしか対応していないと書かれているところがちょっと不安.まあいいか.最終的に,以下のようにスタイルシートを設定した.しばらくこれでいってみるつもりである.

pre {
FONT-WEIGHT: normal;
FONT-SIZE: 80%;
COLOR: #000000;
margin: 5px;
background: #DDDDDD;
PADDING: 5px;
border-style: solid;
border-color: #BBBBBB;
border-width: 1px;
line-height: 100%;
word-wrap: break-word;
}

リーセントコメントと日付表示

火曜日, 3月 2nd, 2004

 ちなさいとを広く知ってもらうため,というよりか,来てくださったみなさんとのつながりをつくるためには,コメントの機能は結構重要だと思う.しかしMTにはコメントをつけてもそれを知るすべがあまりなかったように思う.
 そのため,トップページに,最近つけられたコメントを表示する機能はないか,と探していたところ,リーセントコメント+コメント日付(BLOG質問箱)にその方法が載っていたので早速試してみた.

コメントが付いた最新のエントリー5本を表示し、それぞれのエントリーごとに最新のコメント4本までをコメント日付を付けて表示するようにしました。

とのこと.ソースコードが載っていたので,それをMain Indexテンプレートにコピーして,ちょっと修正した.ちなさいとで使用したものは以下の通り.

<div class="sidetitle">
Recent Comments
</div>
<div class="side">
<MTEntries recently_commented_on="5"sort_order="ascend">
・<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br />
<MTComments lastn="4">
└ <$MTCommentAuthor$> <a href="<$MTEntryPermalink$>#<$MTCommentID$>">at <$MTCommentDate format="%Y.%m.%d"$></a><br />
</MTComments>
</MTEntries>
</div>